利用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.添加断 ...
随机推荐
- c++思维导图
转自:https://blog.csdn.net/qq_37941471/article/details/84026920
- JS:数组中push对象,覆盖问题
发现将对象push进数组,后面的值会覆盖前面的值,最后输出的都是最后一次的值.其实这一切都是引用数据类型惹的祸.如果你也有类似问题,可以继续看下去哦.下面代码模拟:将json对象的每个键值对,单独搞成 ...
- Pullword 中文分词
安装 npm install pullword 使用 var defaultOptions = { url: 'http://api.pullword.com/post.php', /* api ...
- SQL语句总结---数据库操作
https://blog.csdn.net/hallomrzhang/article/details/85010014 数据库操作 查看所有数据库 show databases; 1 查看当前使用的数 ...
- EMS批量为用户分配邮箱
组织单位"Office"下有10个域用户,可以通过PowerShell命令一次为该组织单位中的没有分配邮箱的域用户分配邮箱. 以Exchange管理员身份打开EMS控制台.在Pow ...
- 1.c语言非递归乘法表(帧栈理解)
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <stdbool.h> 4 5 typedef stru ...
- Linux内核链表之共享双链表
说明 共享双链表意义在于,可以用一套函数维护不同数据类型的双链表 准备 定义双链表 #include <iostream> #include <string> using na ...
- CuteBot智能小车
原因 近期,别人送了我一个CuteBot智能小车,拆开一看做工挺精致的,但是这东西是积木图形编程,显然不适合我这个年龄,所以打算给家里的小孩玩. 那么,你可能会问了,为什么要写这篇文章呢?答案当然是用 ...
- Java学习day10
在类内定义的类就称为内部类.内部类可以访问外部类的所有成员,外部类要访问内部类,必须先建立对象 内部类分为成员内部类和局部内部类 外界创建public修饰的成员内部类对象的格式:外部类名.内部类名 对 ...
- acwing刷题-放养又没有完全放养
题目 一个鲜为人知的事实是,奶牛拥有自己的文字:「牛文」. 牛文由 26 个字母 a 到 z 组成,但是当奶牛说牛文时,可能与我们所熟悉的 abcdefghijklmnopqrstuvwxyz 不同, ...