从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第三方库


热门话题
在Windows 7 64位上运行Jive Dev Enrivoment的java   Java/C/C++/C#/PHP到Pascal的转换器?   java将字符串列表转换为单个对象   java SimpleAdapter,spinner中的文本和图像   java当客户端返回时,有状态会话bean如何恢复状态?   JavaWebLogic。jdbc。包装纸。无法将数组\u oracle\u sql\u数组强制转换为oracle。sql。大堆   java MySQL/Hibernate检索列映射为LocalTime的错误数据   java如何检测页面中是否包含句子(模糊)?   java如何在springboot框架中验证wsdl   JTextPane中的java双列表项插入   java根据窗口大小调整JScrollPane的大小   sql如何在java中映射VARCHAR2(5)的类型表?   用于生成Cron表达式的java类型转换   如何将基于spring注释的Hibernate代码迁移到JavaEE   java对象作为参数?   JavaSeleniumWebDriver:在许多输入中设置值的更快方法