利用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.添加断 ...
随机推荐
- ModelSerializer序列化器实战
目录 ModelSerializer序列化器实战 单表操作 序列化器类 视图类 路由 模型 多表操作 models.py serializer.py views.py urls.py ModelSer ...
- 联想电脑“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态” 解决方法
当在虚拟机上安装Ubuntu系统时,出现 "此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态" 弹窗此时需要进入BIOS修改相关的设置,此处以联想ideap ...
- matlab二维插值--interp2与griddata
二者均是常用的二维插值方法,两者的区别是, interp2的插值数据必须是矩形域(X,Y必须分别是单调向量),即已知数据点(x,y)组成规则的矩阵,或称之为栅格,可使用meshgid生成. gridd ...
- HTML5摇一摇(上)—如何判断设备摇动
刚刚过去的一年里基于微信的H5营销可谓是十分火爆,通过转发朋友圈带来的病毒式传播效果相信大家都不太陌生吧,刚好最近农历新年将至,我就拿一个"摇签"的小例子来谈一谈HTML5中如何调 ...
- 前端面试题整理——普通函数和new函数
下列代码的输出值: function A() { console.log(1) } function fn() { A = function () { console.log(2) } return ...
- MySQL优化篇系列文章(二)——MyISAM表锁与InnoDB锁问题
我可以和面试官多聊几句吗?只是想... MySQL优化篇系列文章(基于MySQL8.0测试验证),上部分:优化SQL语句.数据库对象,MyISAM表锁和InnoDB锁问题. 面试官:咦,小伙子,又来啦 ...
- java中StringTokenizer的用法
4.StringTokenizer StringTokenizer可以解析分隔符不是空格的情况.例子:import java.util.StringTokenizer;public class Tes ...
- 通过CSS给图像设置圆角边框
<html> <style> .smaller-image{ border-radius: 50%; width: 100px; } </style> <bo ...
- CommonsCollection4反序列化链学习
CommonsCollection4 1.前置知识 由于cc4没有新的知识点,主要是用cc2,然后稍微cc3结合了,所以我们可以看ysoserial源码,自己尝试构造一下,把cc2通过获取Invoke ...
- 攻防世界——gif
分析 只有黑白两种颜色,大小均一样.考虑代表着二进制. python脚本 ''' 同样颜色的图片的二进制数据都相同 编写思路:取二进制 -> 转ascii码 ''' white = open(r ...