从arcgis web服务下载层的工具geojson

arcgis-rest-quer的Python项目详细描述


[![PYPI版本](https://badge.fury.io/py/arcgis rest query.svg)](http://badge.fury.io/py/arcgis-rest-query)![特拉维斯CI状态](https://travis-ci.org/schwanksta/python-arcgis-rest-query.svg?branch=master)
arcgis rest query

一个简单的库,可以从arcgis web服务中的地图下载一个图层并将其转换为有用的内容:geojson。

国家/地区/功能服务器"
>;>service=arcgis.arcgis(source)
>;>layer\u id=0
>;>shapes=service.get(layer\u id,"state\u abbr="in")
````

这假设您已经检查过arcgis服务端点,以了解要查找的内容。
arcgis会发布json文件,枚举可以查找的端点。查询,这样就可以进一步实现自动发现
安装


bash
pip install arcgis rest query
`````
``bash
``bash
n-arcgis-rest-query
。bin/activate
git clone git@github.com:schwanksta/python arcgis rest query repo
cd repo
pip install-r requirements.txt
`````

apserver 0--where="state=15">;夏威夷国会区。geojson
````
这将下载夏威夷第114个国会区形状(fips id为15)。在这个例子中,我们过滤掉了,因为有一堆国会选区,下载所有选区需要一段时间。

islactive/mapserver 0——仅对
444
```
实用程序进行计数,成批下载1000次,因此虽然只需点击一次api,但生成的文件会相当大。

例如,如果您想将田纳西州第114届和第113届国会的选区合并到同一个文件中:

`` bash
$arcgis get http://tigerweb.geo.census.gov/arcgis/rest/services/tigerweb/legalistic/mapserver 0 12--where="state=47"--layer\name\field="source\u layer">;tn\u districts\u 2013\u 2014.geojson
```

api
/>###向arcgis服务器验证请求
如果通过令牌授权保护arcgis端点,请向构造函数传递有效的用户名/密码
以通过令牌身份验证请求:

``python
>;>import os
>;>from arcgis import arcgis
>;>username=os.getenv('arcgis_用户名,无)
>;>password=os.getenv('arcgis_password',无)
>;>service=arcgis("http://hostname/to/token/auth/featureserver",
username=username,
password=password)
````
然后您可以继续按下面的详细说明进行请求。

arcgis.get(layer[,w这里="1=1",fields=[],count_only=false,srid='4326'])


从web服务获取单层。

`` python
>;>geojson=service.get(28)
>>gt;only_florida=service.get(28,where="name='florida'")
>;>e返回要查询的图层中要素数的简单计数。这对于确定您要进行的查询的大小,或者您的"where"过滤器是否正确非常有用。

``python
>;>;states\u count=service.get(28,count\u only=true)
56
>;southerse\u count=service.get(28,where="name in('florida',georgia',alabama',"south carolina")",count_only=true)
4
````

arcgis.getmultiple(layers[,where="1=1",fields=[],srid='4326',layer_name_field=none])

concatenate multiple layers into one geojson。如果您有一个包含图层的地图,例如,每年都有一个名为foo庠2014、foo庠2013、foo庠2012等的图层,则此功能非常有用。设置"layer庠name庠field"将向每个返回的对象添加一个字段,指定它来自哪个图层。

``python
>;>;service=arcg is("http://tigerweb.geo.census.gov/arcgIS/rest/services/census2010/transportation/mapserver")
>>gt;获取以mlk jr.命名的任何主要或次要道路,并将它们组合起来。
>>gt;mlk_u roads=service.getmultiple([0,1],where="name like"%martin luther king%",layer_name_field="src_layer")
>;inspect第一个返回的特性中的src_layer字段。
>;>mlk_roads.get('features')[0].get('properties').get('src_layer')
u'primary roads'
````

arcgis.get_json(layer[,where="1=1",fields=[],count_Only=false,srid='4326'])

层的Web服务。这不是geojson。

`` python
>;>>raw嫒u json=service.get嫒json(0)
````

arcgis.get嫒u descriptor嫒u for嫒layer(layer)

返回层的json描述符。这将告诉您层中有哪些字段,它包含什么类型的几何体等。此函数的响应是缓存的,因此对同一层的重复调用将不会影响Arcgis Web服务。

``python
>;>;descriptor=service.get懔descriptor(0)
```

arcgis.enumerate_layer_fields(layer)

返回层中字段名的列表。用于确定在`.get()`调用中要请求的内容。

``python
>;>;field_list=service.enumerate_layer_fields(0)
```

在一张可视的地图上。

``bash
npm install-g geojsonio cli
````

>然后,我们可以重新查询夏威夷的国会选区:

``bash
$arcgis get http://tigerweb.geo.census.gov/arcgis/rest/services/tigerweb/legislatic/mapserver 0--where="state=15"|geojsonio
```

,并获得一些出色的映射输出:
![夏威夷](https://cloud.githubusercontent.com/assets/20067/5095404/85de3610-6f37-11e4-8658-d769a89590a9.png)


;或者,如果您只想获取佛罗里达州的人口普查状态形状并将其显示在geojson.io上,可以执行以下操作:

``bash
arcgis get--where="name='florida'"http://tigerweb.geo.census.gov/arcgis/rest/services/basemaps/communitytiger/mapserver 28 geojsonio
````

![佛罗里达州](https://cloud.githubusercontent.com/assets/20067/5001808/ee233ff6-69c7-11e4-9c3e-245aba847bb5.png)


目前,cli上没有状态指示器,因此请首先运行"--count\u only",以查看您可能要等待多长时间。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java线程;创建一个单独的线程来定期执行某些操作   用java将SonarQube升级到5.2失败。util。同时发生的CancellationException:空   在线程对象上调用start时,线程上设置的java优先级无效   java如何在不使用reduce()或last()折叠的情况下获取通量的最后一项   java如何从ArrayList中获取元素?   应用了逻辑的JavaTwitterAPI   在这种情况下,怎样才能不让自己重复?安卓的java   JavaAndroid:线程可运行和处理程序。在run方法中发布问题(Handler.postXX在预期情况下不会按时运行)   java log4j grok与管道故障   使用循环返回命令选项时出现问题/仅运行一个命令(JAVA)   java双重比较问题   使用vertx的JWT公钥/私钥身份验证中的java握手   用Java将WMA和AAC音频转换为MP3   解析字符串java get index   与具有不同数据类型的密钥同名的java JSON