该网站,geoJSON和python的新功能。

我的目标是读取带有geoJSON数据的文件,并使用它生成形状以供使用python脚本的应用程序使用。 Python能够读取它并进行一些操作。我找到了一些示例,但是它们没有正确地遍历geoJSON层次结构。

我正在寻找有关如何从geoJSON数据文件中提取几何数据的库或说明。换句话说,我想说“获取要素列表...”-然后,对于每个要素,我想获取几何图形,读取类型并获取其坐标该特定几何项目。对功能列表中的每个项目重复上述步骤。

有什么建议吗?

#1 楼

使用json库加载GeoJSON文件时,会得到一个dict,其中包含一个条目features,其中包含要素列表。每个功能又由一个dict组成,其中除其他外,还包含一个条目geometrygeometry是包含条目dicttypecoordinates。因此您可以像这样遍历您的GeoJSON文件:

import json

with open('test.json') as f:
    data = json.load(f)

for feature in data['features']:
    print feature['geometry']['type']
    print feature['geometry']['coordinates']


评论


很好的建议。这比我尝试做的要容易得多。我确实需要将负载更改为负载,并且numpy不是当前安装的python中的库。感谢您的快速回复。我现在可以继续前进。

– Mike Weber
13年10月8日在20:17

在技​​术上不需要Numpy。 feature ['geometry'] ['coordinates'](上面)只是一个Python列表。

–傻瓜
13年10月8日在21:13

@sgillies:好点,肖恩。为了避免混淆,我删除了numpy的用法。

–杰克
13-10-8在21:18

#2 楼

我的lib PyGeoj特别是作为geojson文件的读写器,它具有一个简单的API,可将文件内容转换为具有属性的对象,因此您不必直接处理字典。它还具有一些方便的方法,例如为整个功能集合或仅为每个功能计算并添加bbox。

因此,例如,以下代码将完成发布者要求的操作:

import pygeoj
testfile = pygeoj.load("test.geojson")
for feature in testfile:
    print feature.geometry.type
    print feature.geometry.coordinates


该库还可以从/导入和导出对象通过_geo_interface_协议连接到其他库,以及项目Github页面上的文档中可以看到的其他内容。

评论


您的图书馆很棒,我今天才开始使用它

– Ziggy
16年4月27日在18:58

如果我想开始使用python解析geojson进行网络映射,那么使用的最佳软件是什么?

– Ziggy
16年4月27日在18:59

对于使用GeoJson的Web应用程序,请使用Leaflet javascript库。这是一个很好的示例线程:gis.stackexchange.com/questions/68489/…

–评论
17 Mar 28 '17在15:30

#3 楼

有许多地理空间Python模块可将GeoJSON转换为shapefile(以及相反):

Fiona
PySAL
Pyshp 1.7及更高版本
GDAL / OGR

带有新API的PyQGIS
python-geojson

请参阅Python Geo_interface应用程序