@@ -601,12 +601,37 @@ def to_geodataframe(self, features, featuretype="Polygon"):
601601 -------
602602 GeoDataFrame
603603 """
604- from ..utils .geospatial_utils import GeoSpatialCollection
604+ from ..utils .utl_import import import_optional_dependency
605+
606+ gpd = import_optional_dependency ("geopandas" )
607+ shp_geom = import_optional_dependency ("shapely.geometry" )
608+
609+ if featuretype .lower () == "polygon" :
610+ cache_index = "grid_polygons"
611+ if (
612+ cache_index not in self ._cache_dict
613+ or self ._cache_dict [cache_index ].out_of_date
614+ ):
615+ geoms = [shp_geom .Polygon (i [0 ]) for i in features ]
616+ self ._cache_dict [cache_index ] = CachedData (geoms )
617+ else :
618+ geoms = self ._cache_dict [cache_index ].data_nocopy
619+ gdf = gpd .GeoDataFrame (data = None , geometry = geoms )
620+
621+ elif featuretype .lower () == "linestring" :
622+ cache_index = "grid_linestrings"
623+ if (
624+ cache_index not in self ._cache_dict
625+ or self ._cache_dict [cache_index ].out_of_date
626+ ):
627+ geoms = [shp_geom .LineString (i ) for i in features ]
628+ self ._cache_dict [cache_index ] = CachedData (geoms )
629+ else :
630+ geoms = self ._cache_dict [cache_index ].data_nocopy
631+ gdf = gpd .GeoDataFrame (data = None , geometry = geoms )
632+ else :
633+ raise NotImplementedError (f"{ featuretype } is not currently supported" )
605634
606- gc = GeoSpatialCollection (
607- features , shapetype = [featuretype for _ in range (len (features ))]
608- )
609- gdf = gc .geodataframe
610635 gdf ["node" ] = gdf .index + 1
611636 if self .crs is not None :
612637 gdf = gdf .set_crs (crs = self .crs )
0 commit comments