ArcGIS API for Python ... version 1.2.0
Another cleverly named product to provide more clarity to the other named kindred... ArcGIS for Desktop, ArcGIS Pro, Arc... etcetera. The link to the help is here. The ability to work with Jupyter notebooks, NumPy, SciPy and Arcpy is touted and welcomed (...and there is something about web mapping and stuff as well).
Where stuff is
Locating ArcGIS in your installation path, depends on how you installed it... for a single user (aka no sharesies) or for anyone. This describes the single user situation.
To begin, import the module and check its __path__ and __file__ property. My installation path is in an ArcPro folder that I created... yours will differ, but beyond the base folder, everything should be the same.
Basic import______________________________________________________________________
In [1]: import arcgis
In [2]: arcgis.__path__
Out[2]: ['C:\\ArcPro\\bin\\Python\\envs\\arcgispro-py3\\lib\\site-packages\\arcgis']
In [3]: arcgis.__file__
Out[3]: 'C:\\ArcPro\\bin\\Python\\envs\\arcgispro-py3\\lib\\site-packages\\arcgis\\__init__.py'
_________________________________________________________________________________
The __init__.py file is read during the import and a whole load of imports are done to cover access to pretty well all available modules contained in the ArcGIS path.
If you only want to work with the geometry or Pandas related functionality, you can import the SpatialDataFrame class directly.
SpatialDataFrame___________________________________________________________________
In [1]: from arcgis import SpatialDataFrame as sdf
# ---- or ----
In [1]: from arcgis.features._data.geodataset import SpatialDataFrame as sdf
In [2]: sdf.__module__ # to confirm the path
Out[2]: 'arcgis.features._data.geodataset.geodataframe'
_________________________________________________________________________________
The SpatialDataFrame class is pretty well all that is in geodataframe.py script.
Another useful call within that class is one to from_featureclass and to_featureclass which can be obtained by a variety of other imports or by a direct call to the io module's fileops.py
Featureclass access________________________________________________________________
In [3]: from arcgis.features._data.geodataset.io import from_featureclass, to_featureclass
# ---- or ----
In [4] from arcgis.features._data.geodataset import io
_________________________________________________________________________________
If you prefer the module.function method of calling, the option in ln [4] can be used to convert a featureclass to a SpatialDataFrame.
The Reveal________________________________________________________________________
In [5] fc0 = r'drive:\your_space_free_path\your_geodatabase.gdb\polygon'
In [6] a = io.from_featureclass(fc0)
In [7] print("\nSpatialDataFrame 'a' \n{}".format(a)) # ---- the sdf contents ----
SpatialDataFrame 'a'
OBJECTID Id Text_fld SHAPE
0 1 1 None {'rings': [[[300020, 5000000], [300010, 500000...
1 2 2 C {'rings': [[[300010, 5000020], [300010, 500001...
2 3 3 A {'rings': [[[300010, 5000010], [300010, 500002...
ln [8] type(a)
Out[8]: <class 'arcgis.features._data.geodataset.geodataframe.spatialdataframe'>
_________________________________________________________________________________
Behind the Scenes
Great so far... BUT when you delve deeper into what is going on under the hood, you will find out that the from_featureclass method...
Final Comments
So... in conclusion, an arcpy.da searchcursor is used to get all the necessary geometry and attribute data then ultimately to a SpatialDataFrame ... which is like a Pandas dataframe ... but it is geometry enabled.
Sort of like geopandas... (geopandas on GitHub) but relying on arc* functionality and code for the most part.
More to Come
There will be more posts as I have time... the next post... Geometry.... part II
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.