Looking at the SpatialDataFrame documentation:
static
from_layer
(layer, **kwargs)Returns a SpatialDataFrame from a FeatureLayer or Table object. Inputs:
param layer: FeatureLayer or Table param gis: GIS object Returns a SpatialDataFrame
However, I see something different when using a Table object:
>>> tbl_url = # URL to AGOL table
>>>
>>> tbl = arcgis.features.Table(tbl_url)
>>> type(tbl)
<class 'arcgis.features.layer.Table'>
>>> SDF = SpatialDataFrame.from_layer(tbl)
>>> type(SDF)
<class 'pandas.core.frame.DataFrame'>
>>>
So, passing a table returns a DataFrame, even though the documentation says a SpatialDataFrame is returned. Even more interesting are the methods and properties of this "DataFrame":
>>> SDF_attrs = ['copy', 'erase', 'from_featureclass', 'from_hdf', 'from_layer',
'geoextent', 'geometry', 'merge_datasets', 'plot', 'reproject',
'select_by_location', 'set_geometry', 'to_featureclass',
'to_featurelayer', 'to_featureset', 'to_hdf']
>>>
>>> for attr in SDF_attrs:
... print(attr, hasattr(SDF, attr))
...
copy True
erase False
from_featureclass False
from_hdf False
from_layer False
geoextent False
geometry False
merge_datasets False
plot True
reproject False
select_by_location False
set_geometry True
to_featureclass False
to_featurelayer False
to_featureset False
to_hdf True
>>>
I can understand some of these because there is both a pandas DataFrame version and ArcGIS SpatialDataFrame version of the property/method, but why is set_geometry showing up?
Joshua,
Can you email me the URL you are using? achapkowski@esri.com
Additionally, can you tell me what version you are using? I cannot reproduce your issue.
Andrew, I just sent an e-mail. I am currently using ArcGIS API for Python 1.4, and a quick check showed the same results. I temporarily made an AGOL table publicly viewable and sent you the URL.