使用Python将GeoJSON转换为shapefile

6

我正在尝试将一个geojson文件转换成shapefile格式,我尝试使用以下方法(因为我很新手所以可能是错误的)。

import urllib, geojson, gdal
url= ' http://ig3is.grid.unep.ch/istsos/wa/istsos/services/ghg/procedures/operations/geojson?epsg=4326'
response = urllib.urlopen(url)
data = geojson.loads(response.read())

file = open ('data.geojson', 'w')
pickle.dump(data,file)
file.close()
ogr2ogr -f "ESRI Shapefile" destination_data.shp "data.geojson"

我正在从一个URL获取数据,将它放入一个文件中,但当我尝试将它转换成shapefile时出现了以下错误:

 File "<stdin>", line 1
    ogr2ogr -f "ESRI Shapefile" destination_data.shp "data.geojson"
                              ^
SyntaxError: invalid syntax

由于我很新,所以我尝试了在网上找到的解决方案。有没有办法让这个工作起来?

1个回答

8

ogr2ogr看起来是一个命令行程序 - 如果要使用它,您可能需要查看类似subprocess.Popen()的东西:

import urllib, geojson, gdal, subprocess
url= ' http://ig3is.grid.unep.ch/istsos/wa/istsos/services/ghg/procedures/operations/geojson?epsg=4326'
response = urllib.urlopen(url)
data = geojson.loads(response.read())

with open('data.geojson', 'w') as f:
    geojson.dump(data, f)

args = ['ogr2ogr', '-f', 'ESRI Shapefile', 'destination_data.shp', 'data.geojson']
subprocess.Popen(args)

编辑:针对评论的回复 - 是的,在这种情况下,pickle 不是写入文件的适当方式。


当我这样做时,我得到了另一个错误
错误4:无法读取GeoJSON数据 失败: 无法使用以下驱动程序打开数据源“data.geojson”。 -> ESRI Shapefile 说实话,我对获取geojson的方式并不确定。
文件=打开('data.geojson','w') pickle.dump(data,文件) file.close()
- Gus
@Gus 你说得对 - 我已经编辑了我的回答。这似乎将geojson数据写入文件,尽管我不幸无法测试ogr2ogr部分。 - asongtoruin
谢谢,现在它可以工作了。Pickle确实不是正确的方法。 - Gus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接