Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.5.0
Description
The following exception is raised when adding a dataframe with a geometry column not named "geometry" to the map. If the geometry column is renamed to "geometry" before adding to the map, then everything goes well.
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) File ~/Library/Python/3.9/lib/python/site-packages/geopandas/geodataframe.py:436, in GeoDataFrame.crs(self) 435 try: --> 436 return self.geometry.crs 437 except AttributeError: File ~/Library/Python/3.9/lib/python/site-packages/pandas/core/generic.py:5487, in NDFrame.__getattr__(self, name) 5486 return self[name] -> 5487 return object.__getattribute__(self, name) File ~/Library/Python/3.9/lib/python/site-packages/geopandas/geodataframe.py:235, in GeoDataFrame._get_geometry(self) 229 msg += ( 230 "\nThere are no existing columns with geometry data type. You can " 231 "add a geometry column as the active geometry column with " 232 "df.set_geometry. " 233 ) --> 235 raise AttributeError(msg) 236 return self[self._geometry_column_name] AttributeError: You are calling a geospatial method on the GeoDataFrame, but the active geometry column ('seg') is not present. There are columns with geometry data type (['geometry']), and you can either set one as the active geometry with df.set_geometry("name") or access the column as a GeoSeries (df["name"]) and call the method directly on it. During handling of the above exception, another exception occurred: AttributeError Traceback (most recent call last) Cell In[16], line 3 1 mapAll = SedonaKepler.create_map() ----> 3 SedonaKepler.add_df(mapAll, df, name="Segs") 5 mapAll File ~/Library/Python/3.9/lib/python/site-packages/sedona/maps/SedonaKepler.py:52, in SedonaKepler.add_df(cls, kepler_map, df, name) 44 """ 45 Adds a SedonaDataFrame to a given map object. 46 :param kepler_map: Map object to add SedonaDataFrame to (...) 49 :return: Does not return anything, adds df directly to the given map object 50 """ 51 geo_df = SedonaMapUtils.__convert_to_gdf__(df) ---> 52 kepler_map.add_data(geo_df, name=name) File ~/Library/Python/3.9/lib/python/site-packages/keplergl/keplergl.py:140, in KeplerGl.add_data(self, data, name) 129 def add_data(self, data, name="unnamed"): 130 ''' Send data to Voyager 131 132 Inputs: (...) 137 keplergl.add_data(data_string, name="data_1") 138 ''' --> 140 normalized = _normalize_data(data) 141 copy = self.data.copy() 142 copy.update({name: normalized}) File ~/Library/Python/3.9/lib/python/site-packages/keplergl/keplergl.py:50, in _normalize_data(data) 48 def _normalize_data(data): 49 if isinstance(data, pd.DataFrame): ---> 50 return _gdf_to_dict(data) if isinstance(data, geopandas.GeoDataFrame) else _df_to_dict(data) 51 return data File ~/Library/Python/3.9/lib/python/site-packages/keplergl/keplergl.py:34, in _gdf_to_dict(gdf) 25 ''' Create an input dict for kepler.gl using a GeoDataFrame object 26 27 Inputs: (...) 31 - dictionary: a dictionary variable that can be used in Kepler.gl 32 ''' 33 # reproject to 4326 if needed ---> 34 if gdf.crs and not gdf.crs == 4326: 35 gdf = gdf.to_crs(4326) 37 # get name of the geometry column 38 # will cause error if data frame has no geometry column File ~/Library/Python/3.9/lib/python/site-packages/pandas/core/generic.py:5487, in NDFrame.__getattr__(self, name) 5480 if ( 5481 name not in self._internal_names_set 5482 and name not in self._metadata 5483 and name not in self._accessors 5484 and self._info_axis._can_hold_identifiers_and_holds_name(name) 5485 ): 5486 return self[name] -> 5487 return object.__getattribute__(self, name) File ~/Library/Python/3.9/lib/python/site-packages/geopandas/geodataframe.py:438, in GeoDataFrame.crs(self) 436 return self.geometry.crs 437 except AttributeError: --> 438 raise AttributeError( 439 "The CRS attribute of a GeoDataFrame without an active " 440 "geometry column is not defined. Use GeoDataFrame.set_geometry " 441 "to set the active geometry column." 442 ) AttributeError: The CRS attribute of a GeoDataFrame without an active geometry column is not defined. Use GeoDataFrame.set_geometry to set the active geometry column.
Attachments
Issue Links
- is related to
-
SEDONA-471 SedonaKepler cannot work with Uber H3 hex since 1.5.1
- Resolved
- links to