我已将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()
保存到文件中,但这对我来说似乎是多余的。
答案 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 ...
希望这会有所帮助!