Reputation: 2859
I have read shapefile into a GeoDataFrame
and did some modification to it:
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)
However, I would also like to apply some functionality of osgeo.ogr
module on it:
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)
QUESTION: Is there any way to use or convert an already in-memory shapefile, currently in a form of a GeoDataFrame, as an osgeo.ogr.DataSource
directly?
The way I do it so far is to save GeoDataFrame to file with to_file()
and then osgeo.ogr.Open()
it again, but this seems kind of redundant to me.
Upvotes: 6
Views: 2512
Reputation: 196
Yes, it is possible. You can pass the GeoDataFrame into ogr.Open in GeoJson format which is supported OGR vector format. Hence, you don't need to save temporary file into a disk:
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 ...
Hopefully this helps!
Upvotes: 8
Reputation: 11860
No. Only formats supported by OGR can be opened with ogr.Open()
.
Upvotes: 3