将GeoJSON转换为Python对象?[关闭]


24

该网站,geoJSON和python都是新手。

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

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

有什么建议么?

Answers:


37

使用该json库加载GeoJSON文件时,您会获得一个dict包含条目的features,该条目包含功能列表。每个功能又由一个组成dict,其中除其他外还包含一个entry geometry。的geometry是一个dict含有所述条目typecoordinates。因此,您可以像这样遍历您的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 2013年

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

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

7

我的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

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

1
对于使用GeoJson的Web应用程序,请使用Leaflet javascript库。这里是一个很好的例子螺纹:gis.stackexchange.com/questions/68489/...
征求意见

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.