利用ArcEngine开发地图发布服务,将mxd文档一键发布成wmts,并根据需要对地图进行空间查询,返回客户端geojson
一直想开发一个软件取代ArcGIS Server,该软件使用ArcEngine开发,以Windows Service形式发布,部署在服务端上,解决wmts地图服务发布和空间查询的问题,经过不断的研究、知识积累和测试,已经实现,现将思路整理如下:
首先,Arcgis server优点和缺点就不说了,我要实现的是一个小型的gis server,这个server将使用ae开发,所以只需在服务器上安装AE Runtime即可。软件的功能主要包括以下两点:
1、将mxd文档直接发布成wmts服务
2、前端用户使用属性查询或空间查询,服务端返回geojson
为完整介绍开发思路,我将一一介绍这两个功能。
一、发布MXD文档为WMTS
这个功能主要包括三个要点:
1、利用ArcEngine和WCF发布服务,前期经过测试,已经实现,这个服务可以托管于IIS,也可以托管于windows services。
2、了解WMTS规范,利用WCF开发相应服务
由于前几年一直在开发在线地图的浏览、下载、格式转换、地图服务发布软件(这个软件后期再介绍,目前可以除支持在线地图的下载外,还支持更多格式的地图发布成wmts,例如基于sqlite的自有地图切片数据库发布,发布arcgis 切片地图,利用gdal发布tif、jpg,png等影像、发布tpk等),所以对WMTS的规范已经很熟悉,所以利用WCF开发相应接口也未遇到难题
3、根据WMTS规范中的gettile方法,利用ae和动态缓存机制生成切片,实现wmts地图服务发布。
该功能的要点就是根据gettile中xyz的值,计算出切片地图的范围,利用AE裁切出地图。
二、前端用户使用属性查询和空间查询得到geojson
由于第一个功能中,已经使用ArcEngine开发了相应的地图服务,可以支持类似于桌面端的GIS操作,所以真正要做的工作就是将查询结果转换成geojson,前端根据geojson动态绘制查询结果。
这个小型的gis server目前部署很方便,服务器只需安装ArcEngine Runtime,将mxd文档和对应的数据复制过去即可,后期准备开发一个网站来支持用户上传MXD,直接发布地图服务。目前提供一个我测试用的地籍图发布的WMTS。
http://www.simplemap.com.cn:6466/SimpleGIS/ogc/services/rongxian/WMTS,总体来说,浏览速度还可以,为支持更快的浏览速度,也可以使用我写的切片地图下载软件将它下载成离线地图数据库,再发布WMTS,这样速度会更快一点。
利用ArcEngine开发地图发布服务,将mxd文档一键发布成wmts,并根据需要对地图进行空间查询,返回客户端geojson的更多相关文章
- Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本
Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本 文章编号 : 38783 软件: ArcGIS - ArcEditor 10 ArcGIS - ArcInfo 10 A ...
- 打开地图文件和shape文件代码加载Mxd文档
代码加载Mxd文档 用代码添加Mxd文档,用到AxMapControl.LoadMxFile(sFilePath),我们只要将Mxd文档的路径传给这个方法即可 /// <summary> ...
- (二)发布第一个WebService服务与DSWL文档解析
1. 编写接口 package service; import javax.jws.WebService; /** * 第一个webservice服务, * @WebService注解表示这是一个we ...
- 书剑恩仇录online全套源代码(服务端+client+文档)
书剑恩仇录online全套源代码(服务端+client+文档).vc++开发,解压后将近10G大小,眼下网上最完整版本号,包括client源代码.服务端源代码.工具源代码.sdk.文档-- <书 ...
- 随时发布:REST API文档的代码仓库中的持续集成与协作
本文主要内容:API文档提供了预测客户成功的关键路径:在代码附近的文档上进行协作可以更好地检查代码和文档文件,提高自动化效率,并专门针对文档进行质量测试:提供通用文档框架,标准,自动化和工具,以提高团 ...
- 使用 flow.ci 快速发布你的项目文档
软件研发的协作过程中,文档是必不可少的一环,有需求文档.接口文档.使用文档等等.当开始写文档时,首先会遇到两个问题: team members 之间如何协作? 文档 OK 后如何分发,去哪里看?如何更 ...
- 微服务·API文档
阅文时长 | 3.92分钟 字数统计 | 2754.05字符 主要内容 | 1.什么是API文档 2.API文档的使用 3.声明与参考资料 『微服务·API文档』 编写人 | SCscHero 编写时 ...
- JSP利用freemarker生成基于word模板的word文档
利用freemarker生成基于word模板的word文档 freemarker简介 FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器 ...
- AppleWatch开发教程之调试程序使用帮助文档
AppleWatch开发教程之调试程序使用帮助文档 AppleWatch开发教程之调试程序 调试又被称为排错,是发现和减少程序错误的一个过程.在Xcode中进行调试的需要实现以下几个步骤: 1.添加断 ...
随机推荐
- jdk_8接口的内部内容
目标: 如何创建已定义好的接口类型的对象呢? 步骤: 实现的概述 抽象方法的使用 默认方法的使用 静态方法的使用 接口的常量使用 讲解: 实现的概述 类与接口的关系为实现关系,即类实现接口,该类可以称 ...
- angular组件开发
项目中经常会有一些公共组件,比如header,如果每个页面都写一遍的话显得很冗余,而且不利于维护,这时候我们就会考虑将这些公共部分抽取出来,做成一个单独的组件. 然而angular不是很熟悉啊~怎么啵 ...
- Android地图化实现
今天在Android上实现了地图化,可以通过记录用户位置和体温是否异常来实现地图区域变色,并显示正常人数,与体温是否异常,且可以地图下钻. 效果展示:
- 微信支付之微信H5支付(坑,ajax不支持重定向跳转)
这里讲的是 微信h5支付, 是微信以外的手机浏览器调用微信h5支付 h5支付: H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起 ...
- vue简单的父子组件之间传值
todo-list为例子: 代码: 父传子--------------属性 v-bind 子传父--------------$emit <!DOCTYPE html> <html ...
- Python入门-异常处理
异常处理 #try----else---- 会一起执行 #finally无论如何,最后都会执行 def main(): try: res = 10/2 print("开始执行计算:" ...
- 一起来作画吧「GitHub 热点速览 v.22.14」
作者:HelloGitHub-小鱼干 又一个现象级.火爆社交媒体的项目--多人作画,把你想要放置的元素添加到某一个画布上,Reddit Place 便有了你的痕迹.在本周特推中 reddit-plac ...
- Java-GUI编程之事件处理
事件处理 前面介绍了如何放置各种组件,从而得到了丰富多彩的图形界面,但这些界面还不能响应用户的任何操作.比如单击前面所有窗口右上角的"X"按钮,但窗口依然不会关闭.因为在 AWT ...
- python---用顺序表实现栈
class Stack(object): """栈, 存放数据的一种容器, 后进先出""" def __init__(self): self ...
- 时间篇之centos6下修复的ntp操作(ntpd和ntpdate两个服务区别)
系统采样,本采样和命令都是在centos6.4的系统中进行 主要比较centos7和centos6之间的差异,因为大部分都开始采用centos7但是有些老系统还采用centos6,这样我们就需要熟悉c ...