使用GeoDataFrame作为osgeo.ogr DataSource

时间:2017-02-13 14:15:07

标签: python ogr geopandas

我已将shapefile读入GeoDataFrame并对其进行了一些修改:

import geopandas as gpd

# Read shapefile into geodataframe
geodf = gpd.read_file("shapefile.shp")

# Do some "pandas-like" modifications to shapefile
geodf = modify_geodf(geodf)

但是,我还想在其上应用osgeo.ogr模块的一些功能:

from osgeo import ogr

# Read shapefile into ogr DataSource
ds=ogr.Open("shapefile.shp")

# Do some "gdal/ogr-like" modifications to shapefile
ds = modify_ds(ds)

问题:有没有办法直接使用或转换已经存储在内的shapefile(目前采用GeoDataFrame形式)作为osgeo.ogr.DataSource

到目前为止,我这样做的方法是将GeoDataFrame保存到to_file()的文件,然后再将osgeo.ogr.Open()保存到文件中,但这对我来说似乎是多余的。

2 个答案:

答案 0 :(得分:3)

没有。只能使用ogr.Open()打开formats supported by OGR

答案 1 :(得分:2)

是的,有可能。您可以将GeoDataFrame传递为支持的OGR矢量格式的GeoJson格式的ogr.Open。因此,您无需将临时文件保存到磁盘:

import geopandas as gpd
from osgeo import ogr

# Read file into GeoDataFrame
data = gpd.read_file("my_shapefile.shp")

# Pass the GeoDataFrame into ogr as GeoJson
shp = ogr.Open(data.to_json())

# Do your stuff with ogr ...

希望这会有所帮助!