{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "VB1BL5vqw-eX"
},
"source": [
"# Session 3: Geocoding and Nearest Neighbour Analysis\n",
"*Written by Men Vuthy, 2021*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "55ylWqAjw-eb"
},
"source": [
"#### Overview:\n",
" \n",
"In this session, we will learn about how to geocode the list of addresses from OpenStreetMap to coordinates and how to conduct Nearest Neighbour Analysis (NNA) to find the nearest point from a collection of data points to the target. In this lesson, we go through different kinds of data manipulation and spatial analysis, especially we will learn how to write a definition function for NNA. \n",
"\n",
"After this session, you will understand how to:\n",
"\n",
"* Convert location names to coordinates\n",
"* Geocode a set of addresses to coordinate data from OpenStreetMap\n",
"* Plot those addresses location in a map\n",
"* Conduct spatial queries. Ex: finding points in polygon\n",
"* Find the nearest locations or points between two sets of data."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "a6HPwncrw-eb"
},
"source": [
"**Downloading data**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4tOk2fiow-ec"
},
"source": [
"The data used in this session is a list of random addresses in New York, The United States and available at [github](https://gist.github.com/HeroicEric/1102788). However, the original dataset seems a lot which will lengthen the process time, and also some address is not correctly written. For this reason, it is reduced and revised to a better version of address and easy to run in Python. \n",
"\n",
"Dataset: \n",
"\n",
"- addresses.txt\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "U4K1u7mBw-ed"
},
"source": [
"#### 1. Introduction to Geocoding in Geopandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UsS4QtITw-ed"
},
"source": [
"`Geocoding` is the process supported by `geopandas` to convert place names or addresses to location on Earth through [geopy](https://geopy.readthedocs.io/en/stable/). Geopy and other geocoding libraries make it easy to locate the coordinates of addresses, cities, countries, and landmarks across the glob by using web service providers. Geocoding services offered by Geopy includes:\n",
"\n",
"* [ArcGIS World Geocoding Service](https://developers.arcgis.com/rest/geocode/api-reference/overview-world-geocoding-service.htm)\n",
"* [Google Geocoding API](https://developers.google.com/maps/documentation/geocoding/overview)\n",
"* [MapQuest Open APIs](https://developer.mapquest.com/documentation/open/)\n",
"* etc.\n",
"\n",
"Most of available service providers may require parameters such as API keys and it is mostly not free. Therefore, the commonly-used service and often free of charge is [Open Street Map Nominatim](https://wiki.openstreetmap.org/wiki/Nominatim).\n",
"\n",
"In geopandas, there's a function called `geocode()`. This fuction can geocode a list of place names or addresses(string) and return a new form of addresses and point coordinates as a GeoDataFrame."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TWacQVkMw-ee"
},
"source": [
"**Geocode addresses using Nominatim service provider**\n",
"\n",
"To use OSM Nominatim, one must create a username to access the service. Click \n",
"[here](https://help.openstreetmap.org/users/)\n",
"to register an account to use Nominatim service.\n",
"\n",
"*Note: Remember to provide below information when using Nominatim service*\n",
"\n",
"- the name of service provider in `provider`. Ex: provider='nominatim'\n",
"- name of user in `user_agent` parameters. Ex: user_agent='geopy_osm'\n",
"- (optional) the time of how many seconds we will wait for getting response from the service in `timeout`. Ex: timeout=4"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ufI1YNhhw-ef"
},
"source": [
"#### a. Geocoding from a name list"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QEkmisaOw-ef"
},
"source": [
"Now let's geocode different place name of boroughs in New York City using dataset from `geopandas` directory, and plot those locations along with the detailed borough boundary. Read more about this example at [Geocoding](https://geopandas.org/docs/user_guide/geocoding.html)."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "Ojjew_Xqw-eg"
},
"outputs": [],
"source": [
"# Import the geocoding tool\n",
"import geopandas as gpd\n",
"from geopandas.tools import geocode"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "OxXuhUnVw-eg"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
BoroCode
\n",
"
BoroName
\n",
"
Shape_Leng
\n",
"
Shape_Area
\n",
"
geometry
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
5
\n",
"
Staten Island
\n",
"
330470.010332
\n",
"
1.623820e+09
\n",
"
MULTIPOLYGON (((970217.022 145643.332, 970227....
\n",
"
\n",
"
\n",
"
1
\n",
"
4
\n",
"
Queens
\n",
"
896344.047763
\n",
"
3.045213e+09
\n",
"
MULTIPOLYGON (((1029606.077 156073.814, 102957...
\n",
"
\n",
"
\n",
"
2
\n",
"
3
\n",
"
Brooklyn
\n",
"
741080.523166
\n",
"
1.937479e+09
\n",
"
MULTIPOLYGON (((1021176.479 151374.797, 102100...
\n",
"
\n",
"
\n",
"
3
\n",
"
1
\n",
"
Manhattan
\n",
"
359299.096471
\n",
"
6.364715e+08
\n",
"
MULTIPOLYGON (((981219.056 188655.316, 980940....
\n",
"
\n",
"
\n",
"
4
\n",
"
2
\n",
"
Bronx
\n",
"
464392.991824
\n",
"
1.186925e+09
\n",
"
MULTIPOLYGON (((1012821.806 229228.265, 101278...
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" BoroCode BoroName Shape_Leng Shape_Area \\\n",
"0 5 Staten Island 330470.010332 1.623820e+09 \n",
"1 4 Queens 896344.047763 3.045213e+09 \n",
"2 3 Brooklyn 741080.523166 1.937479e+09 \n",
"3 1 Manhattan 359299.096471 6.364715e+08 \n",
"4 2 Bronx 464392.991824 1.186925e+09 \n",
"\n",
" geometry \n",
"0 MULTIPOLYGON (((970217.022 145643.332, 970227.... \n",
"1 MULTIPOLYGON (((1029606.077 156073.814, 102957... \n",
"2 MULTIPOLYGON (((1021176.479 151374.797, 102100... \n",
"3 MULTIPOLYGON (((981219.056 188655.316, 980940.... \n",
"4 MULTIPOLYGON (((1012821.806 229228.265, 101278... "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Import data from geopandas directory which was already stored in your computer\n",
"new_york = gpd.read_file(gpd.datasets.get_path(\"nybb\"))\n",
"\n",
"# Read the dataframe\n",
"new_york"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"id": "wLbUPtKjw-eh"
},
"outputs": [
{
"data": {
"text/plain": [
"0 Staten Island\n",
"1 Queens\n",
"2 Brooklyn\n",
"3 Manhattan\n",
"4 Bronx\n",
"Name: BoroName, dtype: object"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Extract the name list from dataframe\n",
"boros = new_york.BoroName\n",
"boros"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "H370ohLJw-eh"
},
"source": [
"* With a list of borough names we created above, we can geocode these names using geopandas geocoding function called `geocode()`"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"id": "2NDuEF4Tw-eh"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
geometry
\n",
"
address
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
POINT (-74.14960 40.58346)
\n",
"
Staten Island, Richmond County, New York, Unit...
\n",
"
\n",
"
\n",
"
1
\n",
"
POINT (-73.82831 40.71351)
\n",
"
Queens, Queens County, New York, United States
\n",
"
\n",
"
\n",
"
2
\n",
"
POINT (-73.94972 40.65260)
\n",
"
Brooklyn, Kings County, New York, United States
\n",
"
\n",
"
\n",
"
3
\n",
"
POINT (-73.95989 40.78962)
\n",
"
Manhattan, New York County, New York, United S...
\n",
"
\n",
"
\n",
"
4
\n",
"
POINT (-73.87859 40.84665)
\n",
"
The Bronx, Bronx County, New York, United States
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" geometry \\\n",
"0 POINT (-74.14960 40.58346) \n",
"1 POINT (-73.82831 40.71351) \n",
"2 POINT (-73.94972 40.65260) \n",
"3 POINT (-73.95989 40.78962) \n",
"4 POINT (-73.87859 40.84665) \n",
"\n",
" address \n",
"0 Staten Island, Richmond County, New York, Unit... \n",
"1 Queens, Queens County, New York, United States \n",
"2 Brooklyn, Kings County, New York, United States \n",
"3 Manhattan, New York County, New York, United S... \n",
"4 The Bronx, Bronx County, New York, United States "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Geocode addresses using Nominatim. Here, I use \"geopy_osm\" username\n",
"geo = geocode(boros, provider='nominatim', user_agent='geopy_osm', timeout=4)\n",
"\n",
"# Print out result\n",
"geo"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "oOPybEM-w-ei"
},
"source": [
"As you can see, from the name of boroughs we can retrieve the geometry of each location as point objects and also addresses in a well-written format.\n",
"\n",
"Now let's plot these locations on New York city map."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"id": "_Rg4hjDkw-ei"
},
"outputs": [],
"source": [
"# Import plotting module\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fJaqIEGyw-ei"
},
"source": [
"Before plotting, we have to confirm that both location and area boundary has the same coordinate reference system"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"id": "3hfZUe1_w-ei"
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# confirm crs\n",
"new_york.crs == geo.crs"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4JRYRlt1w-ej"
},
"source": [
"Okay, let's matching its coordinate system"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"id": "PbeqDWMlw-ej"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\a9418\\AppData\\Roaming\\Python\\Python37\\site-packages\\pyproj\\crs\\crs.py:68: FutureWarning: '+init=:' syntax is deprecated. ':' is the preferred initialization method. When making the change, be mindful of axis order changes: https://pyproj4.github.io/pyproj/stable/gotchas.html#axis-order-changes-in-proj-6\n",
" return _prepare_from_string(\" \".join(pjargs))\n"
]
}
],
"source": [
"# change crs\n",
"New_York = new_york.to_crs(geo.crs)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"id": "X08NNfGCw-ej"
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Let's plot the borough locations on a map\n",
"ax = New_York.plot()\n",
"geo.plot(ax=ax, color='yellow')\n",
"\n",
"plt.show();"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "RUswzAM7w-ej"
},
"source": [
"#### b. Geocoding from address file"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "SS1mw-Enw-ej"
},
"source": [
"Here, we will geocode the addresses in New York state stored in a text file called `address_random.txt`.\n",
"\n",
"The first 6 rows of data look like this:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ID; address\n",
"\n",
"100; 141 Washington Ave Extension Albany NY 12205\n",
"\n",
"101; 2055 Niagara Falls Blvd Amherst NY 14228\n",
"\n",
"102; 297 Grant Avenue Auburn NY 13021\n",
"\n",
"103; 4133 Veterans Memorial Drive Batavia NY 14020\n",
"\n",
"104; 3191 County rd 10 Canandaigua NY 14424"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 354
},
"executionInfo": {
"elapsed": 430,
"status": "error",
"timestamp": 1639465643890,
"user": {
"displayName": "geo spatialyst",
"photoUrl": "https://lh3.googleusercontent.com/a/default-user=s64",
"userId": "05471490511116101606"
},
"user_tz": -540
},
"id": "U8LINBS0w-ek",
"outputId": "30f5b5b8-9114-49bc-9721-e8532fbf8368"
},
"outputs": [],
"source": [
"# First, import necessary modules\n",
"import pandas as pd\n",
"import geopandas as gpd"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lGANzzPYw-ek"
},
"source": [
"We can read the data of `txt`, `csv`, or `xlsx` into a Pandas DataFrame using the `read_csv()` -function:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"executionInfo": {
"elapsed": 4,
"status": "aborted",
"timestamp": 1639465643888,
"user": {
"displayName": "geo spatialyst",
"photoUrl": "https://lh3.googleusercontent.com/a/default-user=s64",
"userId": "05471490511116101606"
},
"user_tz": -540
},
"id": "LFY1aRxrw-ek"
},
"outputs": [],
"source": [
"# determine file path\n",
"fp = 'data/addresses.txt'\n",
"\n",
"# Read address file \n",
"data = pd.read_csv(fp, delimiter = ';')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"executionInfo": {
"elapsed": 4,
"status": "aborted",
"timestamp": 1639465643889,
"user": {
"displayName": "geo spatialyst",
"photoUrl": "https://lh3.googleusercontent.com/a/default-user=s64",
"userId": "05471490511116101606"
},
"user_tz": -540
},
"id": "8vCkKFyUw-ek"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The total address is: 23\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
id
\n",
"
addr
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
100
\n",
"
Walmart Supercenter, 141, Washington Avenue E...
\n",
"
\n",
"
\n",
"
1
\n",
"
101
\n",
"
2055, Niagara Falls Boulevard, Amherst, Erie ...
\n",
"
\n",
"
\n",
"
2
\n",
"
102
\n",
"
Walmart Supercenter, 297, Grant Avenue, City ...
\n",
"
\n",
"
\n",
"
3
\n",
"
103
\n",
"
Walmart Supercenter, 4133, Veterans Memorial ...
\n",
"
\n",
"
\n",
"
4
\n",
"
104
\n",
"
3191, County Road 4, Town of Canandaigua, Ont...
\n",
"
\n",
"
\n",
"
5
\n",
"
105
\n",
"
30, Broome Street, Catskill, Town of Catskill...
\n",
"
\n",
"
\n",
"
6
\n",
"
106
\n",
"
161, Centereach Mall, Suffolk County, New Yor...
\n",
"
\n",
"
\n",
"
7
\n",
"
108
\n",
"
Citi Trends, 100, East Thruway Plaza Drive, T...
\n",
"
\n",
"
\n",
"
8
\n",
"
109
\n",
"
Walmart Supercenter, 5033, Transit Road, East...
\n",
"
\n",
"
\n",
"
9
\n",
"
110
\n",
"
Runnings, 3949, State Route 31, Town of Clay,...
\n",
"
\n",
"
\n",
"
10
\n",
"
111
\n",
"
Walmart Supercenter, 139, Merchant Place, Tow...
\n",
"
\n",
"
\n",
"
11
\n",
"
112
\n",
"
279, Troy Road, Town of East Greenbush, Renss...
\n",
"
\n",
"
\n",
"
12
\n",
"
114
\n",
"
25737 US 11 Evans Mills NY 13637
\n",
"
\n",
"
\n",
"
13
\n",
"
115
\n",
"
10401 Bennett Road Fredonia NY 14063
\n",
"
\n",
"
\n",
"
14
\n",
"
117
\n",
"
4300 Lakeville Road Geneseo NY 14454
\n",
"
\n",
"
\n",
"
15
\n",
"
118
\n",
"
200 Dutch Meadows Ln Glenville NY 12302
\n",
"
\n",
"
\n",
"
16
\n",
"
119
\n",
"
100 Elm Ridge Center Dr Greece NY 14626
\n",
"
\n",
"
\n",
"
17
\n",
"
120
\n",
"
1549 9 Halfmoon NY 12065
\n",
"
\n",
"
\n",
"
18
\n",
"
121
\n",
"
5360 Southwestern Blvd Hamburg NY 14075
\n",
"
\n",
"
\n",
"
19
\n",
"
123
\n",
"
2 Gannett Dr Johnson City NY 13790
\n",
"
\n",
"
\n",
"
20
\n",
"
124
\n",
"
350 E Fairmount Ave Lakewood NY 14750
\n",
"
\n",
"
\n",
"
21
\n",
"
125
\n",
"
4975 Transit Rd Lancaster NY 14086
\n",
"
\n",
"
\n",
"
22
\n",
"
126
\n",
"
579 Troy-Schenectady Road Latham NY 12110
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id addr\n",
"0 100 Walmart Supercenter, 141, Washington Avenue E...\n",
"1 101 2055, Niagara Falls Boulevard, Amherst, Erie ...\n",
"2 102 Walmart Supercenter, 297, Grant Avenue, City ...\n",
"3 103 Walmart Supercenter, 4133, Veterans Memorial ...\n",
"4 104 3191, County Road 4, Town of Canandaigua, Ont...\n",
"5 105 30, Broome Street, Catskill, Town of Catskill...\n",
"6 106 161, Centereach Mall, Suffolk County, New Yor...\n",
"7 108 Citi Trends, 100, East Thruway Plaza Drive, T...\n",
"8 109 Walmart Supercenter, 5033, Transit Road, East...\n",
"9 110 Runnings, 3949, State Route 31, Town of Clay,...\n",
"10 111 Walmart Supercenter, 139, Merchant Place, Tow...\n",
"11 112 279, Troy Road, Town of East Greenbush, Renss...\n",
"12 114 25737 US 11 Evans Mills NY 13637\n",
"13 115 10401 Bennett Road Fredonia NY 14063\n",
"14 117 4300 Lakeville Road Geneseo NY 14454\n",
"15 118 200 Dutch Meadows Ln Glenville NY 12302\n",
"16 119 100 Elm Ridge Center Dr Greece NY 14626\n",
"17 120 1549 9 Halfmoon NY 12065\n",
"18 121 5360 Southwestern Blvd Hamburg NY 14075\n",
"19 123 2 Gannett Dr Johnson City NY 13790\n",
"20 124 350 E Fairmount Ave Lakewood NY 14750\n",
"21 125 4975 Transit Rd Lancaster NY 14086\n",
"22 126 579 Troy-Schenectady Road Latham NY 12110"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Let's check the file\n",
"print('The total address is:',len(data))\n",
"\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"executionInfo": {
"elapsed": 5,
"status": "aborted",
"timestamp": 1639465643890,
"user": {
"displayName": "geo spatialyst",
"photoUrl": "https://lh3.googleusercontent.com/a/default-user=s64",
"userId": "05471490511116101606"
},
"user_tz": -540
},
"id": "M29Gq8YTw-ek"
},
"outputs": [],
"source": [
"# Import the geocoding tool\n",
"from geopandas.tools import geocode\n",
"\n",
"# Geocode addresses using Nominatim. Remember to provide a custom \"application name\" in the user_agent parameter!\n",
"geo_address = geocode(data.addr, provider='nominatim', user_agent='autogis_xx', timeout=4)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gP-XxaJ_w-ek"
},
"source": [
"Great job! We now get a GeoDataFrame that contains `geometry` of Shapely Point -objects based on addresses. Surely, this dataframe can be exported to a Shapefile using the method from Session-2. However, the `id` column is missing here; hence, we need to join the information from `data` into our new dataframe `geo_address` by using *Table Join*."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VJCYKz1pw-el"
},
"source": [
"#### c. Table join"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "-eBT8_20w-el"
},
"source": [
"In GIS analyses, table join is a procedure which combine data from different tables based on common key attribute. In Python, it can be done easily in Pandas/Geopandas using `join()`. In order to join two tables together, we need to make sure that the order and number of the records are **the same** in both DataFrame.\n",
"\n",
"Now, we will use `join()` -function to merge `data` and `geo_address` together based on index (by default) as both DataFrame already have the same order and number of rows."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"id": "Yqn9UZU7w-el"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
geometry
\n",
"
address
\n",
"
id
\n",
"
addr
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
POINT (-73.84703 42.69495)
\n",
"
Walmart Supercenter, 141, Washington Avenue Ex...
\n",
"
100
\n",
"
Walmart Supercenter, 141, Washington Avenue E...
\n",
"
\n",
"
\n",
"
1
\n",
"
POINT (-78.82218 43.01100)
\n",
"
2055, Niagara Falls Boulevard, Town of Amherst...
\n",
"
101
\n",
"
2055, Niagara Falls Boulevard, Amherst, Erie ...
\n",
"
\n",
"
\n",
"
2
\n",
"
POINT (-76.54815 42.95406)
\n",
"
Walmart Supercenter, 297, Grant Avenue, City o...
\n",
"
102
\n",
"
Walmart Supercenter, 297, Grant Avenue, City ...
\n",
"
\n",
"
\n",
"
3
\n",
"
POINT (-78.20803 43.01360)
\n",
"
Walmart Supercenter, 4133, Veterans Memorial D...
\n",
"
103
\n",
"
Walmart Supercenter, 4133, Veterans Memorial ...
\n",
"
\n",
"
\n",
"
4
\n",
"
POINT (-77.24682 42.90172)
\n",
"
3191, County Road 4, Town of Canandaigua, Onta...
\n",
"
104
\n",
"
3191, County Road 4, Town of Canandaigua, Ont...
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" geometry \\\n",
"0 POINT (-73.84703 42.69495) \n",
"1 POINT (-78.82218 43.01100) \n",
"2 POINT (-76.54815 42.95406) \n",
"3 POINT (-78.20803 43.01360) \n",
"4 POINT (-77.24682 42.90172) \n",
"\n",
" address id \\\n",
"0 Walmart Supercenter, 141, Washington Avenue Ex... 100 \n",
"1 2055, Niagara Falls Boulevard, Town of Amherst... 101 \n",
"2 Walmart Supercenter, 297, Grant Avenue, City o... 102 \n",
"3 Walmart Supercenter, 4133, Veterans Memorial D... 103 \n",
"4 3191, County Road 4, Town of Canandaigua, Onta... 104 \n",
"\n",
" addr \n",
"0 Walmart Supercenter, 141, Washington Avenue E... \n",
"1 2055, Niagara Falls Boulevard, Amherst, Erie ... \n",
"2 Walmart Supercenter, 297, Grant Avenue, City ... \n",
"3 Walmart Supercenter, 4133, Veterans Memorial ... \n",
"4 3191, County Road 4, Town of Canandaigua, Ont... "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"join_df = geo_address.join(data)\n",
"join_df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2wYXqezDw-el"
},
"source": [
"* Let's check the type of `join_df` table"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"id": "wPjxloOtw-el"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"{'init': 'epsg:4326', 'no_defs': True}\n"
]
}
],
"source": [
"print(type(join_df))\n",
"print(join_df.crs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "M8O69N2qw-el"
},
"source": [
"As a result, we have a new GeoDataFrame called `join_df` where we have both original columns plus a new column for `geometry`. So now, it is easy to save it as a Shapefile to our result directory."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"id": "5EPcnLIiw-el"
},
"outputs": [],
"source": [
"# output file path\n",
"outfp = 'result/addresses.shp'\n",
"\n",
"# save to Shapefile\n",
"join_df.to_file(outfp)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4rnozO7Mw-em"
},
"source": [
"Finally, we have sucessfully geocoded the addresses into Points and made a Shapefile. Let's go to Shapefile and open it in QGIS.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "IP-mz2Ddw-em"
},
"source": [
"**Plotting those addresses on New York State boundary**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ua9Efz6yw-em"
},
"source": [
"Here, we will make a plot of those addresses on New York State boundary so as to visualize where they are located exactly on a map.\n",
"\n",
"First, let's import New York State boundary into Python."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"id": "ueHBTe-0w-em"
},
"outputs": [],
"source": [
"# Set filepath\n",
"fp = \"data/NY_counties_shoreline.geojson\"\n",
"\n",
"# Read file using gpd.read_file()\n",
"ny_state = gpd.read_file(fp)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
geometry
\n",
"
address
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
POINT (-73.84703 42.69495)
\n",
"
Walmart Supercenter, 141, Washington Avenue Ex...
\n",
"
\n",
"
\n",
"
1
\n",
"
POINT (-78.82218 43.01100)
\n",
"
2055, Niagara Falls Boulevard, Town of Amherst...
\n",
"
\n",
"
\n",
"
2
\n",
"
POINT (-76.54815 42.95406)
\n",
"
Walmart Supercenter, 297, Grant Avenue, City o...
\n",
"
\n",
"
\n",
"
3
\n",
"
POINT (-78.20803 43.01360)
\n",
"
Walmart Supercenter, 4133, Veterans Memorial D...
\n",
"
\n",
"
\n",
"
4
\n",
"
POINT (-77.24682 42.90172)
\n",
"
3191, County Road 4, Town of Canandaigua, Onta...
\n",
"
\n",
"
\n",
"
5
\n",
"
POINT (-73.87106 42.21629)
\n",
"
30, Broome Street, Catskill, Town of Catskill,...
\n",
"
\n",
"
\n",
"
6
\n",
"
POINT (-73.08255 40.85993)
\n",
"
161, Centereach Mall, Suffolk County, New York...
\n",
"
\n",
"
\n",
"
7
\n",
"
POINT (-78.77824 42.90475)
\n",
"
Citi Trends, 100, East Thruway Plaza Drive, Th...
\n",
"
\n",
"
\n",
"
8
\n",
"
POINT (-78.69387 42.98329)
\n",
"
Walmart Supercenter, 5033, Transit Road, Easte...
\n",
"
\n",
"
\n",
"
9
\n",
"
POINT (-76.24021 43.18815)
\n",
"
Runnings, 3949, State Route 31, Town of Clay, ...
\n",
"
\n",
"
\n",
"
10
\n",
"
POINT (-74.45542 42.68246)
\n",
"
Walmart Supercenter, 139, Merchant Place, Town...
\n",
"
\n",
"
\n",
"
11
\n",
"
POINT (-73.69970 42.64295)
\n",
"
KeyBank, 279, Troy Road, Town of East Greenbus...
\n",
"
\n",
"
\n",
"
12
\n",
"
POINT (-75.82170 44.07066)
\n",
"
US 11, Calcium, Le Ray, Jefferson County, New ...
\n",
"
\n",
"
\n",
"
13
\n",
"
POINT (-79.31335 42.45387)
\n",
"
Walmart Supercenter, 10401, Bennett Road, Fred...
\n",
"
\n",
"
\n",
"
14
\n",
"
POINT (-77.78476 42.79901)
\n",
"
4300, Lakeville Road, Village of Geneseo, Town...
\n",
"
\n",
"
\n",
"
15
\n",
"
POINT (-73.94423 42.84172)
\n",
"
200, Dutch Meadows Lane, Town of Glenville, Sc...
\n",
"
\n",
"
\n",
"
16
\n",
"
POINT (-77.73073 43.21536)
\n",
"
100, Elm Ridge Center Drive, Elm Ridge Center,...
\n",
"
\n",
"
\n",
"
17
\n",
"
POINT (-73.73709 42.84462)
\n",
"
Halfmoon, Town of Halfmoon, Saratoga County, N...
\n",
"
\n",
"
\n",
"
18
\n",
"
POINT (-78.87170 42.74320)
\n",
"
Walmart Supercenter, 5360, Southwestern Boulev...
\n",
"
\n",
"
\n",
"
19
\n",
"
POINT (-75.94702 42.11535)
\n",
"
Walmart Supercenter, 2, Gannett Drive, Village...
\n",
"
\n",
"
\n",
"
20
\n",
"
POINT (-79.29999 42.09681)
\n",
"
Walmart Supercenter, 350, East Fairmount Avenu...
\n",
"
\n",
"
\n",
"
21
\n",
"
POINT (-78.69682 42.88252)
\n",
"
4975, Transit Road, Town of Lancaster, Erie Co...
\n",
"
\n",
"
\n",
"
22
\n",
"
POINT (-73.76341 42.75302)
\n",
"
579, Troy Schenectady Road, Latham, Town of Co...
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" geometry \\\n",
"0 POINT (-73.84703 42.69495) \n",
"1 POINT (-78.82218 43.01100) \n",
"2 POINT (-76.54815 42.95406) \n",
"3 POINT (-78.20803 43.01360) \n",
"4 POINT (-77.24682 42.90172) \n",
"5 POINT (-73.87106 42.21629) \n",
"6 POINT (-73.08255 40.85993) \n",
"7 POINT (-78.77824 42.90475) \n",
"8 POINT (-78.69387 42.98329) \n",
"9 POINT (-76.24021 43.18815) \n",
"10 POINT (-74.45542 42.68246) \n",
"11 POINT (-73.69970 42.64295) \n",
"12 POINT (-75.82170 44.07066) \n",
"13 POINT (-79.31335 42.45387) \n",
"14 POINT (-77.78476 42.79901) \n",
"15 POINT (-73.94423 42.84172) \n",
"16 POINT (-77.73073 43.21536) \n",
"17 POINT (-73.73709 42.84462) \n",
"18 POINT (-78.87170 42.74320) \n",
"19 POINT (-75.94702 42.11535) \n",
"20 POINT (-79.29999 42.09681) \n",
"21 POINT (-78.69682 42.88252) \n",
"22 POINT (-73.76341 42.75302) \n",
"\n",
" address \n",
"0 Walmart Supercenter, 141, Washington Avenue Ex... \n",
"1 2055, Niagara Falls Boulevard, Town of Amherst... \n",
"2 Walmart Supercenter, 297, Grant Avenue, City o... \n",
"3 Walmart Supercenter, 4133, Veterans Memorial D... \n",
"4 3191, County Road 4, Town of Canandaigua, Onta... \n",
"5 30, Broome Street, Catskill, Town of Catskill,... \n",
"6 161, Centereach Mall, Suffolk County, New York... \n",
"7 Citi Trends, 100, East Thruway Plaza Drive, Th... \n",
"8 Walmart Supercenter, 5033, Transit Road, Easte... \n",
"9 Runnings, 3949, State Route 31, Town of Clay, ... \n",
"10 Walmart Supercenter, 139, Merchant Place, Town... \n",
"11 KeyBank, 279, Troy Road, Town of East Greenbus... \n",
"12 US 11, Calcium, Le Ray, Jefferson County, New ... \n",
"13 Walmart Supercenter, 10401, Bennett Road, Fred... \n",
"14 4300, Lakeville Road, Village of Geneseo, Town... \n",
"15 200, Dutch Meadows Lane, Town of Glenville, Sc... \n",
"16 100, Elm Ridge Center Drive, Elm Ridge Center,... \n",
"17 Halfmoon, Town of Halfmoon, Saratoga County, N... \n",
"18 Walmart Supercenter, 5360, Southwestern Boulev... \n",
"19 Walmart Supercenter, 2, Gannett Drive, Village... \n",
"20 Walmart Supercenter, 350, East Fairmount Avenu... \n",
"21 4975, Transit Road, Town of Lancaster, Erie Co... \n",
"22 579, Troy Schenectady Road, Latham, Town of Co... "
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"geo_address"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"id": "ioODGPkww-em"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\a9418\\AppData\\Roaming\\Python\\Python37\\site-packages\\pyproj\\crs\\crs.py:68: FutureWarning: '+init=:' syntax is deprecated. ':' is the preferred initialization method. When making the change, be mindful of axis order changes: https://pyproj4.github.io/pyproj/stable/gotchas.html#axis-order-changes-in-proj-6\n",
" return _prepare_from_string(\" \".join(pjargs))\n"
]
}
],
"source": [
"# Matching the coordinate system of the boundary and addresses\n",
"NY_state = ny_state.to_crs(geo_address.crs)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"id": "3lgjA68gw-em"
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Let's plot the locations on a map\n",
"ax = NY_state.plot(facecolor='#28B463', edgecolor='white')\n",
"geo_address.plot(ax=ax, color='#283747', markersize = 5, label = 'address')\n",
"\n",
"# Customize the plot\n",
"plt.title('New York State')\n",
"plt.xlabel('Longitude')\n",
"plt.ylabel('Latitude')\n",
"plt.legend(loc=2) # 2 is for 'upper left'\n",
"plt.savefig('result/addresses in New York.png', dpi = 150)\n",
"\n",
"plt.show();"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "iBkJjDjAw-em"
},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vSv6jteqw-em"
},
"source": [
"#### d. Point in Polygon"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Tv4v2dc7w-en"
},
"source": [
"**How can we check if point is inside or outside a polygon?**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Gvmn3kMQw-en"
},
"source": [
"Finding out if a certain point is located inside or outside of an area is a basic geospatial operations (e.g to select data based on location). As in our case, we want to select all data points or addresses in the West zone of New York state. \n",
"\n",
"There are two basic ways of conducting Point in Polygon using Shapely:\n",
"1. use `.within()`, a function for checking if a point is within a polygon\n",
"2. use `.contains()`, a fuction for checking if a polygon contains a point\n",
"\n",
"Read more about other operation functions such as intersect, touches, etc in [Shapely Documentation](https://shapely.readthedocs.io/en/stable/manual.html)."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "uao9wQaXw-en"
},
"source": [
"**Spatial query**\n",
"\n",
"Fundamentally, spatial queries are typical first step of workflow in spatial analysis. Let's start by extract the West zone of New York State boundary that we imported earlier."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"id": "gnOMp5gmw-en"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
NAME
\n",
"
ABBREV
\n",
"
GNIS_ID
\n",
"
FIPS_CODE
\n",
"
SWIS
\n",
"
NYSP_ZONE
\n",
"
POP1990
\n",
"
POP2000
\n",
"
POP2010
\n",
"
POP2020
\n",
"
DOS_LL
\n",
"
DOSLL_DATE
\n",
"
NYC
\n",
"
CALC_SQ_MI
\n",
"
DATEMOD
\n",
"
Shape_Leng
\n",
"
Shape_Area
\n",
"
geometry
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
Albany
\n",
"
ALBA
\n",
"
974099
\n",
"
36001
\n",
"
010000
\n",
"
East
\n",
"
292594
\n",
"
294565
\n",
"
304204
\n",
"
0
\n",
"
None
\n",
"
None
\n",
"
N
\n",
"
532.791779
\n",
"
2017-11-10
\n",
"
166077.834242
\n",
"
1.379924e+09
\n",
"
MULTIPOLYGON (((-73.67694 42.78341, -73.67728 ...
\n",
"
\n",
"
\n",
"
1
\n",
"
Allegany
\n",
"
ALLE
\n",
"
974100
\n",
"
36003
\n",
"
020000
\n",
"
West
\n",
"
50470
\n",
"
49927
\n",
"
48946
\n",
"
0
\n",
"
None
\n",
"
None
\n",
"
N
\n",
"
1035.209131
\n",
"
2019-04-26
\n",
"
210499.339279
\n",
"
2.681179e+09
\n",
"
MULTIPOLYGON (((-78.04115 42.52082, -78.04115 ...
\n",
"
\n",
"
\n",
"
2
\n",
"
Bronx
\n",
"
BRON
\n",
"
974101
\n",
"
36005
\n",
"
600000
\n",
"
Long Island
\n",
"
1203789
\n",
"
1332650
\n",
"
1385108
\n",
"
0
\n",
"
None
\n",
"
None
\n",
"
Y
\n",
"
42.313958
\n",
"
2019-10-04
\n",
"
110631.250768
\n",
"
1.095926e+08
\n",
"
MULTIPOLYGON (((-73.89688 40.79617, -73.89757 ...
\n",
"
\n",
"
\n",
"
3
\n",
"
Broome
\n",
"
BROO
\n",
"
974102
\n",
"
36007
\n",
"
030000
\n",
"
Central
\n",
"
212160
\n",
"
200536
\n",
"
200600
\n",
"
0
\n",
"
None
\n",
"
None
\n",
"
N
\n",
"
715.287465
\n",
"
2019-04-26
\n",
"
227933.332021
\n",
"
1.852586e+09
\n",
"
MULTIPOLYGON (((-75.41849 42.19502, -75.41858 ...
\n",
"
\n",
"
\n",
"
4
\n",
"
Cattaraugus
\n",
"
CATT
\n",
"
974103
\n",
"
36009
\n",
"
040000
\n",
"
West
\n",
"
84234
\n",
"
83955
\n",
"
80317
\n",
"
0
\n",
"
None
\n",
"
None
\n",
"
N
\n",
"
1324.309219
\n",
"
2019-04-26
\n",
"
276084.505560
\n",
"
3.429945e+09
\n",
"
MULTIPOLYGON (((-78.46390 42.53635, -78.46388 ...
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" NAME ABBREV GNIS_ID FIPS_CODE SWIS NYSP_ZONE POP1990 \\\n",
"0 Albany ALBA 974099 36001 010000 East 292594 \n",
"1 Allegany ALLE 974100 36003 020000 West 50470 \n",
"2 Bronx BRON 974101 36005 600000 Long Island 1203789 \n",
"3 Broome BROO 974102 36007 030000 Central 212160 \n",
"4 Cattaraugus CATT 974103 36009 040000 West 84234 \n",
"\n",
" POP2000 POP2010 POP2020 DOS_LL DOSLL_DATE NYC CALC_SQ_MI DATEMOD \\\n",
"0 294565 304204 0 None None N 532.791779 2017-11-10 \n",
"1 49927 48946 0 None None N 1035.209131 2019-04-26 \n",
"2 1332650 1385108 0 None None Y 42.313958 2019-10-04 \n",
"3 200536 200600 0 None None N 715.287465 2019-04-26 \n",
"4 83955 80317 0 None None N 1324.309219 2019-04-26 \n",
"\n",
" Shape_Leng Shape_Area \\\n",
"0 166077.834242 1.379924e+09 \n",
"1 210499.339279 2.681179e+09 \n",
"2 110631.250768 1.095926e+08 \n",
"3 227933.332021 1.852586e+09 \n",
"4 276084.505560 3.429945e+09 \n",
"\n",
" geometry \n",
"0 MULTIPOLYGON (((-73.67694 42.78341, -73.67728 ... \n",
"1 MULTIPOLYGON (((-78.04115 42.52082, -78.04115 ... \n",
"2 MULTIPOLYGON (((-73.89688 40.79617, -73.89757 ... \n",
"3 MULTIPOLYGON (((-75.41849 42.19502, -75.41858 ... \n",
"4 MULTIPOLYGON (((-78.46390 42.53635, -78.46388 ... "
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Recall New York state boundary\n",
"NY_state.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4LDVVP1rw-en"
},
"source": [
"From the geodataframe, there are several columns, in which the column `['NYSP_ZONE']` contains information about the zone class that each county is categorized. Thus, from this column, we will select all counties that belongs to `West` zone. \n",
"\n",
"The query for `West` zone can be done as follows:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"id": "JIrA-51mw-en"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
NAME
\n",
"
ABBREV
\n",
"
GNIS_ID
\n",
"
FIPS_CODE
\n",
"
SWIS
\n",
"
NYSP_ZONE
\n",
"
POP1990
\n",
"
POP2000
\n",
"
POP2010
\n",
"
POP2020
\n",
"
DOS_LL
\n",
"
DOSLL_DATE
\n",
"
NYC
\n",
"
CALC_SQ_MI
\n",
"
DATEMOD
\n",
"
Shape_Leng
\n",
"
Shape_Area
\n",
"
geometry
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
Allegany
\n",
"
ALLE
\n",
"
974100
\n",
"
36003
\n",
"
020000
\n",
"
West
\n",
"
50470
\n",
"
49927
\n",
"
48946
\n",
"
0
\n",
"
None
\n",
"
None
\n",
"
N
\n",
"
1035.209131
\n",
"
2019-04-26
\n",
"
210499.339279
\n",
"
2.681179e+09
\n",
"
MULTIPOLYGON (((-78.04115 42.52082, -78.04115 ...
\n",
"
\n",
"
\n",
"
1
\n",
"
Cattaraugus
\n",
"
CATT
\n",
"
974103
\n",
"
36009
\n",
"
040000
\n",
"
West
\n",
"
84234
\n",
"
83955
\n",
"
80317
\n",
"
0
\n",
"
None
\n",
"
None
\n",
"
N
\n",
"
1324.309219
\n",
"
2019-04-26
\n",
"
276084.505560
\n",
"
3.429945e+09
\n",
"
MULTIPOLYGON (((-78.46390 42.53635, -78.46388 ...
\n",
"
\n",
"
\n",
"
2
\n",
"
Chautauqua
\n",
"
CHAU
\n",
"
974105
\n",
"
36013
\n",
"
060000
\n",
"
West
\n",
"
141895
\n",
"
139750
\n",
"
134905
\n",
"
0
\n",
"
None
\n",
"
None
\n",
"
N
\n",
"
1087.279177
\n",
"
2019-04-26
\n",
"
231568.884528
\n",
"
2.816040e+09
\n",
"
MULTIPOLYGON (((-79.06072 42.53784, -79.06071 ...
\n",
"
\n",
"
\n",
"
3
\n",
"
Erie
\n",
"
ERIE
\n",
"
974113
\n",
"
36029
\n",
"
140000
\n",
"
West
\n",
"
968532
\n",
"
950265
\n",
"
919040
\n",
"
0
\n",
"
None
\n",
"
None
\n",
"
N
\n",
"
1048.159552
\n",
"
2017-10-30
\n",
"
366827.189729
\n",
"
2.714721e+09
\n",
"
MULTIPOLYGON (((-78.90772 42.93463, -78.90302 ...
\n",
"
\n",
"
\n",
"
4
\n",
"
Genesee
\n",
"
GENE
\n",
"
974117
\n",
"
36037
\n",
"
180000
\n",
"
West
\n",
"
60060
\n",
"
60370
\n",
"
60079
\n",
"
0
\n",
"
None
\n",
"
None
\n",
"
N
\n",
"
496.057048
\n",
"
2018-02-12
\n",
"
155397.082626
\n",
"
1.284782e+09
\n",
"
MULTIPOLYGON (((-77.99726 43.13297, -77.99695 ...
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" NAME ABBREV GNIS_ID FIPS_CODE SWIS NYSP_ZONE POP1990 POP2000 \\\n",
"0 Allegany ALLE 974100 36003 020000 West 50470 49927 \n",
"1 Cattaraugus CATT 974103 36009 040000 West 84234 83955 \n",
"2 Chautauqua CHAU 974105 36013 060000 West 141895 139750 \n",
"3 Erie ERIE 974113 36029 140000 West 968532 950265 \n",
"4 Genesee GENE 974117 36037 180000 West 60060 60370 \n",
"\n",
" POP2010 POP2020 DOS_LL DOSLL_DATE NYC CALC_SQ_MI DATEMOD \\\n",
"0 48946 0 None None N 1035.209131 2019-04-26 \n",
"1 80317 0 None None N 1324.309219 2019-04-26 \n",
"2 134905 0 None None N 1087.279177 2019-04-26 \n",
"3 919040 0 None None N 1048.159552 2017-10-30 \n",
"4 60079 0 None None N 496.057048 2018-02-12 \n",
"\n",
" Shape_Leng Shape_Area \\\n",
"0 210499.339279 2.681179e+09 \n",
"1 276084.505560 3.429945e+09 \n",
"2 231568.884528 2.816040e+09 \n",
"3 366827.189729 2.714721e+09 \n",
"4 155397.082626 1.284782e+09 \n",
"\n",
" geometry \n",
"0 MULTIPOLYGON (((-78.04115 42.52082, -78.04115 ... \n",
"1 MULTIPOLYGON (((-78.46390 42.53635, -78.46388 ... \n",
"2 MULTIPOLYGON (((-79.06072 42.53784, -79.06071 ... \n",
"3 MULTIPOLYGON (((-78.90772 42.93463, -78.90302 ... \n",
"4 MULTIPOLYGON (((-77.99726 43.13297, -77.99695 ... "
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Spatial query\n",
"west_ny = NY_state.loc[NY_state['NYSP_ZONE'] == 'West']\n",
"\n",
"# Reset the index after query\n",
"west_ny.reset_index(drop=True, inplace=True)\n",
"\n",
"west_ny.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UdENs8Ldw-en"
},
"source": [
"* Let’s create a map which shows the location of the selected zone and the address points on top of the map:\n",
"\n",
"*Read more about how to plot with legend: https://matplotlib.org/stable/gallery/text_labels_and_annotations/custom_legends.html*"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"id": "HPgAboUXw-en"
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"from matplotlib.patches import Patch\n",
"from matplotlib.lines import Line2D\n",
"\n",
"# Create a figure with one subplot\n",
"fig, ax = plt.subplots()\n",
"\n",
"# Plot boundary\n",
"NY_state.plot(ax=ax, facecolor='#28B463', edgecolor = 'white')\n",
"west_ny['geometry'].plot(ax=ax, facecolor='#2874A6', edgecolor = 'white')\n",
"\n",
"# Plot address points\n",
"geo_address.plot(ax=ax, color='black', markersize=5)\n",
"\n",
"# Add legend\n",
"plt.legend(loc=2, handles=[Patch(color='#28B463', label='New York State'), \n",
" Patch(color='#2874A6', label='West Zone'),\n",
" Line2D([0], [0], marker='o', color='w', label='address',\n",
" markerfacecolor='black', markersize=5)])\n",
"plt.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eaa-NjvMw-eo"
},
"source": [
"Clearly, there are certain points within the blue Polygon. Let's conduct further query to get those points out by using `within()`.\n",
"\n",
"But, first `within()` only works with one polygon -object. It is not possible to use many polygons for query. Since, in the West zone there are many polygons of county, we should dissolve all polygons into one polygon. It can be done by using function `dissolve()` from geopandas based on common ID or name.\n",
"\n",
"Read more about [dissolve()](https://geopandas.org/docs/user_guide/aggregation_with_dissolve.html)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "u98L6-Ziw-eo"
},
"source": [
"**Dissolve polygons**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6sfMEguCw-eo"
},
"source": [
"Let's see how we can dissolve those polygons into one:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"id": "hSeJ9z5cw-eo"
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAADgCAYAAAANKq0BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAkDklEQVR4nO3deXxcZ33v8c9vRottyYntWE7iyI6dHSdkaUSS4gIhCw2O69ByoSmEpvBqQ1qWUGgDaW6hXMpt7g2FpE1K62ugpXFIAiEQTDZncRaCF3nf902WrMWyZFn7zPzuHzNyxtLIGkkzOqPR9/166aU5yzP6PedIvzl6znOex9wdERHJX6GgAxARkexSohcRyXNK9CIieU6JXkQkzynRi4jkOSV6EZE8VxB0AKlMnTrVZ82aFXQYIiKjxurVqxvcvSzVtpxM9LNmzaKysjLoMERERg0z29/ftrSbbswsbGZrzWxJYvlbZrbBzNaZ2UtmNj3dsiIiMnIG00Z/D7A1aflBd7/c3a8ElgBfH0RZEREZIWklejMrB24FFvWsc/djSbuUACnHUkhVVkRERk66bfQPAfcCE5NXmtm3gT8FmoEPDqZsb2Z2F3AXwMyZM9MMS0REBjLgFb2ZzQfq3H11723ufr+7zwAWA58fTNkU77XQ3SvcvaKsLOWNYxERGYJ0mm7mAgvMbB/wBHCDmT3Wa5/HgY8OsayIiGTRgE037n4fcB+AmV0P/I2732FmF7r7zsRuC4Bt6ZbNROAiucbdaWztYlfdcRy4dvYUzAyAaMwJh4zuaIyapg5qmts52tZNyKA76jS2dtLWFSUSc2ZPLeGiM0sxM0qKCjijtIiYOx1dMZrau5gxeQKhkJ30s7ujMcJmfdb3jq8nno7uKBsPNdMdjVF7rIP2rhhRdwwoKggRiTrFBSHmTD+NM0qKmFxSRGFYz1eOVsPpR/+AmV0MxID9wN0AiW6Wi9x9XgbiE8kJLR3d7K5vZXfdcQ40tlHT3E5dSyf7Glqpa+nEgEjM6YzETpSZOWUCE4rCNBzvpOF4F6XFBbR1RYgNcwqIM0qKKCkuoKWjm3GFYdq7ozS1dVMUDnHzpWdSVloMQH1LJ1VN7dQ0tVM2sZimtm5mTBlPU1s3u+qOExlEIMUFIS6dfhpTS4vpiMRobu/m3eecxo2XnInjHGrqwN255dKz6I45b+9qwMwoLggxY8oELj/n9FN+CEl2WS5OPFJRUeF6YEpGUnc0RnVTO4ebO6ht6aTuWAeHmzs4eLSNbYdb2H+kLegQR7WzTx/He8+fyvsvmsrvnn8GkycUYUA4ZCf+y5DhMbPV7l6RaltOPhkrMhLqWjpYsaeRl7bU8urWWlq7okGHlLdqmjt4ek0VT6+pOmn9eWUl3PyuM6mYNYXZUycwfdJ4xheGlfwzTIlexozWzgjrDzbx+s56Xtpcy96G1qBDGvP21LfyH/V7+I839pxYVxAypk0spnRcAReeOZGKcydzyVmn0R2NcfFZEykrLT6pGagrEsMM3UM4BSV6ySttXRFW7G1k+e4jbD3cQntXhLauKM3t3VQ3tQ+7fVyyLxJzqps7oBl21B7n1xtqTto+eUIhpeMKKCkqIBwydtS2UBgO8T9vncNNc6YxbeK4gCLPXWqjl1ErEo1R09zBnoZWVu1tZOXeRtYePEp3NPd+p2XknF9Wwh/9Tjl3vncWpcVj51r2VG30SvSS8zq6o7R1RdlZ28Lbu4/w291HOHi0jbqWTqK6RJd+lBYX8KWbLuTP33de0KGMCN2MlVHnaGsX66uaeKryIEu31OoqXQZlfGGYv/39i/nUdefS0R1lXGE46JACpUQvOeFoaxdrDx7lzZ0NvLWzgZ11x4MOSUax9u4o33h2M6v2NdLRHWNcYYgv3XQhF0w75ZBbeUuJXkacu7O3oZW3dx9hzYGjbKtpYUvNsYELigzSkqQbuS9sOsxfXn8+n/vgBWPuCl+JXkZEJBpj9f6j/HpjDa9sreNQU3vQIckYE4k5//rqLl7eWscjn7iK88tKgw5pxCjRS1ZEojG21rSwcl8jlfsaWbG3kcbWrqDDEmFrzTE+/PCb/Nl7Z/GJa2Yya2pJ0CFlnRK9DEtLRzebDh1jR20L6w42sbOuhcbjXTQc76IrGhv4DUQC0BWJsfCNPSx8Yw+Xl5/ODZdM447rzmVqYpygbOoZXK6tK8Iv11Xz8pZaTp9QyDWzpnD7NdmZi0OJXgalub2bN3bU8/buI6ze38ie+tZBDY4lkms2VDWzoaqZH761l89+4Hw+PXcWE4oynxo3HWrm/764nbd3NTClpIijbV0n9SabNL4o4z+zhxK9DIoZdEZi/GLtIdq7NTaM5I9jHREefHE7i97cw53vncVfXX8BRQVDG1ahOxpj1b5GNlQ18/buI+ysbaGmuePE9rqWzj5lIrHs/QesRC+Dctq4Qv7H1eU8v7GGV7bVBR2OSMYdbevmoZd38rPVVXzlQxfxkSvPGXCQtbauCC9uPkxNcwe1zR08v+lwymR+Ktl8+E+JXoZEvWYk31Udbeevn1zP4uUH+PP3zeb6i6el7Ja5pfoYn/7PldQeG1xi702JXnKOhpGVsaJy/1Eq9x9lfGGYq8+dzHllJZQWF1DX0snO2hbWVzVn5Odk815X2onezMJAJXDI3eeb2beA24jPMFUH/Jm7V/cqMwP4MXBWYr+F7v5wpoKX4Mw9/wy26iEnGUPau6O8tauBt3Y1ZOX9I1nspTaYOw33AFuTlh9098vd/UpgCfD1FGUiwFfc/V3AdcDnzGzOUIOV3HH6+MKgQxDJK9kczimtRG9m5cCtwKKede6efDlXAvQJ091r3H1N4nUL8Q+Kc4YTsOQG3YgVyaxYFptu0r2ifwi4l3jzywlm9m0zOwh8ktRX9Mn7zgKuAlYMOkrJOf+w4NKgQxDJK7EsDhk/YKI3s/lAnbuv7r3N3e939xnAYuDzp3iPUuBp4Eu9/hNI3ucuM6s0s8r6+vq0KyDBuGDa2BknRGQkZLPXTTpX9HOBBWa2D3gCuMHMHuu1z+PAR1MVNrNC4kl+sbv/vL8f4u4L3b3C3SvKysrSCl6Cs1vDCItkVKCJ3t3vc/dyd58F3A686u53mNmFSbstALb1LmvxPng/ALa6+3czFLPkgM3V6nEjkknZ7F45nGnTHzCzTWa2AfgQ8V45mNl0M3susc9c4FPE/wtYl/iaN7yQJRfUD/KpPxE5tWy20Q/qgSl3XwYsS7xO2VST6Es/L/H6LUBP1uShP7jibB5+ZQcaz0wkM7pzpB+9yAnnlZWOqYkbRLIti2OaKdHL0L3vQt00F8mUbM7foEQvQ1ZSPLbm3RTJpo4sDvutQc1k0Nydf3p+G4ve3BN0KCJ5I5vzOyjRy6DsP9LKt5Zs4eWtGgJBJJOyeUWvphsZlE2HjmVt9D6RsawrojZ6yRG3Xn42n7jm3KDDEMk7kSwOX6lEL4MSjTm76jX8gUimdeqKXnLF6zvqeGOHBp0TybSuaCxrQxUr0Uvamtq6eKryYNBhiOStjkh2bsiq142kbXd9Kx+acxZfvvli9h9pY+OhZgpDRkE4xJHjnWw41MyqfY30HrLjwmkllBYXsvZgUyBxi4wWXZEYE4oy/75K9JK2q8+dzNXnTgbgojMncvOcM/vs09YZobgwzPGOCEdaO+mKxmhu66axtYvScQUsXn6AfUda2V7b0ucDQWSsy9YIlkr0klFt3VEeeGEbDcc7KSkq4IOXTKOjO8qGqmY6uqN8/oYLuOyc09nX0Mr/WrKF13fUZ3UcbpHRJFs9b5ToJaMmjS/k5S21VDd3APDT1VUnbX9i1UHefc7pXDt7Ct/4gzlMLS3m0dd28W/LdgcRrkhOiWRpZDMlesmoh17eeSLJ92fjoWY2Hmrm52sP8anrzuVzH7yA8skT+LtnNo5QlCK5KVsPTanXjWTMoaZ2vv96+lfmja1dPPzKTu55Yh3zrzibwrCmLpD8ETIoCBmFYaMgZIRDRmiAX/GQZedvQFf0kjGvbK0dUnv7yr1HMOCPfqecJ1ep+6aMbre/ZwYPfPTyU+7j7pgZntQjofdyJqV9RW9mYTNba2ZLEsvfMrMNiekBXzKz6f2Uu8XMtpvZLjP7WqYCl9yyfM8R/uWVnUMq29IZ4UBjG2WlxRmOSmTkpfOEqyWu3M3sxFfy+kwbzBX9PcBW4LTE8oPu/vcAZvZF4OvA3ckFzCwMPArcDFQBq8zsWXffMtzAJbd84SdraTjeNagyFedO5n0XTmXyhCL+zwvb9cSt5IVsjkI5VGklejMrB24Fvg18GcDdjyXtUgKk+p/jGmCXu+9JvM8TwG2AEn2emVhckPaE4VfMmMQ9N17A69vr+cFbeznWEclydCIjZ9QmeuAh4F5gYvJKM/s28KdAM/DBFOXOAZIbXauAa1P9ADO7C7gLYObMmWmGJbni3eWns6ehdcD97v7AeZx52jj+avEaOrqzOEmmSECyOYHIUA3YRm9m84E6d1/de5u73+/uM4DFwOdTFU+xLuXdBndf6O4V7l5RVqa5SEebz77/fCYUnXpqwRsvmcbsM0r45q+2KMlL3mrPwd/tdG7GzgUWmNk+4AngBjN7rNc+jwMfTVG2CpiRtFwOVA8hTslxc6afxotfej8fu7qc8YWpE/5VMyfxwubDIxyZyMhq78q9psgBE7273+fu5e4+C7gdeNXd7zCzC5N2WwBsS1F8FXChmc02s6JE+WczELfkoBlTJvDgx67g9Xuv58s3X8R5ZSUnbd9Q1cxnfm+2+stLXuvO4gQiQzWcB6YeMLNNZrYB+BDxXjmY2XQzew7A3SPEm3ReJN5j5yl33zzMmCXHTZs4ji/eeCHP3/M+bn/PO//QvbqtjskTinjgjy5n4jg9wiH5KRdvxlq2OugPR0VFhVdWVgYdhmSAu/Pi5sOs3NvInoZWrr+ojE/97iz2NbTyhZ+sZUvNsYHfRGQUmVJSxJq/v3nEf66ZrXb3ilTbdFklWWVm3HLZ2dxy2dknrZ84voBffG4uN353GQcb2wOKTiTzcvGKXoleAjFt4jgAzi8rVaKXnHb26eP48GVnE3MnEosRjUEs5kTdT3yPxJxo1Im5U5CD96CU6CVQt105nWXb9USs5K4jiUlzPnHNTM46fVzQ4QyJRq+UwH3o0r4zVYnkiq5IjH95ZScr9h4JOpQhU6KXQF07+ww6c/ABE5HeHnxxO+1dudf+ng4legnU1NJiqpvURi+5r6a5g8a2wQ3clyuU6CVQRQWh1GNiiOSYaMxH7UWJEr0Ebvqk8UGHIJKWZ9dVExuFk9kr0UvgHv7jK7npXbohK7nv1W11RHPwIdOBKNFL4CaXFPHAR99NxbmTgw5F5JSqm9vZdKg56DAGTYlecsK4wjATxxVQVKBfScldheHQkOZFDpr+qiQnlBYX8J2PXcHp4wuDDkWkX2Ez1h5oCjqMQVOil5xxRmkx31xwadBhiPSrIGz8ybWjbwY8DYEgOeWWS8/imb96L5/979XUpTkHrUi2fHruLL4+fw7uYLk3hE3adEUvOSUUMq4on8RtV04POhQRID4CayhkmL3zNdoo0UvO2Xa4hRlTJnD6+EIKQqPvj0ryxyjsSZlS2k03ZhYGKoFD7j7fzB4E/gDoAnYDn3b3phTl/hr4c+KTgm9M7NeRgdglD7k7dz+2mvbuKM3t3UGHI2NcLk7MNBSDuaK/h/h0gD2WApe5++XADuC+3gXM7Bzgi0CFu18GhInPGyuSkpnx/oum0tg6OscUkfwyGptpUkkr0ZtZOXArsKhnnbu/lJgTFmA5UN5P8QJgvJkVABOA6qGHK2PBl2++mGL1pxfJmHT/mh4C7gX6G0/2M8DzvVe6+yHgO8ABoAZodveXBh+mjCVTSor465suIqz2eQlYnlzQD5zozWw+UOfuq/vZfj8QARan2DYZuA2YDUwHSszsjn7e5y4zqzSzyvp6zTg01v3F+8/jw5edFXQYMsYZ+ZHp07minwssMLN9wBPADWb2GICZ3QnMBz7pqe9a3ATsdfd6d+8Gfg68N9UPcfeF7l7h7hVlZWVDqIrkmyklRUGHIGPcmLmid/f73L3c3WcRv5H6qrvfYWa3AF8FFrh7Wz/FDwDXmdkEi9/VuJGTb+iKpPT8xhp+WlkVdBgyxuVL8+Fw7ng9AkwElprZOjP7dwAzm25mzwG4+wrgZ8Aa4l0rQ8DC4YUs+e617XV8+an1tHePzmnbJH+E8uSSflBDILj7MmBZ4vUF/exTDcxLWv4G8I0hRyhjRnNbN1/56Xpe3lobdCgyhl1y1kSunT2FmMNVMycFHU5GaKwbyQm/Wl/N3/9yE01tekhKgnX+tFK+edtlQYeRUUr0Eqjd9cf5j9d385Ta4yVHrD/YFHQIGadEL4GIxZzf7G7gc4vXcKwjMnABkRFy5HgX7p43T8WCEr2MoLUHjrLuYBPrDzbxm91HqNcwxJKDesZZmjQhf7r3KtFLVrk7O+uO88O39vJk5cG8GQ1Q8tvOuuO8Z9aUoMPIGCV6yZpozHn0tV18d+mOoEMRGZQt1ceU6EVOxd357e4jfHfpDir3Hw06HJFBO9DY3zOgo5MSvQxbJBrjseX7eWNnA9sPt9DS0a0brDKqKdGLALXHOnhh02EeX3GAupYOjqr/u+SRg0r0IvDtX2/l2fWaWkDy04HGtrzqYqnZHWTQmtq6eGOnhpKW/NXWFeVIHs1ypit6GZTm9m4+/PCbGqpA8t5HHv0NpcUFFIZDFBeEKAgbBaEQoZBREDLCSd9PfJnxh1edw3svmBp0+CdRopdB2VV3nJpmze0u+a/qaPuQyv3ehbmV5EFNNzJIheH8aLMUyZbJOfhErRK9DMqW6mNBhyCS084rKwk6hD7UdCNpeXzFAZ6qPMi6PBzZTySTzigpDjqEPpTo5ZTqWjr4+ZpD/OsrO2nt0oxPIgMJ5WA7SdohmVnYzNaa2ZLE8oNmts3MNpjZM2Y2qZ9yk8zsZ4l9t5rZ72YodsmyxtYu7n9mEw88v01JXiRNBTmY6QcT0T2cPLH3UuAyd78c2AHc10+5h4EX3P0S4Ao0OfiosKX6GB959Dcs3aJp/UQGIxcnFE8r0ZtZOXArsKhnnbu/5O49A5osB8pTlDsNeD/wg0SZLndvGmbMkmUd3VG+u3RH3o33IZJtBTmY5CH9K/qHgHuBWD/bPwM8n2L9eUA98KNEs88iM0t5S9rM7jKzSjOrrK/XU5dB+t7SHZqgW2QIQqM10ZvZfKDO3Vf3s/1+IAIsTrG5APgd4PvufhXQCnwt1fu4+0J3r3D3irKysnTjlwz78W/38fjKA0GHITIqhXN0bJx0et3MBRaY2TxgHHCamT3m7neY2Z3AfOBG95RzB1UBVe6+IrH8M/pJ9BK8o61d/OOvt9IV6e8fN5H8UTaxmInjCnCPz6EQdcc9PmFOd9SJxGJ0R2J0R52uaHp/EwU5+kDhgIne3e8jcaPVzK4H/iaR5G8Bvgp8wN1TNua6+2EzO2hmF7v7duBGYEumgpfMemHzYSV5GTP+9vcv5uMVM9La191PfAB0RWJ0RWOJDwKnKxo9sT6ao3NlDqcf/SNAMbA0MZTncne/28ymA4vcfV5ivy8Ai82sCNgDfHo4AUv2PLP2UNAhiIyY4oL0Ox2aWXxQszCMLwpnMarsGFSid/dlwLLE6wv62acamJe0vA6oGGqAMjJ+sfYQK/c2Bh2GyIgpCudef/ds0ZOxY9CqfY1EY07tsQ5+tb6G0uKwJhGRMadoEFf0o50S/RjQ1hVh3YEmnqw8SMPxTlbubaQ7mpttiSIjRYleRrXjnRHaOiN87+WdgPPkqoPElNdljCmfPJ5rZ58BwISiMI4Tc4jF4jdWzz59fMARjhwl+jzSFYnx49/u45+e30ZROER7t8ankbHr6nMn888fvyLoMHKCEn0ecHf+5ZVd/NuyXXQmuke2x5TkZWwbTK+afKdEP4rtP9LKlupjrNzXyI9+sy/ocERyylhqgx+IEv0os2LPEdYcaGLVvkZe215Hjj6fIRK48YWjr797tijR57BjHd1MLC4g8UAaG6qauPNHK+no1tOrIgMZp0R/ghJ9jnJ3Pvn/VtBwvJO/m/cuVu5t5IlVB9QtUiRNE4qU3nroSOSgWMx5cfNhNh5qBuALP1kbcEQio49uxr5DiT7HtHZG+Mazm/nZ6qqgQxEZ1UbjmDTZokSfI453RnhuYw2PvraL/Uc0s5PIcOlm7DuU6APUFYlRVBBi3cEmvvCTNRxsbA86JJG8UVKs9NZDRyJA3/zVZjZVH2PToWaiGqNAJKPGFaqNvocSfUCiMWfJhhqa27uDDkUkL01QG/0J+sgLyIo9R5TkRbJI/ejfkXaiN7Owma01syWJ5QfNbJuZbTCzZ8xsUrplxzJ35+drqvjiE+uCDkUkr502rjDoEHLGYK7o7wG2Ji0vBS5z98uBHSTmlU2z7JjU0tHNXz62hi8/tZ6G451BhyOS13Qz9h1pJXozKwduBRb1rHP3l9w9klhcDpSnW3asae2M8PTqKv7w397mhc2Hgw5HZExQG/070v3Iewi4F5jYz/bPAE8OsWze2ljVzLeWbKFyf6Mm/hAZQZ/9wHl6MjbJgInezOYDde6+2syuT7H9fiACLB5s2V773gXcBTBz5sw0Qs9dze3d/OOSLTy9pkoJXiQA18yacmIwQEnvin4usMDM5gHjgNPM7DF3v8PM7gTmAze6pxwwt9+yvXd094XAQoCKiopRmR5jMefZ9dX87+e2UteiNniRoGhAs5MNeDTc/T4SN1oTV+V/k0jytwBfBT7g7imf2e+vbCYCzyXuzus76vmn57axvbYl6HBExjy1z59sOB97jwDFwNLEv0jL3f1uM5sOLHL3eZkIMJe5O8t21PODN/fy1q6GoMMRkQQNaHayQSV6d18GLEu8vqCffaqBPkk+uexo5+68uLmWp9dUsXRLbdDhiEgvGtDsZGrIGqQDR9r40pNrWXOgKehQRKQfaro5mRL9ANwdM+Pt3Q08tnw/L2w6rJ40IjlOD0udTEfjFH67+wiPvLaTw80d7K5vDTocEUlDyDS7VG9K9Cl0dEf5xdpD/OOvt3K8MzJwARHJGRPHFaoPfS9K9EliMeeX6w/xwPPbqD2mfvAio1Gpmm360BEBGlu7eGnzYb7/+m5N4ycyyinR9zWmj0h1UztPrDzAj5fvp6lNY8OL5IMJxepx09uYTPQHjrSxeOV+Hl9+gBa1wYvkFV3R9zVmjkg05ry5s54nVx3kxc3qIimSr/SwVF95n+hrj3XwxMqDPLZiP/UaaEwk76kPfV95eUSOtnbx7PpqnttYw4q9jUGHIyIjqERt9H3kVaKvbmrnK0+tZ+W+RqJqmxEZk3RF31deHZGG4538ds+RoMMQkQBpUvC+9JywiOSViePy6vo1I/Iq0Rt67FlkrCvR7FJ95FeiV54XGfNKdUXfR14lehGRiboZ20faid7Mwma21syWJJYfNLNtZrbBzJ4xs0kpyswws9fMbKuZbTazezIYex+xlPOTi8hYoiv6vgZzRX8PsDVpeSlwmbtfDuwgMQl4LxHgK+7+LuA64HNmNmeowYqIDERDIPSVVqI3s3LgVmBRzzp3f8ndewaKWQ6U9y7n7jXuvibxuoX4B8U5ww1aRKQ/uqLvK90r+oeAe4FYP9s/Azx/qjcws1nAVcCKfrbfZWaVZlZZX1+fZli93kO9bkTGPF3R9zVgojez+UCdu6/uZ/v9xJtoFp/iPUqBp4EvufuxVPu4+0J3r3D3irKysrSC7/tzhlRMRPKEmQY1SyWdj765wAIzmweMA04zs8fc/Q4zuxOYD9zonvpOqJkVEk/yi93955kKXESkt5KiAk0jmMKAV/Tufp+7l7v7LOB24NVEkr8F+CqwwN1TTstk8SP+A2Cru383g3GLiPShAc1SG04/+keAicBSM1tnZv8OYGbTzey5xD5zgU8BNyT2WZf4z0BEJOMm6KnYlAZ1VNx9GbAs8fqCfvapBuYlXr8FukMqIiND7fOp6clYEckbE4qU6FNRoheRvDFeiT4lJXoRyRu6ok9NiV5E8oaGKE5NiV5E8sY4XdGnpEQvInlDvW5SU6IXkbyhNvrUlOhFJG+o101qSvQikjfUdJNaXiV6TTAlMrap6Sa1vEr0IjK2aayb1JToRSRvaPTK1JToRSRvjC/UFX0qSvQikjfU6yY1JXoRyRtFYaW0VPLqqDjqdiMylhUX5lVKy5i0j4qZhc1srZktSSw/aGbbzGyDmT1jZpP6KXeLmW03s11m9rUMxZ2SuleKjG3FBUr0qQzmqNwDbE1aXgpc5u6XAzuA+3oXMLMw8CjwYWAO8CdmNmfo4YqI9E/dK1NLK9GbWTlwK7CoZ527v+TukcTicqA8RdFrgF3uvsfdu4AngNuGF7KISGp6YCq1dD/+HgLuJT4ZeCqfAZ5Msf4c4GDSchVwbbrBDVZhOMQ5k8Zjac5SaxZv7ulp8vHEi54WoJg77hA70SSU2O7xV+6e+J547YClniTXzLDEtuQyAOGQETLDzAhZPK6Q9azjxM+MuRONeeJ94htC1vfnhELvlI+/nxE2IxSKLyevT37/EzXsdRzi9U2qe3L9E3HFEsciFnNinnzs4jHH3InEEq9jSa+TjuFATsScdP4gfiwscdzCScetp3499Q2ZURgOEQpBYShEQdgoSHwPh4zCUCh+LkJJ9U6Ky/GTjlNyHJZ01nv288SOjp+0PXmf3vXvOf6xpGMei71zjHt+F3t+93oC6VNv3vk96vm9MzOKCkIUhu2k34/wiV8iS/xN9Jybd85fz7mKxpyoQzQWIxo7+XcgmnjtidexGCfK9Zx/9/jviBPf1nMseh+f5L/hd47zyXUJpairmm5SGzDRm9l8oM7dV5vZ9Sm23w9EgMWpiqdYl/JP2szuAu4CmDlz5kBhpTRn+mn85ms3DKmsBO/kDw5OJOee5CUiQ5POx99cYIGZ7SPe9HKDmT0GYGZ3AvOBT7qnvCarAmYkLZcD1al+iLsvdPcKd68oKysbRBUkX1jiv46CcIiighAF4RChkCnJiwzTgIne3e9z93J3nwXcDrzq7neY2S3AV4EF7t7WT/FVwIVmNtvMihLln81Q7CIikobhNGg9QrzNfqmZrTOzfwcws+lm9hxA4mbt54EXiffYecrdNw8zZhERGYRB9UVy92XAssTrC/rZpxqYl7T8HPDckCMUEZFh0S1qEZE8p0QvIpLnlOhFRPKcEr2ISJ6z1N3fg2Vm9cD+oOMYhqlAQ9BBBGgs138s1x1U/yDrf667p3wIKScT/WhnZpXuXhF0HEEZy/Ufy3UH1T9X66+mGxGRPKdELyKS55Tos2Nh0AEEbCzXfyzXHVT/nKy/2uhFRPKcruhFRPKcEv0QmdmTicHc1pnZPjNbl1hfZGY/MrONZrY+1Rj+if3+wcwOJb3HvFT75aoM1H+KmS01s52J75NHMPxhOUXdC83svxJ132pmfabXTOyXr+c+3fqP2nMPp6z/J5PWrzOzmJldmaL8iJ9/TbA4RO7+xz2vzeyfgebE4l8ktr/bzKYBz5vZe9w9luJtvufu38l+tJmXgfp/DXjF3R9ITBr/NeLDXue8U9T9Y0Bxou4TgC1m9hN335fibfLx3Kdb/1F77qH/+rv7YhITMJnZu4Ffuvu6ft5mRM+/ruiHyeKzYnwc+Eli1RzgFQB3rwOagJzrV5spw6j/bcB/JV7/F/CRbMaZDSnq7kCJmRUA44Eu4FhA4WXdMOo/6s89pKx/sj/pZ30glOiH731ArbvvTCyvB24zswIzmw1czcmzbCX7vJltMLMfjrZ/X5MMtf5nunsNQOL7tBGJNrN61/1nQCtQAxwAvuPujf2Uzcdzn2798+HcQ9/6J/tjTp3oR/T8K9Gfgpm9bGabUnzdlrRb70/uHxKfQrGS+KTqbxOfU7e37wPnA1cS/8P45yxUYViyXP+cNsS6XwNEgenAbOArZnZeirfP13Ofbv1z3hDr31P2WqDN3Tf18/Yjf/7jEzLrayhfxO9x1ALlp9jnbWDOAO8zC9gUdH1Gsv7AduDsxOuzge1B12e4dQceBT6VtPxD4ONj5dynW//Rfu77q3/Stu8Bf5fm+4zI+dcV/fDcBGxz96qeFWY2wcxKEq9vBiLuvqV3QTM7O2nxD4H+Pv1z2ZDrT3zu4DsTr+8EfpntYDOsT92JN1fcYHElwHXAtt4F8/Xck2b9Gf3nHlLXHzMLEb8p/UR/BQM5/0F/Mo7mL+A/gbtTfEJvJz5H7svER5Tr2bYIqEi8/m9gI7CB+C/+2UHXZ4Trfwbxm7Y7E9+nBF2fDNS9FPgpsBnYAvztGDv36dZ/VJ/7/uqfWH89sDzF+kDPv56MFRHJc2q6ERHJc0r0IiJ5ToleRCTPKdGLiOQ5JXoRkTynRC8ikueU6EVE8pwSvYhInvv/+1bUreyImfoAAAAASUVORK5CYII=",
"text/plain": [
"
"
],
"text/plain": [
" geometry NAME ABBREV \\\n",
"NYSP_ZONE \n",
"West MULTIPOLYGON (((-78.90772 42.93463, -78.90302 ... Allegany ALLE \n",
"\n",
" GNIS_ID FIPS_CODE SWIS POP1990 POP2000 POP2010 POP2020 \\\n",
"NYSP_ZONE \n",
"West 974100 36003 020000 50470 49927 48946 0 \n",
"\n",
" DOS_LL DOSLL_DATE NYC CALC_SQ_MI DATEMOD Shape_Leng \\\n",
"NYSP_ZONE \n",
"West None None N 1035.209131 2019-04-26 210499.339279 \n",
"\n",
" Shape_Area \n",
"NYSP_ZONE \n",
"West 2.681179e+09 "
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"polygon"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "HDpm3Z3nw-eo"
},
"source": [
"**Conduct point in polygon**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vna7HYUjw-eo"
},
"source": [
"Now let's conduct query:\n",
"\n",
"* *If there are too many points for query, we should enable shapely.speedups to make some queries running faster.*"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"id": "4PlDHofYw-ep"
},
"outputs": [],
"source": [
"import shapely.speedups\n",
"shapely.speedups.enable()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "OQoc5ktYw-ep"
},
"source": [
"* Here, we use the `.loc['West', 'geometry']` to parse the actualy Polygon geometry object from the `polygon` GeoDataFrame."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"id": "MazumzWqw-ep"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 False\n",
"1 True\n",
"2 False\n",
"3 True\n",
"4 False\n",
"5 False\n",
"6 False\n",
"7 True\n",
"8 True\n",
"9 False\n",
"10 False\n",
"11 False\n",
"12 False\n",
"13 True\n",
"14 True\n",
"15 False\n",
"16 True\n",
"17 False\n",
"18 True\n",
"19 False\n",
"20 True\n",
"21 True\n",
"22 False\n",
"dtype: bool\n"
]
}
],
"source": [
"query = geo_address.within(polygon.loc['West', 'geometry'])\n",
"print(query)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LGMd2kcYw-ep"
},
"source": [
"As a result, we get an array of *boolean values* for each rows. From this array, `True` means Point is inside the Polygon, while `False` means it was not."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "mk34uk5Aw-ep"
},
"source": [
"From this query array, we can select points of address that are inside the West zone polygon by using `.loc[]`-function of Pandas."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"id": "egdP1qYUw-ep"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
geometry
\n",
"
address
\n",
"
\n",
" \n",
" \n",
"
\n",
"
1
\n",
"
POINT (-78.82218 43.01100)
\n",
"
2055, Niagara Falls Boulevard, Town of Amherst...
\n",
"
\n",
"
\n",
"
3
\n",
"
POINT (-78.20803 43.01360)
\n",
"
Walmart Supercenter, 4133, Veterans Memorial D...
\n",
"
\n",
"
\n",
"
7
\n",
"
POINT (-78.77824 42.90475)
\n",
"
Citi Trends, 100, East Thruway Plaza Drive, Th...
\n",
"
\n",
"
\n",
"
8
\n",
"
POINT (-78.69387 42.98329)
\n",
"
Walmart Supercenter, 5033, Transit Road, Easte...
\n",
"
\n",
"
\n",
"
13
\n",
"
POINT (-79.31335 42.45387)
\n",
"
Walmart Supercenter, 10401, Bennett Road, Fred...
\n",
"
\n",
"
\n",
"
14
\n",
"
POINT (-77.78476 42.79901)
\n",
"
4300, Lakeville Road, Village of Geneseo, Town...
\n",
"
\n",
"
\n",
"
16
\n",
"
POINT (-77.73073 43.21536)
\n",
"
100, Elm Ridge Center Drive, Elm Ridge Center,...
\n",
"
\n",
"
\n",
"
18
\n",
"
POINT (-78.87170 42.74320)
\n",
"
Walmart Supercenter, 5360, Southwestern Boulev...
\n",
"
\n",
"
\n",
"
20
\n",
"
POINT (-79.29999 42.09681)
\n",
"
Walmart Supercenter, 350, East Fairmount Avenu...
\n",
"
\n",
"
\n",
"
21
\n",
"
POINT (-78.69682 42.88252)
\n",
"
4975, Transit Road, Town of Lancaster, Erie Co...
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" geometry \\\n",
"1 POINT (-78.82218 43.01100) \n",
"3 POINT (-78.20803 43.01360) \n",
"7 POINT (-78.77824 42.90475) \n",
"8 POINT (-78.69387 42.98329) \n",
"13 POINT (-79.31335 42.45387) \n",
"14 POINT (-77.78476 42.79901) \n",
"16 POINT (-77.73073 43.21536) \n",
"18 POINT (-78.87170 42.74320) \n",
"20 POINT (-79.29999 42.09681) \n",
"21 POINT (-78.69682 42.88252) \n",
"\n",
" address \n",
"1 2055, Niagara Falls Boulevard, Town of Amherst... \n",
"3 Walmart Supercenter, 4133, Veterans Memorial D... \n",
"7 Citi Trends, 100, East Thruway Plaza Drive, Th... \n",
"8 Walmart Supercenter, 5033, Transit Road, Easte... \n",
"13 Walmart Supercenter, 10401, Bennett Road, Fred... \n",
"14 4300, Lakeville Road, Village of Geneseo, Town... \n",
"16 100, Elm Ridge Center Drive, Elm Ridge Center,... \n",
"18 Walmart Supercenter, 5360, Southwestern Boulev... \n",
"20 Walmart Supercenter, 350, East Fairmount Avenu... \n",
"21 4975, Transit Road, Town of Lancaster, Erie Co... "
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# let's extract points in polygon (pip)\n",
"pip_data = geo_address.loc[query==True]\n",
"pip_data"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_KO5i0WUw-ep"
},
"source": [
"Finally, we can get the result of all points inside the West zone of New York state."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"id": "lLQLyZggw-ep"
},
"outputs": [],
"source": [
"# Let's also select the points outside the polygon (pop)\n",
"pop_data = geo_address.loc[query==False]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0jQ8IAdDw-eq"
},
"source": [
"**Plotting result**"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"id": "cgUPBRi3w-eq"
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"from matplotlib.patches import Patch\n",
"from matplotlib.lines import Line2D\n",
"\n",
"# Create a figure with one subplot\n",
"fig, ax = plt.subplots(figsize=(7,8))\n",
"\n",
"# Plot boundary\n",
"NY_state.plot(ax=ax, facecolor='#28B463', edgecolor = 'white')\n",
"west_ny['geometry'].plot(ax=ax, facecolor='#2874A6', edgecolor = 'white')\n",
"\n",
"# Plot address points\n",
"pip_data.plot(ax=ax, color='red', markersize=5)\n",
"pop_data.plot(ax=ax, color='black', markersize=5)\n",
"\n",
"# Add legend\n",
"plt.legend(loc=2, handles=[Patch(color='#28B463', label='New York State'), \n",
" Patch(color='#2874A6', label='West Zone'),\n",
" Line2D([0], [0], marker='o', color='w', label='address inside West Zone',\n",
" markerfacecolor='red', markersize=5),\n",
" Line2D([0], [0], marker='o', color='w', label='address outside West Zone',\n",
" markerfacecolor='black', markersize=5)])\n",
"plt.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LsOCflCcw-eq"
},
"source": [
"Perfect! Now we have a perfect plot showing the addresses inside (red) and outside the West zone (black), which is exactly what we wanted! "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nu6SLobVw-eq"
},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qp28kcXsw-eq"
},
"source": [
"#### 2. Nearest Neighbour Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "79I2Qkt1w-eq"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ec7HzY1Lw-eq"
},
"source": [
"To conduct nearest neighbour analysis in Python, we will use a shapely fuction called [nearest_point()](https://shapely.readthedocs.io/en/latest/manual.html#nearest-points). This fuction will return a tuple of the nearest points in the input geometries and also in the same order as the input geometries."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "dv1EHtwqw-eq"
},
"source": [
"#### a. Nearest point with Shapely"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pCVjc7L0w-er"
},
"source": [
"By using `nearest_point()` -function, let's find the nearest destination from a group of destination point to the origin point. "
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"id": "DekBwV9xw-er"
},
"outputs": [],
"source": [
"from shapely.geometry import Point, MultiPoint\n",
"from shapely.ops import nearest_points\n",
"\n",
"origin = Point(1.5, 1.3)\n",
"dest1, dest2, dest3 = Point(1, 2), Point(0.5, 1), Point(3, 0.542)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CsRYgvUDw-er"
},
"source": [
"To be able to find out the closest destination point from the origin, we need to create a MultiPoint object from the destination points."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"id": "idIk03k-w-er"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MULTIPOINT (1 2, 0.5 1, 3 0.542)\n"
]
}
],
"source": [
"destinations = MultiPoint([dest1, dest2, dest3])\n",
"print(destinations)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2RcA5ucVw-er"
},
"source": [
"So now we can see that all the destination points are represented as a single MultiPoint object. Let's apply `nearest_point()` to find the nearest destination."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"id": "VJ0M7xSsw-er"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(, )\n",
"POINT (1.5 1.3)\n",
"POINT (1 2)\n"
]
}
],
"source": [
"nearest_geoms = nearest_points(origin, destinations)\n",
"\n",
"# Set the origin point\n",
"near_pt_1 = nearest_geoms[0]\n",
"\n",
"# Set the nearest point\n",
"near_pt_2 = nearest_geoms[1]\n",
"\n",
"print(nearest_geoms)\n",
"print(near_pt_1)\n",
"print(near_pt_2)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "IMc1GX1qw-er"
},
"source": [
"This is the basic of how to apply `nearest_point()` to calculate the nearest point in a pair of geometries (origin and destination). As you can see, it returns a shapely point with tuples where the first point is our origin point, and second point is the nearest point that we have found. Even though, we can get a good result here, but it is not useful enough for practical work. Therefore, the next section, we will learn how to make it more practical."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "b6q5iNKCw-er"
},
"source": [
"#### b. Nearest point with Geopandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "D-GswGaFw-er"
},
"source": [
"In this section, we learn how to find the nearest points from a set of origin points to a set of destination points using GeoDataFrames. Let's go back to our question: we want to find the nearest supermarkets to the centroid of each NUTS region. Thus, we will use the NUTS boundary data from the [Office for National Statistics of UK](https://geoportal.statistics.gov.uk/datasets/ons::nuts-level-1-january-2018-full-clipped-boundaries-in-the-united-kingdom/about) and point locations of all [supermarkets in United Kingdom](https://datashare.ed.ac.uk/handle/10283/2413?show=full).\n",
"\n",
"**Dataset:**\n",
"\n",
"1. NUTS boundary: `data/NUTS_level_1_(Jan_2018)_boundaries.shp`\n",
"2. Location of supermarket: `data/Location_of_supermarket_in_Britain.shp`"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"id": "XemTR_k0w-es"
},
"outputs": [],
"source": [
"import geopandas as gpd\n",
"from shapely.ops import nearest_points"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"id": "ar7z_s56w-es"
},
"outputs": [],
"source": [
"# Filepath of NUTS boundary\n",
"fp1 = 'data/NUTS_level_1_(Jan_2018)_boundaries.shp'\n",
"fp2 = 'data/Location_of_supermarket_in_Britain.shp'\n",
"\n",
"# Read dataframe\n",
"df1 = gpd.read_file(fp1)\n",
"df2 = gpd.read_file(fp2)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"id": "PvWxEEyUw-es"
},
"outputs": [
{
"data": {
"text/html": [
"