许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  下载MapServer中的矢量数据并转存为EsriJSON的方法

下载MapServer中的矢量数据并转存为EsriJSON的方法

阅读数 14
点赞 0
article_banner

@TOC如何从MapServer中下载矢量数据

最近看到微信推文上城市里面的社区级行政边界数据
如何获取村界和社区边界矢量数据?(武汉、广州为例)

看起来挺有用的,准备下载,看了下原文介绍的方法,还是觉得自己下载数据比较靠谱。怎么下载?

   只要原始的MapServer服务的query功能是开启的,就可以遍历的方式把所有数据下载下来。

我们为武汉天 地图  为例,下载武汉市的社区边界http://www.digitalwuhan.com/map/
在这里插入图片描述

查找服务地址

页面F12,单击地图上的要素,查看服务请求地址,http://58.49.165.89:8010/ServiceAdapter/MAP/%E7%A4%BE%E5%8C%BA%E7%95%8C%E7%BA%BF/07769b53b5243b7d6aea9df803f471c1/identify?f=json&tolerance=3&returnGeometry=true&imageDisplay=400%2C400%2C96&geometry=%7B%22x%22%3A114.2073901367076%2C%22y%22%3A30.6765856933625%7D&geometryType=esriGeometryPoint&sr=4490&mapExtent=110.804374999652%2C28.9434924314722%2C117.83562500034799%2C32.3465075685278&layers=all%3A0&callback=dojo.io. script .jsonp_dojoIoScript3._jsonpCallback
在这里插入图片描述

   有过服务发布经验的同学应该会发现了,这就是一个 ArcGIS   REST Services

   很多人会去打开http://58.49.165.89:8010/ServiceAdapter/MAP/%E7%A4%BE%E5%8C%BA%E7%95%8C%E7%BA%BF/07769b53b5243b7d6aea9df803f471c1/这个 链接  查看服务地址,可惜404了,但是!你在这个链接后面加个0,再打开看看。这其实表示的当前服务的第一个图层。
http://58.49.165.89:8010/ServiceAdapter/MAP/%E7%A4%BE%E5%8C%BA%E7%95%8C%E7%BA%BF/07769b53b5243b7d6aea9df803f471c1/0

在这里插入图片描述

查看最大的OBJECTID

通过原始服务:MapServer/0/query?f=json&where=1%3D1&returnIdsOnly=true查看有多少个要素。

   那么武汉社区图层的服务地址就是http://58.49.165.89:8010/ServiceAdapter/MAP/%E7%A4%BE%E5%8C%BA%E7%95%8C%E7%BA%BF/07769b53b5243b7d6aea9df803f471c1/0/query?f=json&where=1%3D1&returnIdsOnly=true

   看到最大的Objectid是3375

遍历下载数据,并存为EsriJSON格式

直接贴代码

import requests
import json

maxobjectid=3375
step=100
idlist=list(range(1,maxobjectid+1))
esrijson={}
for i in range(0,len(idlist),step):
    ids=idlist[i:i+step]
    arr = map(str,ids)
    oids=','.join(arr)
    url='http://58.49.165.89:8010/ServiceAdapter/MAP/%E7%A4%BE%E5%8C%BA%E7%95%8C%E7%BA%BF/07769b53b5243b7d6aea9df803f471c1/0/query?f=json&where=&objectIds={}&returnGeometry=true&outFields=*'.format(oids)
    r= requests.get(url)
    dat = json.loads(r.text)
    print(i)
    if len(esrijson)==0:
        esrijson=dat
    else:
        esrijson['features'].extend(dat['features'])
with open('wuhan_2000_esri.json','w',encoding='utf-8') as f:
    f.write(json.dumps(esrijson,indent=4,ensure_ascii=True))   

EsriJSON格式通过Arcmap直接转为shp

好了,所有的mapserver你应该都可以下载了


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空