使用 GeoDataFrame 作为 osgeo.ogr 数据源
Use GeoDataFrame as a osgeo.ogr DataSource
我已将 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
?
到目前为止,我的做法是使用 to_file()
将 GeoDataFrame 保存到文件中,然后再次 osgeo.ogr.Open()
,但这对我来说似乎有些多余。
没有。只有formats supported by OGR可以用ogr.Open()
打开。
是的,这是可能的。您可以将 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 ...
希望这对您有所帮助!
我已将 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
?
到目前为止,我的做法是使用 to_file()
将 GeoDataFrame 保存到文件中,然后再次 osgeo.ogr.Open()
,但这对我来说似乎有些多余。
没有。只有formats supported by OGR可以用ogr.Open()
打开。
是的,这是可能的。您可以将 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 ...
希望这对您有所帮助!