I am just getting started with SeDF and I was wondering on how I can actually visualize objects with multiple geometries.
Following the introduction, a buffer geometry is added to the dataframe. The map widget of my notebook is however, only showing the points. How can I visualize the buffer geometries?
Is there a way to specify what geometry column should be used for the visualization?
# generates map widget visulizing the points, though info widgets places two objects there, when I click on a point
point_df.spatial.plot()
# AttributeError: 'Series' object has no attribute 'spatial'
point_df.Buffer_2.spatial.plot()
# Since plot generates a MapView, the object is not subscriptable
point_df.spatial.plot()['Buffer_2']
# or has no attribute 'Buffer_2'
point_df.spatial.plot().Buffer_2
In theory the set_geometry method of the spatial data frame should work.
https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html
However, my testing shows that it does not work. For example this works
sedf['buffer_2'] = sedf.SHAPE.geom.buffer(distance=200)
sedf.spatial.set_geometry('buffer_2',inplace=True)
This command
sedf.spatial.geometry_type
returns
['polygon']
However this command
ap_sedf[0:100].spatial.area
returns
0.0
Which for a polygon feature should not be a not zero value. The plot function also fails to plot big circles.
My take on this is that the spatially enabled dataframe implementation has some issues and bugs.
Yes, together with a colleague I tried today the set_geometry method and we experienced the same, also the issues with plotting the geometry into the map widget we can confirm.
Thanks for looking into it and the test with geometry_type and testing against the geometries area.
As a followup, I tried creating the data using the Pro toolbox,then importing as a SEDF. That worked. A bit more experimentation showed that it was the number of colums in the dataframe. Subsetting the test dataframe to use the X and Y columns then creating the SEDF worked.
Welcome.
BTW, I agree with your tag line about geopackages.