\n"]},{"cell_type":"markdown","metadata":{},"source":["## Introduction\n"]},{"cell_type":"markdown","metadata":{},"source":["In _part-1_ of this guide series, we started with an introduction to the [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor) (SeDF), the `spatial` and `geom` namespaces, and looked at a quick example of SeDF in action. In this part of the guide series, we will look at how GIS data can be accessed from various data formats using SeDF.\n","\n","GIS users work with different vector-based spatial data formats, like published layers on remote servers (web layers) and local data. The [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor) allows the users to read, write, and manipulate spatial data by bringing the data in-memory.\n","\n","The _SeDF_ integrates with Esri's [**ArcPy** site-package](http://pro.arcgis.com/en/pro-app/arcpy/get-started/what-is-arcpy-.htm), as well as the open source [pyshp](https://github.com/GeospatialPython/pyshp/), [shapely](https://github.com/Toblerity/Shapely) and [fiona](https://github.com/Toblerity/Fiona) packages. This means that the _SeDF_ can use either [shapely](https://pypi.org/project/Shapely/) or [arcpy](https://www.esri.com/en-us/arcgis/products/arcgis-python-libraries/libraries/arcpy) geometry engines to provide you with options for easily working with geospatial data, regardless of your platform. The _SeDF_ transforms the data into the formats you desire, allowing you to use Python functionality to analyze and visualize geographic information.\n","\n","Data can be read and scripted to automate workflows and be visualized on maps in a [Jupyter notebooks](../using-the-jupyter-notebook-environment/). Let's explore the options available for accessing GIS data with the versatile _Spatially enabled DataFrame_.\n"]},{"cell_type":"markdown","metadata":{},"source":["The data used in this guide is available as an [item](https://www.arcgis.com/home/item.html?id=c7140ae3d7ae4fd0817181461019aa75). We will start by importing some libraries and downloading and extracting the data needed for the analysis in this guide.\n"]},{"cell_type":"code","execution_count":1,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:37.257478Z","start_time":"2021-11-22T19:51:12.679381Z"}},"outputs":[],"source":["# Import Libraries\n","import pandas as pd\n","from arcgis.features import GeoAccessor, GeoSeriesAccessor\n","from arcgis.gis import GIS\n","from IPython.display import display\n","import zipfile\n","import os\n","import shutil"]},{"cell_type":"code","execution_count":2,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:38.872324Z","start_time":"2021-11-22T19:51:37.261479Z"}},"outputs":[],"source":["# Create a GIS connection\n","gis = GIS()\n","agol_gis = GIS(\"https://www.arcgis.com\", \"arcgis_python\", \"amazing_arcgis_123\")"]},{"cell_type":"code","execution_count":3,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:38.980325Z","start_time":"2021-11-22T19:51:38.876325Z"}},"outputs":[{"data":{"text/html":["
\n"," sedf_guide_data\n"," \n"," Data for Spatially enabled DataFrame GuidesShapefile by api_data_owner\n"," Last Modified: November 11, 2021\n"," 0 comments, 4 views\n","
\n","
\n"," "],"text/plain":[""]},"execution_count":3,"metadata":{},"output_type":"execute_result"}],"source":["# Get the data item\n","data_item = gis.content.get('c7140ae3d7ae4fd0817181461019aa75')\n","data_item"]},{"cell_type":"markdown","metadata":{},"source":["The cell below downloads and extracts the data from the data item to your machine.\n"]},{"cell_type":"code","execution_count":4,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:45.305934Z","start_time":"2021-11-22T19:51:42.206937Z"}},"outputs":[{"name":"stdout","output_type":"stream","text":["Removed existing data directory\n","Dataset unzipped at: sedf_data\\cities\n"]}],"source":["# Download and extract the data\n","def unzip_data():\n"," \"\"\"\n"," This function:\n"," - creates a directory `sedf_data` to download the data from the item\n"," - downloads the item as `sedf_guide_data.zip` file in the sedf_data directory\n"," - unzips and extracts the data to '.\\sedf_data\\cities'.\n"," \"\"\"\n"," try:\n","\n"," # path to downloaded data folder\n"," data_dir = os.path.join(os.getcwd(), 'sedf_data')\n","\n"," # remove existing cities directory if exists\n"," if os.path.isdir(data_dir):\n"," shutil.rmtree(data_dir)\n"," print(f'Removed existing data directory')\n"," else:\n"," os.makedirs(data_dir)\n","\n"," data_item.download(data_dir) # download the data item\n"," # path to zipped file inside data folder\n"," zipped_file_path = os.path.join(data_dir, 'sedf_guide_data.zip')\n","\n"," # unzip the data\n"," zip_ref = zipfile.ZipFile(zipped_file_path, 'r')\n"," zip_ref.extractall(data_dir)\n"," zip_ref.close()\n","\n"," # path to new cities directory\n"," cities_dir = os.path.join(data_dir, 'cities')\n"," print(f'Dataset unzipped at: {os.path.relpath(cities_dir)}')\n","\n"," except Exception as e:\n"," print(f'Error unzipping file: {e}')\n","\n","\n","# Extract data\n","unzip_data()"]},{"cell_type":"markdown","metadata":{},"source":["## Accessing GIS Data\n"]},{"cell_type":"markdown","metadata":{},"source":["The [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor) reads from many **sources**, including [Feature layers](https://doc.arcgis.com/en/arcgis-online/share-maps/hosted-web-layers.htm), [Feature classes](http://desktop.arcgis.com/en/arcmap/latest/manage-data/feature-classes/a-quick-tour-of-feature-classes.htm), [Shapefiles](http://desktop.arcgis.com/en/arcmap/latest/manage-data/shapefiles/what-is-a-shapefile.htm), Pandas [DataFrames](http://pandas.pydata.org/pandas-docs/stable/dsintro.html#dataframe) and more. Let's dive into the details of accessing GIS data from various sources.\n"]},{"cell_type":"markdown","metadata":{},"source":["### Read in Web Feature Layers\n","\n","[Feature layers](https://doc.arcgis.com/en/arcgis-online/share-maps/hosted-web-layers.htm) hosted on [**ArcGIS Online**](https://www.arcgis.com) or [**ArcGIS Enterprise**](http://enterprise.arcgis.com/en/) can be easily read into a Spatially enabled DataFrame using the [`from_layer()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=from_layer#arcgis.features.GeoAccessor.from_layer) method.\n","\n","The example below shows how the [`get()`](https://developers.arcgis.com/python/api-reference/arcgis.gis.toc.html?highlight=gis%20content%20get#arcgis.gis.ContentManager.get) method can be used to retrieve an ArcGIS Online [`item`](https://developers.arcgis.com/python/api-reference/arcgis.gis.toc.html?highlight=gis%20content%20get#item) and how the [`layers`](https://developers.arcgis.com/python/api-reference/arcgis.gis.toc.html#layer) property of an `item` can be used to access the data.\n"]},{"cell_type":"code","execution_count":5,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:52.373464Z","start_time":"2021-11-22T19:51:51.851896Z"},"scrolled":true},"outputs":[{"data":{"text/html":["
\n"," USA Major Cities\n"," \n"," This layer presents the locations of cities within the United States with populations of approximately 10,000 or greater, all state capitals, and the national capital.Feature Layer Collection by esri_dm\n"," Last Modified: May 19, 2020\n"," 1 comments, 33,841,105 views\n","
\n","
\n"," "],"text/plain":[""]},"execution_count":5,"metadata":{},"output_type":"execute_result"}],"source":["gis = GIS()\n","item = gis.content.search(\n"," \"USA Major Cities\", item_type=\"Feature layer\", outside_org=True)[0]\n","item"]},{"cell_type":"code","execution_count":6,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:56.288612Z","start_time":"2021-11-22T19:51:52.376465Z"}},"outputs":[{"data":{"text/plain":["(3886, 50)"]},"execution_count":6,"metadata":{},"output_type":"execute_result"}],"source":["# Obtain the first feature layer from the item\n","flayer = item.layers[0]\n","\n","# Use the `from_layer` static method in the 'spatial' namespace on the Pandas' DataFrame\n","sdf = pd.DataFrame.spatial.from_layer(flayer)\n","\n","# Check shape\n","sdf.shape"]},{"cell_type":"code","execution_count":7,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:56.317613Z","start_time":"2021-11-22T19:51:56.291617Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" AGE_10_14 AGE_15_19 AGE_20_24 AGE_25_34 AGE_35_44 AGE_45_54 \\\n","0 1313 1058 734 2031 1767 1446 \n","1 890 817 818 1799 1235 1330 \n","2 12750 13959 16966 32135 27048 29595 \n","3 790 768 699 1445 1136 1134 \n","4 3803 3779 3687 7571 5559 4744 \n","\n"," AGE_55_64 AGE_5_9 AGE_65_74 AGE_75_84 ... PLACEFIPS POP2010 \\\n","0 1136 1503 665 486 ... 1601990 13816 \n","1 1143 1099 721 579 ... 1607840 11899 \n","2 24177 12933 12176 7087 ... 1608830 205671 \n","3 935 959 679 464 ... 1611260 10345 \n","4 3624 4397 2296 1222 ... 1612250 46237 \n","\n"," POPULATION POP_CLASS RENTER_OCC \\\n","0 15181 6 1271 \n","1 11946 6 1441 \n","2 225405 8 33359 \n","3 10727 6 1461 \n","4 53942 7 5196 \n","\n"," SHAPE ST STFIPS VACANT WHITE \n","0 {\"x\": -12462673.723706165, \"y\": 5384674.994080... ID 16 271 13002 \n","1 {\"x\": -12506251.313993266, \"y\": 5341537.793529... ID 16 318 9893 \n","2 {\"x\": -12938676.6836459, \"y\": 5403597.04949123... ID 16 6996 182991 \n","3 {\"x\": -12667411.402393516, \"y\": 5241722.820606... ID 16 241 7984 \n","4 {\"x\": -12989383.674504515, \"y\": 5413226.487333... ID 16 1428 35856 \n","\n","[5 rows x 50 columns]"]},"execution_count":7,"metadata":{},"output_type":"execute_result"}],"source":["# Check first few records\n","sdf.head()"]},{"cell_type":"code","execution_count":8,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:56.324128Z","start_time":"2021-11-22T19:51:56.320614Z"}},"outputs":[{"data":{"text/plain":["pandas.core.frame.DataFrame"]},"execution_count":8,"metadata":{},"output_type":"execute_result"}],"source":["# Check type of sdf\n","type(sdf)"]},{"cell_type":"code","execution_count":9,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:56.343129Z","start_time":"2021-11-22T19:51:56.326129Z"}},"outputs":[{"data":{"text/plain":["['point']"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["# Access spatial namespace\n","sdf.spatial.geometry_type"]},{"cell_type":"markdown","metadata":{},"source":["> We can see that the dataset has 3886 records and 50 columns. Inspecting the `type` of `sdf` object and accessing the `spatial` namespace shows us that a _Spatially enabled DataFrame_ has been created from all the data in the layer.\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Memory usage and the `query()` operation\n"]},{"cell_type":"markdown","metadata":{},"source":["The [**`from_layer()`**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=from_layer#arcgis.features.GeoAccessor.from_layer) method will attempt to read all the data from the layer into the memory. This approach works when you are dealing with small datasets. However, when it comes to large datasets, it becomes imperative to use the memory efficiently and query for only what is necessary.\n","\n","Let's take a look at the memory usage of the existing _SeDF_ using the [`memory_usage()`](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.memory_usage.html) method from Pandas.\n"]},{"cell_type":"code","execution_count":10,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:56.731373Z","start_time":"2021-11-22T19:51:56.722376Z"}},"outputs":[{"name":"stdout","output_type":"stream","text":["Shape of data: (3886, 50)\n","Memory used: 1.48 MB\n"]}],"source":["# Check memory usage of current sdf\n","mem_used = sdf.memory_usage().sum() / (1024**2) # converting to megabytes\n","print(f'Shape of data: {sdf.shape}')\n","print(f'Memory used: {round(mem_used, 2)} MB')"]},{"cell_type":"markdown","metadata":{},"source":["> We can see that a `SeDF` created using the `from_layer()` method reads all the data into the memory. So, the `sdf` object has 3886 records and 50 columns, and uses 1.48MB memory.\n","\n","But what if we only needed a small amount of data for our analysis and did not need to bring everything from the layer into the memory? Good question... let's see how we can achieve that.\n"]},{"cell_type":"markdown","metadata":{},"source":["The [**`query()`**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#arcgis.features.FeatureLayer.query) method is a powerful operation that allows you to use [SQL](https://en.wikipedia.org/wiki/SQL) like queries to return only a subset of records. **Since the processing is performed on the server, this operation is not restricted by the capacity of your computer.**\n","\n","The method returns a [`FeatureSet`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=query#arcgis.features.FeatureSet) object; however, the return type can be changed to a _Spatially enabled DataFrame_ object by specifying the parameter `as_df=True`.\n","\n","Let's subset the data using `query()`, create a new _SeDF_, and check the memory usage. We'll use the `AGE_45_54` column to query the layer and get a subset of records.\n"]},{"cell_type":"code","execution_count":11,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:58.344586Z","start_time":"2021-11-22T19:51:57.814005Z"}},"outputs":[{"data":{"text/plain":["(316, 50)"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["# Filter feature layer records with a query.\n","sub_sdf = flayer.query(where=\"AGE_45_54 < 1500\", as_df=True)\n","sub_sdf.shape"]},{"cell_type":"code","execution_count":12,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:58.354587Z","start_time":"2021-11-22T19:51:58.346589Z"}},"outputs":[{"name":"stdout","output_type":"stream","text":["Memory used is: 0.12 MB\n"]}],"source":["# Check memory usage of current sdf\n","mem_used = sub_sdf.memory_usage().sum() / (1024**2) # converting to megabytes\n","print(f'Memory used is: {round(mem_used, 2)} MB')"]},{"cell_type":"markdown","metadata":{},"source":["> Now that we are only querying for records where `AGE_45_54 < 1500`, the result is a smaller DataFrame with 316 records and 50 columns. Since the processing is performed on the server side, only a subset of data is being saved in the memory reducing usage from **1.48 MB to 0.12 MB**.\n"]},{"cell_type":"markdown","metadata":{},"source":["The [`query()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#arcgis.features.FeatureLayer.query) method allows you to specify a number of optional parameters that may further refine and transform the results. One such key parameter is `out_fields`. With `out_fields`, you can subset your data by specifying a list of field names to return.\n"]},{"cell_type":"code","execution_count":13,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:59.855435Z","start_time":"2021-11-22T19:51:59.601357Z"}},"outputs":[{"data":{"text/plain":["(316, 6)"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["# Filter feature layer with where and out_fields\n","out_fields = ['NAME', 'ST', 'POP_CLASS', 'AGE_45_54']\n","sub_sdf2 = flayer.query(where=\"AGE_45_54 < 1500\",\n"," out_fields=out_fields,\n"," as_df=True)\n","sub_sdf2.shape"]},{"cell_type":"code","execution_count":14,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:51:59.868435Z","start_time":"2021-11-22T19:51:59.858435Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" FID NAME ST POP_CLASS AGE_45_54 \\\n","0 1 Ammon ID 6 1446 \n","1 2 Blackfoot ID 6 1330 \n","2 4 Burley ID 6 1134 \n","3 6 Chubbuck ID 6 1494 \n","4 12 Jerome ID 6 1155 \n","\n"," SHAPE \n","0 {\"x\": -12462673.723706165, \"y\": 5384674.994080... \n","1 {\"x\": -12506251.313993266, \"y\": 5341537.793529... \n","2 {\"x\": -12667411.402393516, \"y\": 5241722.820606... \n","3 {\"x\": -12520053.904151963, \"y\": 5300220.333409... \n","4 {\"x\": -12747828.64784961, \"y\": 5269214.8197742... "]},"execution_count":14,"metadata":{},"output_type":"execute_result"}],"source":["# Check head\n","sub_sdf2.head()"]},{"cell_type":"code","execution_count":15,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:01.302923Z","start_time":"2021-11-22T19:52:01.295930Z"}},"outputs":[{"name":"stdout","output_type":"stream","text":["Memory used is: 0.01 MB\n"]}],"source":["# Check memory usage of current sdf\n","mem_used = sub_sdf2.memory_usage().sum() / (1024**2) # converting to megabytes\n","print(f'Memory used is: {round(mem_used, 2)} MB')"]},{"cell_type":"markdown","metadata":{},"source":["> Using `out_fields`, we have further reduced memory usage by subsetting the data and bringing only necessary information into the memory.\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Create SeDF from FeatureSet\n"]},{"cell_type":"markdown","metadata":{},"source":["As mentioned earlier, the [**`query()`**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#arcgis.features.FeatureLayer.query) method returns a [`FeatureSet`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=query#arcgis.features.FeatureSet) object. The `FeatureSet` object contains useful information about the data that can be accessed through its various properties.\n","\n","Let's use the `AGE_45_54` column to query the layer to get the result as a `FeatureSet` and check some its properties.\n"]},{"cell_type":"code","execution_count":16,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:03.250472Z","start_time":"2021-11-22T19:52:02.945753Z"}},"outputs":[],"source":["# Filter feature layer to return a feature set.\n","fset = flayer.query(where=\"AGE_45_54 < 1500\")"]},{"cell_type":"code","execution_count":17,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:03.259475Z","start_time":"2021-11-22T19:52:03.253475Z"}},"outputs":[{"data":{"text/plain":["arcgis.features.feature.FeatureSet"]},"execution_count":17,"metadata":{},"output_type":"execute_result"}],"source":["# Check type\n","type(fset)"]},{"cell_type":"code","execution_count":18,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:03.411404Z","start_time":"2021-11-22T19:52:03.406402Z"}},"outputs":[{"data":{"text/plain":["316"]},"execution_count":18,"metadata":{},"output_type":"execute_result"}],"source":["# Check length\n","len(fset.features)"]},{"cell_type":"code","execution_count":19,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:03.633193Z","start_time":"2021-11-22T19:52:03.627193Z"}},"outputs":[{"data":{"text/plain":["{'x': -12462673.723706165,\n"," 'y': 5384674.994080178,\n"," 'spatialReference': {'wkid': 102100, 'latestWkid': 3857}}"]},"execution_count":19,"metadata":{},"output_type":"execute_result"}],"source":["# Check geometry of a feature in the featureset\n","fset.features[0].geometry"]},{"cell_type":"markdown","metadata":{},"source":["The `fields` property of a `FeatureSet` returns a list containing information about each column recorded as a dictionary. Let's use the `fields` property to access information about the first column.\n"]},{"cell_type":"code","execution_count":20,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:04.088356Z","start_time":"2021-11-22T19:52:04.083359Z"}},"outputs":[{"data":{"text/plain":["{'name': 'FID',\n"," 'type': 'esriFieldTypeOID',\n"," 'alias': 'FID',\n"," 'sqlType': 'sqlTypeInteger',\n"," 'domain': None,\n"," 'defaultValue': None}"]},"execution_count":20,"metadata":{},"output_type":"execute_result"}],"source":["# Check details of a column in the feature set\n","fset.fields[0]"]},{"cell_type":"markdown","metadata":{},"source":["Let's get the names of the columns in the data.\n"]},{"cell_type":"code","execution_count":21,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:04.548802Z","start_time":"2021-11-22T19:52:04.542798Z"}},"outputs":[{"data":{"text/plain":["['FID', 'NAME', 'CLASS', 'ST', 'STFIPS']"]},"execution_count":21,"metadata":{},"output_type":"execute_result"}],"source":["# Get column names\n","f_names = [f['name'] for f in fset.fields]\n","f_names[:5]"]},{"cell_type":"markdown","metadata":{},"source":["Now, let's create a _Spatially enabled DataFrame_ from a `FeatureSet` using the [`.sdf`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=sdf#arcgis.features.FeatureSet.sdf) property.\n"]},{"cell_type":"code","execution_count":22,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:05.026469Z","start_time":"2021-11-22T19:52:05.006466Z"}},"outputs":[{"data":{"text/plain":["(316, 50)"]},"execution_count":22,"metadata":{},"output_type":"execute_result"}],"source":["# Create SeDF from FeatureSet\n","fset_df = fset.sdf\n","fset_df.shape"]},{"cell_type":"code","execution_count":23,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:05.276147Z","start_time":"2021-11-22T19:52:05.258149Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" FID NAME CLASS ST STFIPS PLACEFIPS CAPITAL POP_CLASS POPULATION \\\n","0 1 Ammon city ID 16 1601990 6 15181 \n","1 2 Blackfoot city ID 16 1607840 6 11946 \n","\n"," POP2010 ... MARHH_NO_C MHH_CHILD FHH_CHILD FAMILIES AVE_FAM_SZ \\\n","0 13816 ... 1131 106 335 3352 3.61 \n","1 11899 ... 1081 174 381 2958 3.31 \n","\n"," HSE_UNITS VACANT OWNER_OCC RENTER_OCC \\\n","0 4747 271 3205 1271 \n","1 4547 318 2788 1441 \n","\n"," SHAPE \n","0 {\"x\": -12462673.723706165, \"y\": 5384674.994080... \n","1 {\"x\": -12506251.313993266, \"y\": 5341537.793529... \n","\n","[2 rows x 50 columns]"]},"execution_count":23,"metadata":{},"output_type":"execute_result"}],"source":["# Check head\n","fset_df.head(2)"]},{"cell_type":"code","execution_count":24,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:05.502653Z","start_time":"2021-11-22T19:52:05.496653Z"}},"outputs":[{"data":{"text/plain":["['point']"]},"execution_count":24,"metadata":{},"output_type":"execute_result"}],"source":["# Check geometry type\n","fset_df.spatial.geometry_type"]},{"cell_type":"markdown","metadata":{},"source":["> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created from a `FeatureSet`.\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Create SeDF from FeatureCollection\n"]},{"cell_type":"markdown","metadata":{},"source":["Tools within the ArcGIS API for Python often return a [FeatureCollection](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#featurecollection) object as a result of some analysis. A `FeatureCollection` is an in-memory collection of [Feature](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#arcgis.features.Feature) objects with rendering information. Similar to feature layers, feature collections can also be used to store features. With a feature collection, a service is not created to serve out the feature data.\n","\n","Let's create a `SeDF` from a FeatureCollection. Here, we:\n","\n","- Import the [Major Ports](https://www.arcgis.com/home/item.html?id=405963eaea24428c9db236ec289760eb) feature layer.\n","- Create 5 mile buffers using [`create_buffers()`](https://developers.arcgis.com/python/api-reference/arcgis.features.use_proximity.html#create-buffers) tool resulting in a FeatureCollection.\n","- Using the [query()](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#arcgis.features.FeatureLayer.query) method on a FeatureCollection returns a [FeatureSet](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=query#arcgis.features.FeatureSet) object. We will create a `SeDF` from the buffered FeatureCollection using the the [`.sdf`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=sdf#arcgis.features.FeatureSet.sdf) property of a FeatureSet object returned from `query()`.\n"]},{"cell_type":"code","execution_count":25,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:10.071650Z","start_time":"2021-11-22T19:52:09.984656Z"}},"outputs":[{"data":{"text/html":["
\n"," Major Ports\n"," \n"," This feature layer, utilizing data from the U.S. Department of Transportation, depicts Major Ports in the United States by total tonnage.Feature Layer Collection by Federal_User_Community\n"," Last Modified: October 27, 2021\n"," 0 comments, 157,223 views\n","
\n","
\n"," "],"text/plain":[""]},"execution_count":25,"metadata":{},"output_type":"execute_result"}],"source":["# Get the ports item\n","ports_item = gis.content.get(\"405963eaea24428c9db236ec289760eb\")\n","ports_item"]},{"cell_type":"code","execution_count":26,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:10.203674Z","start_time":"2021-11-22T19:52:10.197678Z"}},"outputs":[{"data":{"text/plain":[""]},"execution_count":26,"metadata":{},"output_type":"execute_result"}],"source":["# Get the ports layer\n","ports_lyr = ports_item.layers[0]\n","ports_lyr"]},{"cell_type":"code","execution_count":27,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:40.150295Z","start_time":"2021-11-22T19:52:10.430626Z"}},"outputs":[],"source":["# Create buffers\n","from arcgis.features.use_proximity import create_buffers\n","ports_buffer50 = create_buffers(\n"," ports_lyr, distances=[5], units='Miles', gis=agol_gis)"]},{"cell_type":"code","execution_count":28,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:40.159300Z","start_time":"2021-11-22T19:52:40.154296Z"}},"outputs":[{"data":{"text/plain":["arcgis.features.feature.FeatureCollection"]},"execution_count":28,"metadata":{},"output_type":"execute_result"}],"source":["# Check type of result from the analysis\n","type(ports_buffer50)"]},{"cell_type":"markdown","metadata":{},"source":["> The `create_buffers()` tool resulted in a `FeatureCollection`.\n","\n","Now, we will create a `SeDF` from the `FeatureCollection` object.\n"]},{"cell_type":"code","execution_count":29,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:40.197297Z","start_time":"2021-11-22T19:52:40.162296Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" OBJECTID_1 OBJECTID ID PORT PORT_NAME GRAND_TOTA \\\n","0 1 1 124 C4947 Unalaska Island, AK 1652281 \n","1 2 2 85 C4410 Kahului, Maui, HI 3615449 \n","\n"," FOREIGN_TO IMPORTS EXPORTS DOMESTIC BUFF_DIST ORIG_FID AnalysisArea \\\n","0 1236829 426251 810578 415452 5 1 78.528402 \n","1 20391 20391 0 3595058 5 2 78.528402 \n","\n"," SHAPE \n","0 {\"rings\": [[[-18806114.3995, 7138385.537799999... \n","1 {\"rings\": [[[-17418472.419, 2388455.4312999994... "]},"execution_count":29,"metadata":{},"output_type":"execute_result"}],"source":["# Create SeDF\n","sedf_fc = ports_buffer50.query().sdf\n","sedf_fc.head(2)"]},{"cell_type":"code","execution_count":30,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:40.205296Z","start_time":"2021-11-22T19:52:40.199296Z"}},"outputs":[{"data":{"text/plain":["['polygon']"]},"execution_count":30,"metadata":{},"output_type":"execute_result"}],"source":["# Check geometry type\n","sedf_fc.spatial.geometry_type"]},{"cell_type":"markdown","metadata":{},"source":["> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created from a `FeatureCollection`.\n"]},{"cell_type":"markdown","metadata":{},"source":["### Read in local GIS data\n"]},{"cell_type":"markdown","metadata":{},"source":["Local geospatial data, such as [`Feature classes`](http://desktop.arcgis.com/en/arcmap/latest/manage-data/feature-classes/a-quick-tour-of-feature-classes.htm) and [`shapefiles`](http://desktop.arcgis.com/en/arcmap/latest/manage-data/shapefiles/what-is-a-shapefile.htm) can be easily accessed using the [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor). The [`from_featureclass()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?arcgis.features.GeoAccessor.from_featureclass#arcgis.features.GeoAccessor.from_featureclass) method can be used to access local data. Let's look at some examples.\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Reading a Shapefile\n","\n","A locally stored [`shapefile`](http://desktop.arcgis.com/en/arcmap/latest/manage-data/shapefiles/what-is-a-shapefile.htm) can be accessed by passing the location of the file in the [`from_featureclass()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?arcgis.features.GeoAccessor.from_featureclass#arcgis.features.GeoAccessor.from_featureclass) method.\n"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Note: In the absence of arcpy, the PyShp package must be present in your current conda environment in order to read shapefiles. To check if PyShp is present, you can run the following in a cell:\n"," \n"," !conda list pyshp\n"," \n","To install PyShp, you can run the following in a cell:\n"," \n"," !conda install pyshp\n","
\n"]},{"cell_type":"code","execution_count":31,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:41.031721Z","start_time":"2021-11-22T19:52:40.207294Z"}},"outputs":[{"data":{"text/plain":["(3886, 51)"]},"execution_count":31,"metadata":{},"output_type":"execute_result"}],"source":["# Reading from shape file\n","shp_df = pd.DataFrame.spatial.from_featureclass(\n"," location=\"./sedf_data/cities/cities.shp\")\n","shp_df.shape"]},{"cell_type":"code","execution_count":32,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:41.058722Z","start_time":"2021-11-22T19:52:41.034722Z"}},"outputs":[{"data":{"text/plain":["['point']"]},"execution_count":32,"metadata":{},"output_type":"execute_result"}],"source":["shp_df.spatial.geometry_type"]},{"cell_type":"markdown","metadata":{},"source":["> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created from the `shapefile` stored locally.\n"]},{"cell_type":"markdown","metadata":{},"source":["##### Shapefile from a URL\n","\n","The url of a zipped `shapefile` can be used to create a `SeDF` by passing the url as location in the `from_featureclass()` method. The image below shows how the operation can be performed.\n"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Note: This operation requires PyShp to be available in the environment.\n","\n","
\n"]},{"attachments":{"image.png":{"image/png":"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kZFhX331lVv3BT7JGyREee9DsM2bN9v8+fNtw4YNRQQQziFSREVF2aJFi+zrr782bMQGBJH8/HxLTEx05/fu3et+l6d969ats4ULF1pycnIRu8qzDOWlG644IA6IA+KAOCAOiAPigDggDogDPw8OSCA5RsKIL7aiBBIaNtgJESJ27NhhF198sZ144olOrCCqI5imIvYp4+mnn7Y//vGPdsstt7joFWzz9r366qvOnpNOOsn+9Kc/2dixY40vEiFa1K1b18455xzj3GWXXWYzZsw4apHEl+friADzt7/9zX7729/auHHjXJmhaXxatkGbg8ePZL+0/I8kH6X9edxc1U5qJ3FAHBAHxAFxQBwQB8QBceDnxQF8tirxmV8vOPzctuUtkOD4syBMIDSwEIlBx+TYzJkz7dRTT7WIiAh3LnieNH4hbXA50iEuCDLB5a233rIrr7yyUCDh3MqVK+13v/udvffee5aQkGBr1qxxW86NGDHCnevatastX77ciStnn3227dmzx0WXhHOjgdws4AAGfp/j1Cc2NtZh8fHHH7tzpCFtMG+PJ+c8Jl7oCNbRnyMj9oN5+HQ+f9L4PILptP/zunmqvdRe4oA4IA6IA+KAOCAOiAPiQNXiAH6aBBLnHh+bP+UpkOCIx8XFWb169axWrVp25513uuiNt99+2wkTOOgMZTnjjDOsU6dOdv/999s999xjs2bNck79/v37rXHjxvbkk0+6oScdO3Z0+/369bO0tLRi5xAp7oaAQBAdHW1t27a1f/7znzZ06FBn01VXXeXsQHSYMGGCPfXUU/b73//emjVrZt27d3eiCEN/qAfXz507t1DkGTNmjP3iF79wokqoAFGcDRCbvDp06OAiRW6//XZXl9dee80RnjJSUlLsrLPOsqZNm9rjjz/u0g0cOLCwnti5fft2e+ONN6x27dp22223ubQM98EGBJ5HH33UlTF79mx7+eWXjfyx29vIvCoIMQ0aNHDXE7XSrVs3N5SI/IuzXceq1k1W7an2FAfEAXFAHBAHxAFxQBwQB34eHJBAcmx0kcJSy1sgufvuu+3CCy90Asjrr79uv/nNb+yCCy5wEQtERyxZssSJEn/+85+dYHDFFVcY+wgBiAaIK8cdd5wb7nLRRRfZDTfc4NIjDqCkleXUIwwQCcLQmNNPP92JDkR+/OEPf7Drr7/eCSSU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7O70VrEiSnnYkDZhsG1//g5bc/EfLGPJZ+WRZal5EAXCsJennnqq2HREX0RHR9uOHTuKPc9BPp/L0Jjk5BImpjVzw2IYglPcQhmhazAd+V900UVueMyRRo/4fJhctbQyiAyhHJ+G/eLmGGnbtq2dcMIJFhcX57PWVggIASEgBISAEBACQkAICAEhIASEQLkjUGkFEqJN0udOsO+GdrK08YOtIOtAuVeeDDOWzrbvhnS05I/7GtEmP8UycuRIF+GBEFIZF4QXBBK+pnMsFyJRiKjhyz9ahIAQEAJCQAgIASEgBISAEBACQkAIVCQClVcgqchaV4K8GRoTERFRCSwp3gQmaQ2dl6T4lBV3NCEhwbp16+aGDVVcKcpZCAgBISAEhIAQEAJCQAgIASEgBISAmQQSsUAICAEhIASEgBAQAkJACAgBISAEhIAQqPYISCCp9hQQAEJACAgBISAEhIAQEAJCQAgIASEgBISABBJxQAgIASEgBISAEBACQkAICAEhIASEgBCo9ghIIKn2FBAAQkAICAEhIASEgBAQAkJACAgBISAEhIAEEnFACAgBISAEhIAQEAJCQAgIASEgBISAEKj2CEggqfYUEABCQAgIASEgBISAEBACQkAICAEhIASEgAQScUAICAEhIASEgBAQAkJACAgBISAEhIAQqPYISCCp9hQQAEJACAgBISAEhIAQEAJCQAgIASEgBISABBJxQAgIASEgBISAEBACQkAICAEhIASEgBCo9ghIIKn2FBAAQkAICAEhIASEgBAQAkJACAgBISAEhIAEEnFACAgBISAEhIAQEAJCQAgIASEgBISAEKj2CEggqfYUEABCQAgIASEgBISAEBACQkAICAEhIASEgAQScUAICAEhIASEgBAQAkJACAgBISAEhIAQqPYISCCp9hQQAEJACAgBISAEhIAQEAJCQAgIASEgBISABBJxQAgIASEgBISAEBACQkAICAEhIASEgBCo9ghIIKn2FBAAQkAICAEhIASEgBAQAkJACAgBISAEhIAEEnFACAgBISAEhIAQEAJCQAgIASEgBISAEKj2CEggqfYUEABCQAgIASEgBISAEBACQkAICAEhIASEgASSCuBATk6OZWZm2oEDB8pcg+mC++FcqzRl4yuMhJE4IA6IA+KAOCAOiAPigDggDogD1ZMD+Ni5ublhe/0SSMKG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"}},"cell_type":"markdown","metadata":{},"source":["![image.png](attachment:image.png)\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Reading a Featureclass\n","\n","A [featureclass](http://desktop.arcgis.com/en/arcmap/latest/manage-data/feature-classes/a-quick-tour-of-feature-classes.htm) can be accessed from a File Geodatabase by passing its location in the [`from_featureclass()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?arcgis.features.GeoAccessor.from_featureclass#arcgis.features.GeoAccessor.from_featureclass) method.\n"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Note: In the absence of arcpy, the Fiona package must be present in your current conda environment in order to read a featureclass.\n"," To check if Fiona is present, you can run the following in a cell:\n"," \n"," !conda list fiona\n"," \n","To install Fiona, you can run the following in a cell:\n"," \n"," !conda install fiona\n","
\n"]},{"cell_type":"code","execution_count":33,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:41.480724Z","start_time":"2021-11-22T19:52:41.062722Z"}},"outputs":[{"data":{"text/plain":["(3886, 51)"]},"execution_count":33,"metadata":{},"output_type":"execute_result"}],"source":["# Reading from FGDB\n","fcls_df = pd.DataFrame.spatial.from_featureclass(\n"," location=\"./sedf_data/cities/cities.gdb/cities\")\n","fcls_df.shape"]},{"cell_type":"code","execution_count":34,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:41.506721Z","start_time":"2021-11-22T19:52:41.485728Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" OBJECTID age_10_14 age_15_19 age_20_24 age_25_34 age_35_44 age_45_54 \\\n","0 1 1313 1058 734 2031 1767 1446 \n","1 2 890 817 818 1799 1235 1330 \n","\n"," age_55_64 age_5_9 age_65_74 ... placefips pop2010 population \\\n","0 1136 1503 665 ... 1601990 13816 15181 \n","1 1143 1099 721 ... 1607840 11899 11946 \n","\n"," pop_class renter_occ st stfips vacant white \\\n","0 6 1271 ID 16 271 13002 \n","1 6 1441 ID 16 318 9893 \n","\n"," SHAPE \n","0 {\"x\": -12462673.7237, \"y\": 5384674.994099997, ... \n","1 {\"x\": -12506251.314, \"y\": 5341537.793499999, \"... \n","\n","[2 rows x 51 columns]"]},"execution_count":34,"metadata":{},"output_type":"execute_result"}],"source":["# Check head\n","fcls_df.head(2)"]},{"cell_type":"code","execution_count":35,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:52:41.525725Z","start_time":"2021-11-22T19:52:41.510728Z"}},"outputs":[{"data":{"text/plain":["['point']"]},"execution_count":35,"metadata":{},"output_type":"execute_result"}],"source":["# Check geometry type\n","fcls_df.spatial.geometry_type"]},{"cell_type":"markdown","metadata":{},"source":["> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created from the `featureclass` stored locally.\n"]},{"cell_type":"markdown","metadata":{},"source":["**Specify optional parameters**\n"]},{"cell_type":"markdown","metadata":{},"source":["The **`from_featureclass()`** method allows users to specify optional parameters when the `ArcPy` library is available in the current environment. These parameters are:\n","\n","- `sql_clause`: a pair of SQL prefix and postfix clauses, `sql_clause=(prefix,postfix)`, organized in a list or a tuple can be passed to query specific data. The parameter allows only a small set of operations to be performed. Learn more about the allowed operations [here](https://pro.arcgis.com/en/pro-app/latest/arcpy/data-access/searchcursor-class.htm).\n","- `where_clause`: where statement to subset the data. Learn more about it [here](https://pro.arcgis.com/en/pro-app/latest/help/mapping/navigation/sql-reference-for-elements-used-in-query-expressions.htm).\n","- `fields`: to subset the data for specific fields.\n","- `spatial_filter`: a geometry object to filter the results.\n"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Note: The operations below can only be performed in an environment that containsarcpy.\n","\n","
\n"]},{"cell_type":"markdown","metadata":{},"source":["##### Subset data for specific fields\n"]},{"cell_type":"code","execution_count":36,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:55:03.504998Z","start_time":"2021-11-22T19:55:03.352999Z"}},"outputs":[{"data":{"text/plain":["(3886, 3)"]},"execution_count":36,"metadata":{},"output_type":"execute_result"}],"source":["# Subset for fields\n","fcls_flds = pd.DataFrame.spatial.from_featureclass(location=\"./sedf_data/cities/cities.gdb/cities\",\n"," fields=['st', 'pop_class'])\n","fcls_flds.shape"]},{"cell_type":"code","execution_count":37,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:55:04.378124Z","start_time":"2021-11-22T19:55:04.367127Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" st pop_class SHAPE\n","0 ID 6 {\"x\": -12462673.7237, \"y\": 5384674.994099997, ...\n","1 ID 6 {\"x\": -12506251.314, \"y\": 5341537.793499999, \"..."]},"execution_count":37,"metadata":{},"output_type":"execute_result"}],"source":["# Check head\n","fcls_flds.head(2)"]},{"cell_type":"markdown","metadata":{},"source":["##### Subset using `where_clause`\n","\n","Learn more about how to use `where_clause` [here](https://pro.arcgis.com/en/pro-app/latest/help/mapping/navigation/sql-reference-for-elements-used-in-query-expressions.htm).\n"]},{"cell_type":"code","execution_count":38,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:55:06.957737Z","start_time":"2021-11-22T19:55:06.876084Z"}},"outputs":[{"data":{"text/plain":["(15, 51)"]},"execution_count":38,"metadata":{},"output_type":"execute_result"}],"source":["# Subset using where_clause\n","fcls_whr = pd.DataFrame.spatial.from_featureclass(location=\"./sedf_data/cities/cities.gdb/cities\",\n"," where_clause=\"st='ID' and pop_class=6\")\n","fcls_whr.shape"]},{"cell_type":"code","execution_count":39,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:55:07.111124Z","start_time":"2021-11-22T19:55:07.093125Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" st pop_class age_10_14 age_15_19 \\\n","0 ID 6 1313 1058 \n","1 ID 6 890 817 \n","\n"," SHAPE \n","0 {\"x\": -12462673.7237, \"y\": 5384674.994099997, ... \n","1 {\"x\": -12506251.314, \"y\": 5341537.793499999, \"... "]},"execution_count":41,"metadata":{},"output_type":"execute_result"}],"source":["# Check head\n","flds_whr.head(2)"]},{"cell_type":"markdown","metadata":{},"source":["##### Subset using `sql_clause`\n","\n","`sql_clause` can be combined with `fields` and `where_clause` to further subset the data. You can learn more about the allowed operations [here](https://pro.arcgis.com/en/pro-app/latest/arcpy/data-access/searchcursor-class.htm). Now let's look at some examples.\n"]},{"cell_type":"markdown","metadata":{},"source":["###### Prefix `sql_clause` - DISTINCT operation\n"]},{"cell_type":"code","execution_count":42,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:55:12.045052Z","start_time":"2021-11-22T19:55:11.704053Z"}},"outputs":[{"data":{"text/plain":["(3886, 51)"]},"execution_count":42,"metadata":{},"output_type":"execute_result"}],"source":["# Prefix Sql clause - DISTINCT operation\n","fcls_sql1 = pd.DataFrame.spatial.from_featureclass(location=\"./sedf_data/cities/cities.gdb/cities\",\n"," sql_clause=(\"DISTINCT pop_class\", None))\n","\n","# Check shape\n","fcls_sql1.shape"]},{"cell_type":"code","execution_count":43,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:55:12.590891Z","start_time":"2021-11-22T19:55:12.570891Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" st pop_class SHAPE\n","0 AK 6 {\"x\": -16417572.1606, \"y\": 9562359.403800003, ...\n","1 AK 6 {\"x\": -16455422.2224, \"y\": 9574022.0224, \"spat...\n","2 AK 6 {\"x\": -16444303.0276, \"y\": 9568008.9705, \"spat...\n","3 AK 6 {\"x\": -14962313.3618, \"y\": 8031014.926600002, ...\n","4 AK 6 {\"x\": -16657118.680399999, \"y\": 8746757.662600..."]},"execution_count":45,"metadata":{},"output_type":"execute_result"}],"source":["# Check head\n","fcls_sql2.head()"]},{"cell_type":"markdown","metadata":{},"source":["###### Prefix and Postfix `sql_clause` with specific fields and `where_clause`\n","\n","Here, we will subset the data using `where_clause`, keep specific fields, and then apply both prefix and postfix clause.\n"]},{"cell_type":"code","execution_count":48,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:55:51.001847Z","start_time":"2021-11-22T19:55:50.922841Z"}},"outputs":[{"data":{"text/plain":["(22, 5)"]},"execution_count":48,"metadata":{},"output_type":"execute_result"}],"source":["# Prefix and Postfix sql_clause\n","fcls_sql3_df = pd.DataFrame.spatial.from_featureclass(location=\"./sedf_data/cities/cities.gdb/cities\",\n"," fields=[\n"," 'st', 'name', 'pop_class', 'age_10_14'],\n"," where_clause=\"st='ID'\",\n"," sql_clause=(\"DISTINCT pop_class\", \"ORDER BY name\"))\n","\n","# Check Shape\n","fcls_sql3_df.shape"]},{"cell_type":"code","execution_count":49,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T19:55:51.761628Z","start_time":"2021-11-22T19:55:51.749637Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" st name pop_class age_10_14 \\\n","0 ID Ammon 6 1313 \n","1 ID Blackfoot 6 890 \n","2 ID Boise City 8 12750 \n","3 ID Burley 6 790 \n","4 ID Caldwell 7 3803 \n","\n"," SHAPE \n","0 {\"x\": -12462673.7237, \"y\": 5384674.994099997, ... \n","1 {\"x\": -12506251.314, \"y\": 5341537.793499999, \"... \n","2 {\"x\": -12938676.683600001, \"y\": 5403597.049500... \n","3 {\"x\": -12667411.4024, \"y\": 5241722.820600003, ... \n","4 {\"x\": -12989383.6745, \"y\": 5413226.487300001, ... "]},"execution_count":49,"metadata":{},"output_type":"execute_result"}],"source":["# Check head\n","fcls_sql3_df.head()"]},{"cell_type":"markdown","metadata":{},"source":["##### Using `spatial_filter`\n"]},{"cell_type":"markdown","metadata":{},"source":["`spatial_filter` can be used to query the results by using a spatial relationship with another geometry. The spatial filtering is even more powerful when integrated with [Geoenrichment](https://developers.arcgis.com/python/guide/part1-introduction-to-geoenrichment/). Let's use this approach to filter our results for the state of Idaho. In this example, we will:\n","\n","- use `arcgis.geoenrichment.Country` to derive the geometries for the state of Idaho.\n","- use `arcgis.geometry.filters.intersects(geometry, sr=None)` to create a geometry filter object that filters results whose geometry intersects with the specified geometry (i.e. filter data points within the boundary of Idaho).\n","- pass the geometry filter object to `spatial_filter` to get desired results.\n"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Note: To perform enrichment operations, GeoEnrichment must be configured in your GIS organization. GeoEnrichment consumes credits, and you can learn more about credit consumption here. \n","
\n"]},{"cell_type":"code","execution_count":51,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T20:03:11.171059Z","start_time":"2021-11-22T20:03:11.154058Z"}},"outputs":[],"source":["# Basic Imports\n","from arcgis.geometry import Geometry\n","from arcgis.geometry.filters import intersects\n","from arcgis.geoenrichment import Country"]},{"cell_type":"code","execution_count":59,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T20:08:43.643602Z","start_time":"2021-11-22T20:08:43.139513Z"}},"outputs":[{"data":{"text/plain":["arcgis.geoenrichment.enrichment.Country"]},"execution_count":59,"metadata":{},"output_type":"execute_result"}],"source":["# Create country object\n","usa = Country.get('US', gis=agol_gis)\n","type(usa)"]},{"cell_type":"code","execution_count":62,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T20:08:49.034325Z","start_time":"2021-11-22T20:08:47.854467Z"}},"outputs":[{"data":{"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"image/svg+xml":[""],"text/plain":[""]},"execution_count":62,"metadata":{},"output_type":"execute_result"}],"source":["# Get boundaries for Idaho\n","named_area_ID = usa.search(query='Idaho', layers=['US.States'])\n","display(named_area_ID[0])\n","named_area_ID[0].geometry.as_arcpy"]},{"cell_type":"code","execution_count":64,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T20:10:38.529463Z","start_time":"2021-11-22T20:10:38.524455Z"}},"outputs":[{"data":{"text/plain":["{'wkid': 4326, 'latestWkid': 4326}"]},"execution_count":64,"metadata":{},"output_type":"execute_result"}],"source":["# Create spatial reference\n","sr_id = named_area_ID[0].geometry[\"spatialReference\"]\n","sr_id"]},{"cell_type":"code","execution_count":66,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T20:12:24.265943Z","start_time":"2021-11-22T20:12:24.259940Z"}},"outputs":[{"data":{"text/plain":["dict"]},"execution_count":66,"metadata":{},"output_type":"execute_result"}],"source":["# Construct a geometry filter using the filter geometry\n","id_state_filter = intersects(named_area_ID[0].geometry,\n"," sr=sr_id)\n","type(id_state_filter)"]},{"cell_type":"code","execution_count":71,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T20:19:12.104168Z","start_time":"2021-11-22T20:19:10.973170Z"},"code_folding":[]},"outputs":[{"data":{"text/plain":["(22, 5)"]},"execution_count":71,"metadata":{},"output_type":"execute_result"}],"source":["# Pass geometry filter object as a spatial_filter\n","fcls_spfl_df = pd.DataFrame.spatial.from_featureclass(location=\"./sedf_data/cities/cities.gdb/cities\",\n"," fields=[\n"," 'st', 'name', 'pop_class', 'age_10_14'],\n"," spatial_filter=id_state_filter)\n","# Check shape\n","fcls_spfl_df.shape"]},{"cell_type":"code","execution_count":73,"metadata":{"ExecuteTime":{"end_time":"2021-11-22T20:26:39.851895Z","start_time":"2021-11-22T20:26:39.840893Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" st name pop_class age_10_14 \\\n","0 ID Ammon 6 1313 \n","1 ID Blackfoot 6 890 \n","2 ID Boise City 8 12750 \n","3 ID Burley 6 790 \n","4 ID Caldwell 7 3803 \n","\n"," SHAPE \n","0 {\"x\": -12462673.7237, \"y\": 5384674.994099997, ... \n","1 {\"x\": -12506251.314, \"y\": 5341537.793499999, \"... \n","2 {\"x\": -12938676.683600001, \"y\": 5403597.049500... \n","3 {\"x\": -12667411.4024, \"y\": 5241722.820600003, ... \n","4 {\"x\": -12989383.6745, \"y\": 5413226.487300001, ... "]},"execution_count":73,"metadata":{},"output_type":"execute_result"}],"source":["# Check head\n","fcls_spfl_df.head()"]},{"cell_type":"markdown","metadata":{},"source":["> The result shows the data points filtered for Idaho as defined by the spatial filter.\n","\n","You can learn more about applying spatial filters in our [Working with geometries](https://developers.arcgis.com/python/guide/part4-spatial-filters/#arcgis.geometry.filters-module) guide series.\n"]},{"cell_type":"markdown","metadata":{},"source":["### Read in DataFrame with Addresses\n"]},{"cell_type":"markdown","metadata":{},"source":["A `SeDF` can be easily created from a DataFrame with address information using the [`from_df()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=from_featureclass#arcgis.features.GeoAccessor.from_df) method. This method geocodes the addresses using the first configured geocoder in your GIS. The locations generated after geocoding are used as the geometry of the SeDF.\n","\n","You can learn more about geocoding in our [Finding Places with geocoding](https://developers.arcgis.com/python/guide/part1-what-is-geocoding/) guide series.\n"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Note: The from_df() method performs a batch geocoding operation which consumes credits. If a geocoder is not specified, then the first configured geocoder in your GIS organization will be used. Learn more about credit consumption here.\n","\n","To avoid credit consumption, you may specify your own `geocoder`.\n","\n","
\n"]},{"cell_type":"markdown","metadata":{},"source":["Let's look at an example of using `from_df()`. We will read addresses into a DataFrame using the [`pd.read_csv()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html) method. Next, we will create a SeDF by passing the DataFrame and address column as parameters to the `from_df()` method.\n"]},{"cell_type":"code","execution_count":48,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:34:12.278791Z","start_time":"2021-11-11T22:34:12.267792Z"}},"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
Address
\n","
\n"," \n"," \n","
\n","
0
\n","
602 Murray Cir, Sausalito, CA 94965
\n","
\n","
\n","
1
\n","
340 Stockton St, San Francisco, CA 94108
\n","
\n","
\n","
2
\n","
3619 Balboa St, San Francisco, CA 94121
\n","
\n","
\n","
3
\n","
1274 El Camino Real, San Bruno, CA 94066
\n","
\n","
\n","
4
\n","
625 Monterey Blvd, San Francisco, CA 94127
\n","
\n"," \n","
\n","
"],"text/plain":[" Address\n","0 602 Murray Cir, Sausalito, CA 94965\n","1 340 Stockton St, San Francisco, CA 94108\n","2 3619 Balboa St, San Francisco, CA 94121\n","3 1274 El Camino Real, San Bruno, CA 94066\n","4 625 Monterey Blvd, San Francisco, CA 94127"]},"execution_count":48,"metadata":{},"output_type":"execute_result"}],"source":["# Read the csv file with address into a DataFrame\n","orders_df = pd.read_csv(\"./sedf_data/cities/orders.csv\")\n","\n","# Check head\n","orders_df.head()"]},{"cell_type":"markdown","metadata":{},"source":["> The DataFrame shows a column with address information.\n"]},{"cell_type":"code","execution_count":53,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:35:55.437412Z","start_time":"2021-11-11T22:35:53.956939Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" Address \\\n","0 602 Murray Cir, Sausalito, CA 94965 \n","1 340 Stockton St, San Francisco, CA 94108 \n","2 3619 Balboa St, San Francisco, CA 94121 \n","3 1274 El Camino Real, San Bruno, CA 94066 \n","4 625 Monterey Blvd, San Francisco, CA 94127 \n","\n"," SHAPE \n","0 {\"x\": -122.47885242199999, \"y\": 37.83735920100... \n","1 {\"x\": -122.44955096499996, \"y\": 37.73152250200... \n","2 {\"x\": -122.49772620499999, \"y\": 37.77567413500... \n","3 {\"x\": -122.40685153899994, \"y\": 37.78910429100... \n","4 {\"x\": -122.42218381299995, \"y\": 37.63856151200... "]},"execution_count":53,"metadata":{},"output_type":"execute_result"}],"source":["# Use from_df to create SeDF\n","orders_sdf = pd.DataFrame.spatial.from_df(\n"," df=orders_df, address_column=\"Address\")\n","orders_sdf.head()"]},{"cell_type":"code","execution_count":54,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:35:57.704801Z","start_time":"2021-11-11T22:35:57.697804Z"}},"outputs":[{"data":{"text/plain":["['point']"]},"execution_count":54,"metadata":{},"output_type":"execute_result"}],"source":["# Check geometry type\n","orders_sdf.spatial.geometry_type"]},{"cell_type":"markdown","metadata":{},"source":["> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created from a Pandas DataFrame with address information.\n"]},{"cell_type":"markdown","metadata":{},"source":["### Read in DataFrame with Lat/Long Information\n"]},{"cell_type":"markdown","metadata":{},"source":["As we saw in part-1 of this guide series, a SeDF can be created from any Pandas DataFrame with location information (Latitude and Longitude) using the [`from_xy()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#arcgis.features.GeoAccessor.from_xy) method.\n","\n","Let's look at an example. We will read the data with latitude and longitude information into a DataFrame using the [`pd.read_csv()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html) method. Then, we will create a SeDF by passing the DataFrame, latitude, and longitude as parameters to the `from_xy()` method.\n"]},{"cell_type":"code","execution_count":55,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:07.669481Z","start_time":"2021-11-11T22:36:07.650485Z"}},"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
Provider Name
\n","
Provider City
\n","
Provider State
\n","
Residents Total Admissions COVID-19
\n","
Residents Total COVID-19 Cases
\n","
Residents Total COVID-19 Deaths
\n","
Number of All Beds
\n","
Total Number of Occupied Beds
\n","
LONGITUDE
\n","
LATITUDE
\n","
\n"," \n"," \n","
\n","
0
\n","
GROSSE POINTE MANOR
\n","
NILES
\n","
IL
\n","
5
\n","
56
\n","
12
\n","
99
\n","
61
\n","
-87.792973
\n","
42.012012
\n","
\n","
\n","
1
\n","
MILLER'S MERRY MANOR
\n","
DUNKIRK
\n","
IN
\n","
0
\n","
0
\n","
0
\n","
46
\n","
43
\n","
-85.197651
\n","
40.392722
\n","
\n","
\n","
2
\n","
PARKWAY MANOR
\n","
MARION
\n","
IL
\n","
0
\n","
0
\n","
0
\n","
131
\n","
84
\n","
-88.982944
\n","
37.750143
\n","
\n","
\n","
3
\n","
AVANTARA LONG GROVE
\n","
LONG GROVE
\n","
IL
\n","
6
\n","
141
\n","
0
\n","
195
\n","
131
\n","
-87.986442
\n","
42.160843
\n","
\n","
\n","
4
\n","
HARMONY NURSING & REHAB CENTER
\n","
CHICAGO
\n","
IL
\n","
19
\n","
75
\n","
16
\n","
180
\n","
116
\n","
-87.726353
\n","
41.975505
\n","
\n"," \n","
\n","
"],"text/plain":[" Provider Name Provider City Provider State \\\n","0 GROSSE POINTE MANOR NILES IL \n","1 MILLER'S MERRY MANOR DUNKIRK IN \n","2 PARKWAY MANOR MARION IL \n","3 AVANTARA LONG GROVE LONG GROVE IL \n","4 HARMONY NURSING & REHAB CENTER CHICAGO IL \n","\n"," Residents Total Admissions COVID-19 Residents Total COVID-19 Cases \\\n","0 5 56 \n","1 0 0 \n","2 0 0 \n","3 6 141 \n","4 19 75 \n","\n"," Residents Total COVID-19 Deaths Number of All Beds \\\n","0 12 99 \n","1 0 46 \n","2 0 131 \n","3 0 195 \n","4 16 180 \n","\n"," Total Number of Occupied Beds LONGITUDE LATITUDE \n","0 61 -87.792973 42.012012 \n","1 43 -85.197651 40.392722 \n","2 84 -88.982944 37.750143 \n","3 131 -87.986442 42.160843 \n","4 116 -87.726353 41.975505 "]},"execution_count":55,"metadata":{},"output_type":"execute_result"}],"source":["# Read the data\n","cms_df = pd.read_csv('./sedf_data/cities/sample_cms_data.csv')\n","\n","# Return the first 5 records\n","cms_df.head()"]},{"cell_type":"code","execution_count":56,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:07.692482Z","start_time":"2021-11-11T22:36:07.672485Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" Provider Name Provider City Provider State \\\n","0 GROSSE POINTE MANOR NILES IL \n","1 MILLER'S MERRY MANOR DUNKIRK IN \n","2 PARKWAY MANOR MARION IL \n","3 AVANTARA LONG GROVE LONG GROVE IL \n","4 HARMONY NURSING & REHAB CENTER CHICAGO IL \n","\n"," Residents Total Admissions COVID-19 Residents Total COVID-19 Cases \\\n","0 5 56 \n","1 0 0 \n","2 0 0 \n","3 6 141 \n","4 19 75 \n","\n"," Residents Total COVID-19 Deaths Number of All Beds \\\n","0 12 99 \n","1 0 46 \n","2 0 131 \n","3 0 195 \n","4 16 180 \n","\n"," Total Number of Occupied Beds LONGITUDE LATITUDE \\\n","0 61 -87.792973 42.012012 \n","1 43 -85.197651 40.392722 \n","2 84 -88.982944 37.750143 \n","3 131 -87.986442 42.160843 \n","4 116 -87.726353 41.975505 \n","\n"," SHAPE \n","0 {\"spatialReference\": {\"wkid\": 4326}, \"x\": -87.... \n","1 {\"spatialReference\": {\"wkid\": 4326}, \"x\": -85.... \n","2 {\"spatialReference\": {\"wkid\": 4326}, \"x\": -88.... \n","3 {\"spatialReference\": {\"wkid\": 4326}, \"x\": -87.... \n","4 {\"spatialReference\": {\"wkid\": 4326}, \"x\": -87.... "]},"execution_count":56,"metadata":{},"output_type":"execute_result"}],"source":["# Create a SeDF\n","cms_sedf = pd.DataFrame.spatial.from_xy(\n"," df=cms_df, x_column='LONGITUDE', y_column='LATITUDE', sr=4326)\n","\n","# Check head\n","cms_sedf.head()"]},{"cell_type":"markdown","metadata":{},"source":["> The `SHAPE` feature shows that a _Spatially enabled DataFrame_ has been created from a Pandas DataFrame with latitude and longitude information.\n"]},{"cell_type":"markdown","metadata":{},"source":["### Read in GeoPandas DataFrame\n"]},{"cell_type":"markdown","metadata":{},"source":["A `SeDF` can be easily created from a [GeoPandas's](https://geopandas.org/index.html) [GeoDataFrame](https://geopandas.org/docs/reference/geodataframe.html) using the [`from_geodataframe()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#arcgis.features.GeoAccessor.from_geodataframe) method. We will:\n","\n","- Import Geopandas and create a GeoDataFrame.\n","- Create a [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor) from a GeoDataFrame.\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Create a GeoDataFrame\n","\n","Here, we will create a `GeoDataFrame` from a Pandas DataFrame, `cms_df`, defined above.\n"]},{"cell_type":"code","execution_count":57,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:07.724482Z","start_time":"2021-11-11T22:36:07.694483Z"}},"outputs":[],"source":["# Import libraries\n","from geopandas import GeoDataFrame\n","from shapely.geometry import Point"]},{"cell_type":"code","execution_count":58,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:07.743482Z","start_time":"2021-11-11T22:36:07.726483Z"}},"outputs":[{"data":{"text/plain":["(124, 9)"]},"execution_count":58,"metadata":{},"output_type":"execute_result"}],"source":["# Read the data\n","cms_df = pd.read_csv('./sedf_data/cities/sample_cms_data.csv')\n","\n","# Create Geopandas DataFrame\n","gdf = GeoDataFrame(cms_df.drop(['LONGITUDE', 'LATITUDE'], axis=1),\n"," crs={'init': 'epsg:4326'},\n"," geometry=[Point(xy) for xy in zip(cms_df.LONGITUDE, cms_df.LATITUDE)])\n","gdf.shape"]},{"cell_type":"code","execution_count":59,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:07.758480Z","start_time":"2021-11-11T22:36:07.745481Z"}},"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
Provider Name
\n","
Provider City
\n","
Provider State
\n","
Residents Total Admissions COVID-19
\n","
Residents Total COVID-19 Cases
\n","
Residents Total COVID-19 Deaths
\n","
Number of All Beds
\n","
Total Number of Occupied Beds
\n","
geometry
\n","
\n"," \n"," \n","
\n","
0
\n","
GROSSE POINTE MANOR
\n","
NILES
\n","
IL
\n","
5
\n","
56
\n","
12
\n","
99
\n","
61
\n","
POINT (-87.79297 42.01201)
\n","
\n","
\n","
1
\n","
MILLER'S MERRY MANOR
\n","
DUNKIRK
\n","
IN
\n","
0
\n","
0
\n","
0
\n","
46
\n","
43
\n","
POINT (-85.19765 40.39272)
\n","
\n"," \n","
\n","
"],"text/plain":[" Provider Name Provider City Provider State \\\n","0 GROSSE POINTE MANOR NILES IL \n","1 MILLER'S MERRY MANOR DUNKIRK IN \n","\n"," Residents Total Admissions COVID-19 Residents Total COVID-19 Cases \\\n","0 5 56 \n","1 0 0 \n","\n"," Residents Total COVID-19 Deaths Number of All Beds \\\n","0 12 99 \n","1 0 46 \n","\n"," Total Number of Occupied Beds geometry \n","0 61 POINT (-87.79297 42.01201) \n","1 43 POINT (-85.19765 40.39272) "]},"execution_count":59,"metadata":{},"output_type":"execute_result"}],"source":["# Check head\n","gdf.head(2)"]},{"cell_type":"markdown","metadata":{},"source":["> A GeoDataFrame has been created with a `geometry` column that stores the geometry of the dataset.\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Create a SeDF from GeoDataFrame\n","\n","Here, we will create a `SeDF` from the `gdf` GeoDataFrame created above using the [`from_geodataframe()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#arcgis.features.GeoAccessor.from_geodataframe) method.\n"]},{"cell_type":"code","execution_count":60,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:07.777481Z","start_time":"2021-11-11T22:36:07.760480Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" Provider Name Provider City Provider State \\\n","0 GROSSE POINTE MANOR NILES IL \n","1 MILLER'S MERRY MANOR DUNKIRK IN \n","\n"," Residents Total Admissions COVID-19 Residents Total COVID-19 Cases \\\n","0 5 56 \n","1 0 0 \n","\n"," Residents Total COVID-19 Deaths Number of All Beds \\\n","0 12 99 \n","1 0 46 \n","\n"," Total Number of Occupied Beds \\\n","0 61 \n","1 43 \n","\n"," SHAPE \n","0 {\"x\": -87.792973, \"y\": 42.012012, \"spatialRefe... \n","1 {\"x\": -85.197651, \"y\": 40.392722, \"spatialRefe... "]},"execution_count":60,"metadata":{},"output_type":"execute_result"}],"source":["# Create a SeDF\n","sedf_gpd = pd.DataFrame.spatial.from_geodataframe(gdf)\n","sedf_gpd.head(2)"]},{"cell_type":"code","execution_count":61,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:07.784482Z","start_time":"2021-11-11T22:36:07.779484Z"}},"outputs":[{"data":{"text/plain":["['point']"]},"execution_count":61,"metadata":{},"output_type":"execute_result"}],"source":["# Check geometry type\n","sedf_gpd.spatial.geometry_type"]},{"cell_type":"markdown","metadata":{},"source":["> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created from a GeoDataFrame.\n"]},{"cell_type":"markdown","metadata":{},"source":["### Read in feather format data\n"]},{"cell_type":"markdown","metadata":{},"source":["A `SeDF` can be easily created from the data in [feather](https://arrow.apache.org/docs/python/feather.html) format using the [`from_feather()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=from_feather#arcgis.features.GeoAccessor.from_feather) method. The method's defaults _SHAPE_ is the `spatial_column` for geo-spatial information, but any other column with spatial information can be specified.\n"]},{"cell_type":"code","execution_count":62,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:07.798483Z","start_time":"2021-11-11T22:36:07.786483Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" Provider Name Provider City Provider State \\\n","0 GROSSE POINTE MANOR NILES IL \n","1 MILLER'S MERRY MANOR DUNKIRK IN \n","\n"," Residents Total Admissions COVID-19 Residents Total COVID-19 Cases \\\n","0 5 56 \n","1 0 0 \n","\n"," Residents Total COVID-19 Deaths Number of All Beds \\\n","0 12 99 \n","1 0 46 \n","\n"," Total Number of Occupied Beds LONGITUDE LATITUDE \\\n","0 61 -87.792973 42.012012 \n","1 43 -85.197651 40.392722 \n","\n"," SHAPE \n","0 {\"x\": -87.792973, \"y\": 42.012012, \"spatialRefe... \n","1 {\"x\": -85.197651, \"y\": 40.392722, \"spatialRefe... "]},"execution_count":63,"metadata":{},"output_type":"execute_result"}],"source":["# Create SeDf by reading from feather\n","sedf_fthr = pd.DataFrame.spatial.from_feather(\n"," './sedf_data/cities/sample_cms_data.feather')\n","sedf_fthr.head(2)"]},{"cell_type":"code","execution_count":64,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:07.861486Z","start_time":"2021-11-11T22:36:07.856482Z"}},"outputs":[{"data":{"text/plain":["['point']"]},"execution_count":64,"metadata":{},"output_type":"execute_result"}],"source":["# Check geometry type\n","sedf_fthr.spatial.geometry_type"]},{"cell_type":"markdown","metadata":{},"source":["> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created from _feather_ format data.\n"]},{"cell_type":"markdown","metadata":{},"source":["### Read in Non-spatial Table data\n","\n","Non-spatial table data can be hosted on [**ArcGIS Online**](https://www.arcgis.com) or [**ArcGIS Enterprise**](http://enterprise.arcgis.com/en/), or it can be stored locally in a File Geodatabase. A `SeDF` can be easily created from such non-spatial table data using the following methods:\n","\n","- [`from_table()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=from_feather#arcgis.features.GeoAccessor.from_table) - for local data\n","- [`from_layer()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=from_layer#arcgis.features.GeoAccessor.from_layer) - for data hosted on ArcGIS Online or Enterprise\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Using the `from_table()` method\n","\n","A `SeDF` can be created from local non-spatial data using the [`from_table()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=from_feather#arcgis.features.GeoAccessor.from_table) method. The method can read a csv file (in any environment) or a table stored in a File Geodatabase (with ArcPy only).\n"]},{"cell_type":"markdown","metadata":{},"source":["##### Reading a csv file\n"]},{"cell_type":"code","execution_count":65,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:08.546484Z","start_time":"2021-11-11T22:36:07.863481Z"}},"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
Provider Name
\n","
Provider City
\n","
Provider State
\n","
Residents Total Admissions COVID-19
\n","
Residents Total COVID-19 Cases
\n","
Residents Total COVID-19 Deaths
\n","
Number of All Beds
\n","
Total Number of Occupied Beds
\n","
LONGITUDE
\n","
LATITUDE
\n","
\n"," \n"," \n","
\n","
0
\n","
GROSSE POINTE MANOR
\n","
NILES
\n","
IL
\n","
5
\n","
56
\n","
12
\n","
99
\n","
61
\n","
-87.792973
\n","
42.012012
\n","
\n","
\n","
1
\n","
MILLER'S MERRY MANOR
\n","
DUNKIRK
\n","
IN
\n","
0
\n","
0
\n","
0
\n","
46
\n","
43
\n","
-85.197651
\n","
40.392722
\n","
\n"," \n","
\n","
"],"text/plain":[" Provider Name Provider City Provider State \\\n","0 GROSSE POINTE MANOR NILES IL \n","1 MILLER'S MERRY MANOR DUNKIRK IN \n","\n"," Residents Total Admissions COVID-19 Residents Total COVID-19 Cases \\\n","0 5 56 \n","1 0 0 \n","\n"," Residents Total COVID-19 Deaths Number of All Beds \\\n","0 12 99 \n","1 0 46 \n","\n"," Total Number of Occupied Beds LONGITUDE LATITUDE \n","0 61 -87.792973 42.012012 \n","1 43 -85.197651 40.392722 "]},"execution_count":65,"metadata":{},"output_type":"execute_result"}],"source":["# Create SeDF\n","tbl_df = pd.DataFrame.spatial.from_table(\n"," filename='./sedf_data/cities/sample_cms_data.csv')\n","tbl_df.head(2)"]},{"cell_type":"markdown","metadata":{},"source":["> A Pandas DataFrame without any spatial information is returned.\n"]},{"cell_type":"markdown","metadata":{},"source":["##### Reading table from a File Geodatabase\n"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Note: The operation below can only be performed in an environment that containsarcpy.\n","\n","
"],"text/plain":[" OBJECTID NAME OTHER OWNER_OCC PLACEFIPS POP2010 POPULATION \\\n","0 1 Ammon 307 3205 1601990 13816 15181 \n","1 2 Blackfoot 1077 2788 1607840 11899 11946 \n","\n"," POP_CLASS RENTER_OCC ST STFIPS VACANT WHITE \n","0 6 1271 ID 16 271 13002 \n","1 6 1441 ID 16 318 9893 "]},"execution_count":66,"metadata":{},"output_type":"execute_result"}],"source":["# Create SeDF\n","tbl_df2 = pd.DataFrame.spatial.from_table(\n"," filename=\"./sedf_data/cities/cities.gdb/cities_table_export\")\n","tbl_df2.head(2)"]},{"cell_type":"markdown","metadata":{},"source":["> A Pandas DataFrame without any spatial information is returned.\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Using the `from_layer()` method\n","\n","A `SeDF` can be created from hosted non-spatial data using the[`from_layer()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=from_layer#arcgis.features.GeoAccessor.from_layer) method.\n"]},{"cell_type":"code","execution_count":67,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:08.892350Z","start_time":"2021-11-11T22:36:08.618492Z"}},"outputs":[{"data":{"text/html":["
\n"," sedf_major_cities_table\n"," \n"," Table Layer by api_data_owner\n"," Last Modified: November 11, 2021\n"," 0 comments, 4 views\n","
\n","
\n"," "],"text/plain":[""]},"execution_count":67,"metadata":{},"output_type":"execute_result"}],"source":["# Get table item\n","tbl_item = agol_gis.content.get(\"b022d30f881f478f8155153b9205ce12\")\n","tbl_item"]},{"cell_type":"code","execution_count":68,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:09.836988Z","start_time":"2021-11-11T22:36:08.897350Z"}},"outputs":[{"data":{"text/plain":["
"]},"execution_count":68,"metadata":{},"output_type":"execute_result"}],"source":["# Get table url\n","tbl = tbl_item.tables[0]\n","tbl"]},{"cell_type":"code","execution_count":69,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:11.687513Z","start_time":"2021-11-11T22:36:09.841640Z"}},"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
CLASS
\n","
OBJECTID
\n","
PLACEFIPS
\n","
POP2010
\n","
POPULATION
\n","
POP_CLASS
\n","
STFIPS
\n","
\n"," \n"," \n","
\n","
0
\n","
city
\n","
1
\n","
1601990
\n","
13816
\n","
15181
\n","
6
\n","
16
\n","
\n","
\n","
1
\n","
city
\n","
2
\n","
1607840
\n","
11899
\n","
11946
\n","
6
\n","
16
\n","
\n"," \n","
\n","
"],"text/plain":[" CLASS OBJECTID PLACEFIPS POP2010 POPULATION POP_CLASS STFIPS\n","0 city 1 1601990 13816 15181 6 16\n","1 city 2 1607840 11899 11946 6 16"]},"execution_count":69,"metadata":{},"output_type":"execute_result"}],"source":["tbl_df2 = pd.DataFrame.spatial.from_layer(tbl)\n","tbl_df2.head(2)"]},{"cell_type":"markdown","metadata":{},"source":["> A Pandas DataFrame without any spatial information is returned.\n"]},{"cell_type":"markdown","metadata":{},"source":["### Read in data from '_lite and portable_' databases\n"]},{"cell_type":"markdown","metadata":{},"source":["Geospatial data stored in a [mobile geodatabase](https://pro.arcgis.com/en/pro-app/latest/help/data/geodatabases/manage-mobile-gdb/mobile-geodatabases.htm) (.geodatabase) or a [SQLite Database](https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/create-sqlite-database.htm) can be easily accessed using the [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor).\n","\n","- A mobile geodatabase (.geodatabase) is a collection of various types of GIS datasets contained in a single file on disk that can store, query, and manage spatial and nonspatial data. Mobile geodatabases are stored in an SQLite database.\n","\n","- SQLite is a full-featured relational database with the advantage of being portable and interoperable making it ubiquitous in mobile app development.\n","\n","The [`from_featureclass()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?arcgis.features.GeoAccessor.from_featureclass#arcgis.features.GeoAccessor.from_featureclass) method can be used to create a `SeDF` by reading in data from these databases. Let's look at some examples.\n"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Note: The operations below can only be performed in an environment that containsarcpy.\n","\n","
\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Read from a mobile geodatabase\n"]},{"cell_type":"code","execution_count":70,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:12.166989Z","start_time":"2021-11-11T22:36:11.692511Z"}},"outputs":[{"data":{"text/plain":["(3886, 51)"]},"execution_count":70,"metadata":{},"output_type":"execute_result"}],"source":["# Reading from mobile geodatabase\n","mobile_gdb_df = pd.DataFrame.spatial.from_featureclass(\n"," location=\"./sedf_data/cities/cities_mobile.geodatabase/main.cities\")\n","mobile_gdb_df.shape"]},{"cell_type":"code","execution_count":71,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:12.212993Z","start_time":"2021-11-11T22:36:12.171999Z"}},"outputs":[{"data":{"text/html":["
"],"text/plain":[" OBJECTID age_10_14 age_15_19 age_20_24 age_25_34 age_35_44 age_45_54 \\\n","0 1 1313 1058 734 2031 1767 1446 \n","1 2 890 817 818 1799 1235 1330 \n","\n"," age_55_64 age_5_9 age_65_74 ... placefips pop2010 population \\\n","0 1136 1503 665 ... 1601990 13816 15181 \n","1 1143 1099 721 ... 1607840 11899 11946 \n","\n"," pop_class renter_occ st stfips vacant white \\\n","0 6 1271 ID 16 271 13002 \n","1 6 1441 ID 16 318 9893 \n","\n"," SHAPE \n","0 {\"x\": -12462673.7237, \"y\": 5384674.994099997, ... \n","1 {\"x\": -12506251.314, \"y\": 5341537.793499999, \"... \n","\n","[2 rows x 51 columns]"]},"execution_count":74,"metadata":{},"output_type":"execute_result"}],"source":["# Check head\n","sqlite_df.head(2)"]},{"cell_type":"code","execution_count":75,"metadata":{"ExecuteTime":{"end_time":"2021-11-11T22:36:12.697990Z","start_time":"2021-11-11T22:36:12.685991Z"}},"outputs":[{"data":{"text/plain":["['point']"]},"execution_count":75,"metadata":{},"output_type":"execute_result"}],"source":["# Check geometry type\n","sqlite_df.spatial.geometry_type"]},{"cell_type":"markdown","metadata":{},"source":["> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created.\n"]},{"cell_type":"markdown","metadata":{},"source":["## Conclusion\n"]},{"cell_type":"markdown","metadata":{},"source":["In this guide, we explored how [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor) (SeDF) can be used to read spatial data from various formats. We started by reading data from web feature layers and using the `query()` operation to optimize performance and results. We explored reading data from various local data sources such as file geodatabase and shapefile. Next, we explained how data with address or coordinate information, in a geopandas dataframe, or in feather format can be used to create a SeDF. We also discussed creating SeDF from non-spatial table data. Towards the end, we also discussed how SeDF can be created using data from lite and portable databases.\n","\n","In the next part of the guide series, you will learn about exporting data using [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor).\n"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Note: Given the importance and popularity of Spatially enabled DataFrame, we are revisiting our documentation for this topic. Our goal is to enhance the existing documentation to showcase the various capabilities of Spatially enabled DataFrame in detail with even more examples this time.\n","\n","Creating quality documentation is time-consuming and exhaustive, but we are committed to providing you with the best experience possible. With that in mind, we will be rolling out the revamped guides on this topic as different parts of a guide series (like the Data Engineering or Geometry guide series). This is \"part-2\" of the guide series for Spatially Enabled DataFrame. You will continue to see the existing documentation as we revamp it to add new parts. Stay tuned for more on this topic.\n","\n","
\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Introduction\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In _part-1_ of this guide series, we started with an introduction to the [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor) (SeDF), the `spatial` and `geom` namespaces, and looked at a quick example of SeDF in action. In this part of the guide series, we will look at how GIS data can be accessed from various data formats using SeDF.\n",
+ "\n",
+ "GIS users work with different vector-based spatial data formats, like published layers on remote servers (web layers) and local data. The [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor) allows the users to read, write, and manipulate spatial data by bringing the data in-memory.\n",
+ "\n",
+ "The _SeDF_ integrates with Esri's [**ArcPy** site-package](http://pro.arcgis.com/en/pro-app/arcpy/get-started/what-is-arcpy-.htm), as well as the open source [pyshp](https://github.com/GeospatialPython/pyshp/), [shapely](https://github.com/Toblerity/Shapely) and [fiona](https://github.com/Toblerity/Fiona) packages. This means that the _SeDF_ can use either [shapely](https://pypi.org/project/Shapely/) or [arcpy](https://www.esri.com/en-us/arcgis/products/arcgis-python-libraries/libraries/arcpy) geometry engines to provide you with options for easily working with geospatial data, regardless of your platform. The _SeDF_ transforms the data into the formats you desire, allowing you to use Python functionality to analyze and visualize geographic information.\n",
+ "\n",
+ "Data can be read and scripted to automate workflows and be visualized on maps in a [Jupyter notebooks](../using-the-jupyter-notebook-environment/). Let's explore the options available for accessing GIS data with the versatile _Spatially enabled DataFrame_.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The data used in this guide is available as an [item](https://www.arcgis.com/home/item.html?id=c7140ae3d7ae4fd0817181461019aa75). We will start by importing some libraries and downloading and extracting the data needed for the analysis in this guide.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2021-11-22T19:51:37.257478Z",
+ "start_time": "2021-11-22T19:51:12.679381Z"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "# Import Libraries\n",
+ "import pandas as pd\n",
+ "from arcgis.features import GeoAccessor, GeoSeriesAccessor\n",
+ "from arcgis.gis import GIS\n",
+ "from IPython.display import display\n",
+ "import zipfile\n",
+ "import os\n",
+ "import shutil"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2021-11-22T19:51:38.872324Z",
+ "start_time": "2021-11-22T19:51:37.261479Z"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "# Create a GIS connection\n",
+ "gis = GIS()\n",
+ "agol_gis = GIS(\"https://www.arcgis.com\", \"arcgis_python\", \"amazing_arcgis_123\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2021-11-22T19:51:38.980325Z",
+ "start_time": "2021-11-22T19:51:38.876325Z"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ " USA Major Cities\n",
+ " \n",
+ " This layer presents the locations of cities within the United States with populations of approximately 10,000 or greater, all state capitals, and the national capital.Feature Layer Collection by esri_dm\n",
+ " Last Modified: May 19, 2020\n",
+ " 1 comments, 33,841,105 views\n",
+ "
\n",
+ " Major Ports\n",
+ " \n",
+ " This feature layer, utilizing data from the U.S. Department of Transportation, depicts Major Ports in the United States by total tonnage.Feature Layer Collection by Federal_User_Community\n",
+ " Last Modified: October 27, 2021\n",
+ " 0 comments, 157,223 views\n",
+ "
"
+ ],
+ "text/plain": [
+ " OBJECTID_1 OBJECTID ID PORT PORT_NAME GRAND_TOTA \\\n",
+ "0 1 1 124 C4947 Unalaska Island, AK 1652281 \n",
+ "1 2 2 85 C4410 Kahului, Maui, HI 3615449 \n",
+ "\n",
+ " FOREIGN_TO IMPORTS EXPORTS DOMESTIC BUFF_DIST ORIG_FID AnalysisArea \\\n",
+ "0 1236829 426251 810578 415452 5 1 78.528402 \n",
+ "1 20391 20391 0 3595058 5 2 78.528402 \n",
+ "\n",
+ " SHAPE \n",
+ "0 {\"rings\": [[[-18806114.3995, 7138385.537799999... \n",
+ "1 {\"rings\": [[[-17418472.419, 2388455.4312999994... "
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Create SeDF\n",
+ "sedf_fc = ports_buffer50.query().sdf\n",
+ "sedf_fc.head(2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2021-11-22T19:52:40.205296Z",
+ "start_time": "2021-11-22T19:52:40.199296Z"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['polygon']"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Check geometry type\n",
+ "sedf_fc.spatial.geometry_type"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created from a `FeatureCollection`.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Read in local GIS data\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Local geospatial data, such as [`Feature classes`](http://desktop.arcgis.com/en/arcmap/latest/manage-data/feature-classes/a-quick-tour-of-feature-classes.htm) and [`shapefiles`](http://desktop.arcgis.com/en/arcmap/latest/manage-data/shapefiles/what-is-a-shapefile.htm) can be easily accessed using the [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor). The [`from_featureclass()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?arcgis.features.GeoAccessor.from_featureclass#arcgis.features.GeoAccessor.from_featureclass) method can be used to access local data. Let's look at some examples.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Reading a Shapefile\n",
+ "\n",
+ "A locally stored [`shapefile`](http://desktop.arcgis.com/en/arcmap/latest/manage-data/shapefiles/what-is-a-shapefile.htm) can be accessed by passing the location of the file in the [`from_featureclass()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?arcgis.features.GeoAccessor.from_featureclass#arcgis.features.GeoAccessor.from_featureclass) method.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " Note: In the absence of arcpy, the PyShp package must be present in your current conda environment in order to read shapefiles. To check if PyShp is present, you can run the following in a cell:\n",
+ " \n",
+ " !conda list pyshp\n",
+ " \n",
+ "To install PyShp, you can run the following in a cell:\n",
+ " \n",
+ " !conda install pyshp\n",
+ "
\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2021-11-22T19:52:41.031721Z",
+ "start_time": "2021-11-22T19:52:40.207294Z"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(3886, 51)"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Reading from shape file\n",
+ "shp_df = pd.DataFrame.spatial.from_featureclass(\n",
+ " location=\"./sedf_data/cities/cities.shp\")\n",
+ "shp_df.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2021-11-22T19:52:41.058722Z",
+ "start_time": "2021-11-22T19:52:41.034722Z"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['point']"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "shp_df.spatial.geometry_type"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created from the `shapefile` stored locally.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "##### Shapefile from a URL\n",
+ "\n",
+ "The url of a zipped `shapefile` can be used to create a `SeDF` by passing the url as location in the `from_featureclass()` method. The image below shows how the operation can be performed.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " Note: This operation requires PyShp to be available in the environment.\n",
+ "\n",
+ "
\n"
+ ]
+ },
+ {
+ "attachments": {
+ "image.png": {
+ "image/png": "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kZFhX331lVv3BT7JGyREee9DsM2bN9v8+fNtw4YNRQQQziFSREVF2aJFi+zrr782bMQGBJH8/HxLTEx05/fu3et+l6d969ats4ULF1pycnIRu8qzDOWlG644IA6IA+KAOCAOiAPigDggDogDPw8OSCA5RsKIL7aiBBIaNtgJESJ27NhhF198sZ144olOrCCqI5imIvYp4+mnn7Y//vGPdsstt7joFWzz9r366qvOnpNOOsn+9Kc/2dixY40vEiFa1K1b18455xzj3GWXXWYzZsw4apHEl+friADzt7/9zX7729/auHHjXJmhaXxatkGbg8ePZL+0/I8kH6X9edxc1U5qJ3FAHBAHxAFxQBwQB8QBceDnxQF8tirxmV8vOPzctuUtkOD4syBMIDSwEIlBx+TYzJkz7dRTT7WIiAh3LnieNH4hbXA50iEuCDLB5a233rIrr7yyUCDh3MqVK+13v/udvffee5aQkGBr1qxxW86NGDHCnevatastX77ciStnn3227dmzx0WXhHOjgdws4AAGfp/j1Cc2NtZh8fHHH7tzpCFtMG+PJ+c8Jl7oCNbRnyMj9oN5+HQ+f9L4PILptP/zunmqvdRe4oA4IA6IA+KAOCAOiAPiQNXiAH6aBBLnHh+bP+UpkOCIx8XFWb169axWrVp25513uuiNt99+2wkTOOgMZTnjjDOsU6dOdv/999s999xjs2bNck79/v37rXHjxvbkk0+6oScdO3Z0+/369bO0tLRi5xAp7oaAQBAdHW1t27a1f/7znzZ06FBn01VXXeXsQHSYMGGCPfXUU/b73//emjVrZt27d3eiCEN/qAfXz507t1DkGTNmjP3iF79wokqoAFGcDRCbvDp06OAiRW6//XZXl9dee80RnjJSUlLsrLPOsqZNm9rjjz/u0g0cOLCwnti5fft2e+ONN6x27dp22223ubQM98EGBJ5HH33UlTF79mx7+eWXjfyx29vIvCoIMQ0aNHDXE7XSrVs3N5SI/IuzXceq1k1W7an2FAfEAXFAHBAHxAFxQBwQB34eHJBAcmx0kcJSy1sgufvuu+3CCy90Asjrr79uv/nNb+yCCy5wEQtERyxZssSJEn/+85+dYHDFFVcY+wgBiAaIK8cdd5wb7nLRRRfZDTfc4NIjDqCkleXUIwwQCcLQmNNPP92JDkR+/OEPf7Drr7/eCSSU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7O70VrEiSnnYkDZhsG1//g5bc/EfLGPJZ+WRZal5EAXCsJennnqq2HREX0RHR9uOHTuKPc9BPp/L0Jjk5BImpjVzw2IYglPcQhmhazAd+V900UVueMyRRo/4fJhctbQyiAyhHJ+G/eLmGGnbtq2dcMIJFhcX57PWVggIASEgBISAEBACQkAICAEhIASEQLkjUGkFEqJN0udOsO+GdrK08YOtIOtAuVeeDDOWzrbvhnS05I/7GtEmP8UycuRIF+GBEFIZF4QXBBK+pnMsFyJRiKjhyz9ahIAQEAJCQAgIASEgBISAEBACQkAIVCQClVcgqchaV4K8GRoTERFRCSwp3gQmaQ2dl6T4lBV3NCEhwbp16+aGDVVcKcpZCAgBISAEhIAQEAJCQAgIASEgBISAmQQSsUAICAEhIASEgBAQAkJACAgBISAEhIAQqPYISCCp9hQQAEJACAgBISAEhIAQEAJCQAgIASEgBISABBJxQAgIASEgBISAEBACQkAICAEhIASEgBCo9ghIIKn2FBAAQkAICAEhIASEgBAQAkJACAgBISAEhIAEEnFACAgBISAEhIAQEAJCQAgIASEgBISAEKj2CEggqfYUEABCQAgIASEgBISAEBACQkAICAEhIASEgAQScUAICAEhIASEgBAQAkJACAgBISAEhIAQqPYISCCp9hQQAEJACAgBISAEhIAQEAJCQAgIASEgBISABBJxQAgIASEgBISAEBACQkAICAEhIASEgBCo9ghIIKn2FBAAQkAICAEhIASEgBAQAkJACAgBISAEhIAEEnFACAgBISAEhIAQEAJCQAgIASEgBISAEKj2CEggqfYUEABCQAgIASEgBISAEBACQkAICAEhIASEgAQScUAICAEhIASEgBAQAkJACAgBISAEhIAQqPYISCCp9hQQAEJACAgBISAEhIAQEAJCQAgIASEgBISABBJxQAgIASEgBISAEBACQkAICAEhIASEgBCo9ghIIKn2FBAAQkAICAEhIASEgBAQAkJACAgBISAEhIAEEnFACAgBISAEhIAQEAJCQAgIASEgBISAEKj2CEggqfYUEABCQAgIASEgBISAEBACQkAICAEhIASEgASSCuBATk6OZWZm2oEDB8pcg+mC++FcqzRl4yuMhJE4IA6IA+KAOCAOiAPigDggDogD1ZMD+Ni5ublhe/0SSMKG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"
+ }
+ },
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "![image.png](attachment:image.png)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Reading a Featureclass\n",
+ "\n",
+ "A [featureclass](http://desktop.arcgis.com/en/arcmap/latest/manage-data/feature-classes/a-quick-tour-of-feature-classes.htm) can be accessed from a File Geodatabase by passing its location in the [`from_featureclass()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?arcgis.features.GeoAccessor.from_featureclass#arcgis.features.GeoAccessor.from_featureclass) method.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " Note: In the absence of arcpy, the Fiona package must be present in your current conda environment in order to read a featureclass.\n",
+ " To check if Fiona is present, you can run the following in a cell:\n",
+ " \n",
+ " !conda list fiona\n",
+ " \n",
+ "To install Fiona, you can run the following in a cell:\n",
+ " \n",
+ " !conda install fiona\n",
+ "
"
+ ],
+ "text/plain": [
+ " st name pop_class age_10_14 \\\n",
+ "0 ID Ammon 6 1313 \n",
+ "1 ID Blackfoot 6 890 \n",
+ "2 ID Boise City 8 12750 \n",
+ "3 ID Burley 6 790 \n",
+ "4 ID Caldwell 7 3803 \n",
+ "\n",
+ " SHAPE \n",
+ "0 {\"x\": -12462673.7237, \"y\": 5384674.994099997, ... \n",
+ "1 {\"x\": -12506251.314, \"y\": 5341537.793499999, \"... \n",
+ "2 {\"x\": -12938676.683600001, \"y\": 5403597.049500... \n",
+ "3 {\"x\": -12667411.4024, \"y\": 5241722.820600003, ... \n",
+ "4 {\"x\": -12989383.6745, \"y\": 5413226.487300001, ... "
+ ]
+ },
+ "execution_count": 49,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Check head\n",
+ "fcls_sql3_df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "##### Using `spatial_filter`\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "`spatial_filter` can be used to query the results by using a spatial relationship with another geometry. The spatial filtering is even more powerful when integrated with [Geoenrichment](https://developers.arcgis.com/python/guide/part1-introduction-to-geoenrichment/). Let's use this approach to filter our results for the state of Idaho. In this example, we will:\n",
+ "\n",
+ "- use `arcgis.geoenrichment.Country` to derive the geometries for the state of Idaho.\n",
+ "- use `arcgis.geometry.filters.intersects(geometry, sr=None)` to create a geometry filter object that filters results whose geometry intersects with the specified geometry (i.e. filter data points within the boundary of Idaho).\n",
+ "- pass the geometry filter object to `spatial_filter` to get desired results.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " Note: To perform enrichment operations, GeoEnrichment must be configured in your GIS organization. GeoEnrichment consumes credits, and you can learn more about credit consumption here. \n",
+ "
"
+ ],
+ "text/plain": [
+ " st name pop_class age_10_14 \\\n",
+ "0 ID Ammon 6 1313 \n",
+ "1 ID Blackfoot 6 890 \n",
+ "2 ID Boise City 8 12750 \n",
+ "3 ID Burley 6 790 \n",
+ "4 ID Caldwell 7 3803 \n",
+ "\n",
+ " SHAPE \n",
+ "0 {\"x\": -12462673.7237, \"y\": 5384674.994099997, ... \n",
+ "1 {\"x\": -12506251.314, \"y\": 5341537.793499999, \"... \n",
+ "2 {\"x\": -12938676.683600001, \"y\": 5403597.049500... \n",
+ "3 {\"x\": -12667411.4024, \"y\": 5241722.820600003, ... \n",
+ "4 {\"x\": -12989383.6745, \"y\": 5413226.487300001, ... "
+ ]
+ },
+ "execution_count": 73,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Check head\n",
+ "fcls_spfl_df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "> The result shows the data points filtered for Idaho as defined by the spatial filter.\n",
+ "\n",
+ "You can learn more about applying spatial filters in our [Working with geometries](https://developers.arcgis.com/python/guide/part4-spatial-filters/#arcgis.geometry.filters-module) guide series.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Read in DataFrame with Addresses\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "A `SeDF` can be easily created from a DataFrame with address information using the [`from_df()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?highlight=from_featureclass#arcgis.features.GeoAccessor.from_df) method. This method geocodes the addresses using the first configured geocoder in your GIS. The locations generated after geocoding are used as the geometry of the SeDF.\n",
+ "\n",
+ "You can learn more about geocoding in our [Finding Places with geocoding](https://developers.arcgis.com/python/guide/part1-what-is-geocoding/) guide series.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " Note: The from_df() method performs a batch geocoding operation which consumes credits. If a geocoder is not specified, then the first configured geocoder in your GIS organization will be used. Learn more about credit consumption here.\n",
+ "\n",
+ "To avoid credit consumption, you may specify your own `geocoder`.\n",
+ "\n",
+ "
\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's look at an example of using `from_df()`. We will read addresses into a DataFrame using the [`pd.read_csv()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html) method. Next, we will create a SeDF by passing the DataFrame and address column as parameters to the `from_df()` method.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2021-11-11T22:34:12.278791Z",
+ "start_time": "2021-11-11T22:34:12.267792Z"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
Address
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
602 Murray Cir, Sausalito, CA 94965
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
340 Stockton St, San Francisco, CA 94108
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
3619 Balboa St, San Francisco, CA 94121
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
1274 El Camino Real, San Bruno, CA 94066
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
625 Monterey Blvd, San Francisco, CA 94127
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Address\n",
+ "0 602 Murray Cir, Sausalito, CA 94965\n",
+ "1 340 Stockton St, San Francisco, CA 94108\n",
+ "2 3619 Balboa St, San Francisco, CA 94121\n",
+ "3 1274 El Camino Real, San Bruno, CA 94066\n",
+ "4 625 Monterey Blvd, San Francisco, CA 94127"
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Read the csv file with address into a DataFrame\n",
+ "orders_df = pd.read_csv(\"./sedf_data/cities/orders.csv\")\n",
+ "\n",
+ "# Check head\n",
+ "orders_df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "> The DataFrame shows a column with address information.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2021-11-11T22:35:55.437412Z",
+ "start_time": "2021-11-11T22:35:53.956939Z"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
"
+ ],
+ "text/plain": [
+ " OBJECTID PLACEFIPS POP2010 POPULATION POP_CLASS STFIPS CLASS \\\n",
+ "0 0 1601990 13816 15181 6 16 city \n",
+ "1 1 1607840 11899 11946 6 16 city \n",
+ "\n",
+ " ObjectId2 \n",
+ "0 1 \n",
+ "1 2 "
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "tbl_df2 = pd.DataFrame.spatial.from_layer(tbl)\n",
+ "tbl_df2.head(2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "> A Pandas DataFrame without any spatial information is returned.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Read in data from '_lite and portable_' databases\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Geospatial data stored in a [mobile geodatabase](https://pro.arcgis.com/en/pro-app/latest/help/data/geodatabases/manage-mobile-gdb/mobile-geodatabases.htm) (.geodatabase) or a [SQLite Database](https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/create-sqlite-database.htm) can be easily accessed using the [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor).\n",
+ "\n",
+ "- A mobile geodatabase (.geodatabase) is a collection of various types of GIS datasets contained in a single file on disk that can store, query, and manage spatial and nonspatial data. Mobile geodatabases are stored in an SQLite database.\n",
+ "\n",
+ "- SQLite is a full-featured relational database with the advantage of being portable and interoperable making it ubiquitous in mobile app development.\n",
+ "\n",
+ "The [`from_featureclass()`](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html?arcgis.features.GeoAccessor.from_featureclass#arcgis.features.GeoAccessor.from_featureclass) method can be used to create a `SeDF` by reading in data from these databases. Let's look at some examples.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " Note: The operations below can only be performed in an environment that containsarcpy.\n",
+ "\n",
+ "
"
+ ],
+ "text/plain": [
+ " OBJECTID age_10_14 age_15_19 age_20_24 age_25_34 age_35_44 age_45_54 \\\n",
+ "0 1 1313 1058 734 2031 1767 1446 \n",
+ "1 2 890 817 818 1799 1235 1330 \n",
+ "\n",
+ " age_55_64 age_5_9 age_65_74 ... placefips pop2010 population \\\n",
+ "0 1136 1503 665 ... 1601990 13816 15181 \n",
+ "1 1143 1099 721 ... 1607840 11899 11946 \n",
+ "\n",
+ " pop_class renter_occ st stfips vacant white \\\n",
+ "0 6 1271 ID 16 271 13002 \n",
+ "1 6 1441 ID 16 318 9893 \n",
+ "\n",
+ " SHAPE \n",
+ "0 {\"x\": -12462673.7237, \"y\": 5384674.994099997, ... \n",
+ "1 {\"x\": -12506251.314, \"y\": 5341537.793499999, \"... \n",
+ "\n",
+ "[2 rows x 51 columns]"
+ ]
+ },
+ "execution_count": 74,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Check head\n",
+ "sqlite_df.head(2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2021-11-11T22:36:12.697990Z",
+ "start_time": "2021-11-11T22:36:12.685991Z"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['point']"
+ ]
+ },
+ "execution_count": 75,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Check geometry type\n",
+ "sqlite_df.spatial.geometry_type"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "> The `spatial` namespace shows that a _Spatially enabled DataFrame_ has been created.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Conclusion\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In this guide, we explored how [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor) (SeDF) can be used to read spatial data from various formats. We started by reading data from web feature layers and using the `query()` operation to optimize performance and results. We explored reading data from various local data sources such as file geodatabase and shapefile. Next, we explained how data with address or coordinate information, in a geopandas dataframe, or in feather format can be used to create a SeDF. We also discussed creating SeDF from non-spatial table data. Towards the end, we also discussed how SeDF can be created using data from lite and portable databases.\n",
+ "\n",
+ "In the next part of the guide series, you will learn about exporting data using [**Spatially enabled DataFrame**](https://developers.arcgis.com/python/api-reference/arcgis.features.toc.html#geoaccessor).\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " Note: Given the importance and popularity of Spatially enabled DataFrame, we are revisiting our documentation for this topic. Our goal is to enhance the existing documentation to showcase the various capabilities of Spatially enabled DataFrame in detail with even more examples this time.\n",
+ "\n",
+ "Creating quality documentation is time-consuming and exhaustive, but we are committed to providing you with the best experience possible. With that in mind, we will be rolling out the revamped guides on this topic as different parts of a guide series (like the Data Engineering or Geometry guide series). This is \"part-2\" of the guide series for Spatially Enabled DataFrame. You will continue to see the existing documentation as we revamp it to add new parts. Stay tuned for more on this topic.\n",
+ "\n",
+ "