{ "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": [ "![img](img-markdown/New_York_regions_map.jpeg \"Title\")" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BoroCodeBoroNameShape_LengShape_Areageometry
05Staten Island330470.0103321.623820e+09MULTIPOLYGON (((970217.022 145643.332, 970227....
14Queens896344.0477633.045213e+09MULTIPOLYGON (((1029606.077 156073.814, 102957...
23Brooklyn741080.5231661.937479e+09MULTIPOLYGON (((1021176.479 151374.797, 102100...
31Manhattan359299.0964716.364715e+08MULTIPOLYGON (((981219.056 188655.316, 980940....
42Bronx464392.9918241.186925e+09MULTIPOLYGON (((1012821.806 229228.265, 101278...
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
geometryaddress
0POINT (-74.14960 40.58346)Staten Island, Richmond County, New York, Unit...
1POINT (-73.82831 40.71351)Queens, Queens County, New York, United States
2POINT (-73.94972 40.65260)Brooklyn, Kings County, New York, United States
3POINT (-73.95989 40.78962)Manhattan, New York County, New York, United S...
4POINT (-73.87859 40.84665)The Bronx, Bronx County, New York, United States
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idaddr
0100Walmart Supercenter, 141, Washington Avenue E...
11012055, Niagara Falls Boulevard, Amherst, Erie ...
2102Walmart Supercenter, 297, Grant Avenue, City ...
3103Walmart Supercenter, 4133, Veterans Memorial ...
41043191, County Road 4, Town of Canandaigua, Ont...
510530, Broome Street, Catskill, Town of Catskill...
6106161, Centereach Mall, Suffolk County, New Yor...
7108Citi Trends, 100, East Thruway Plaza Drive, T...
8109Walmart Supercenter, 5033, Transit Road, East...
9110Runnings, 3949, State Route 31, Town of Clay,...
10111Walmart Supercenter, 139, Merchant Place, Tow...
11112279, Troy Road, Town of East Greenbush, Renss...
1211425737 US 11 Evans Mills NY 13637
1311510401 Bennett Road Fredonia NY 14063
141174300 Lakeville Road Geneseo NY 14454
15118200 Dutch Meadows Ln Glenville NY 12302
16119100 Elm Ridge Center Dr Greece NY 14626
171201549 9 Halfmoon NY 12065
181215360 Southwestern Blvd Hamburg NY 14075
191232 Gannett Dr Johnson City NY 13790
20124350 E Fairmount Ave Lakewood NY 14750
211254975 Transit Rd Lancaster NY 14086
22126579 Troy-Schenectady Road Latham NY 12110
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
geometryaddressidaddr
0POINT (-73.84703 42.69495)Walmart Supercenter, 141, Washington Avenue Ex...100Walmart Supercenter, 141, Washington Avenue E...
1POINT (-78.82218 43.01100)2055, Niagara Falls Boulevard, Town of Amherst...1012055, Niagara Falls Boulevard, Amherst, Erie ...
2POINT (-76.54815 42.95406)Walmart Supercenter, 297, Grant Avenue, City o...102Walmart Supercenter, 297, Grant Avenue, City ...
3POINT (-78.20803 43.01360)Walmart Supercenter, 4133, Veterans Memorial D...103Walmart Supercenter, 4133, Veterans Memorial ...
4POINT (-77.24682 42.90172)3191, County Road 4, Town of Canandaigua, Onta...1043191, County Road 4, Town of Canandaigua, Ont...
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
geometryaddress
0POINT (-73.84703 42.69495)Walmart Supercenter, 141, Washington Avenue Ex...
1POINT (-78.82218 43.01100)2055, Niagara Falls Boulevard, Town of Amherst...
2POINT (-76.54815 42.95406)Walmart Supercenter, 297, Grant Avenue, City o...
3POINT (-78.20803 43.01360)Walmart Supercenter, 4133, Veterans Memorial D...
4POINT (-77.24682 42.90172)3191, County Road 4, Town of Canandaigua, Onta...
5POINT (-73.87106 42.21629)30, Broome Street, Catskill, Town of Catskill,...
6POINT (-73.08255 40.85993)161, Centereach Mall, Suffolk County, New York...
7POINT (-78.77824 42.90475)Citi Trends, 100, East Thruway Plaza Drive, Th...
8POINT (-78.69387 42.98329)Walmart Supercenter, 5033, Transit Road, Easte...
9POINT (-76.24021 43.18815)Runnings, 3949, State Route 31, Town of Clay, ...
10POINT (-74.45542 42.68246)Walmart Supercenter, 139, Merchant Place, Town...
11POINT (-73.69970 42.64295)KeyBank, 279, Troy Road, Town of East Greenbus...
12POINT (-75.82170 44.07066)US 11, Calcium, Le Ray, Jefferson County, New ...
13POINT (-79.31335 42.45387)Walmart Supercenter, 10401, Bennett Road, Fred...
14POINT (-77.78476 42.79901)4300, Lakeville Road, Village of Geneseo, Town...
15POINT (-73.94423 42.84172)200, Dutch Meadows Lane, Town of Glenville, Sc...
16POINT (-77.73073 43.21536)100, Elm Ridge Center Drive, Elm Ridge Center,...
17POINT (-73.73709 42.84462)Halfmoon, Town of Halfmoon, Saratoga County, N...
18POINT (-78.87170 42.74320)Walmart Supercenter, 5360, Southwestern Boulev...
19POINT (-75.94702 42.11535)Walmart Supercenter, 2, Gannett Drive, Village...
20POINT (-79.29999 42.09681)Walmart Supercenter, 350, East Fairmount Avenu...
21POINT (-78.69682 42.88252)4975, Transit Road, Town of Lancaster, Erie Co...
22POINT (-73.76341 42.75302)579, Troy Schenectady Road, Latham, Town of Co...
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NAMEABBREVGNIS_IDFIPS_CODESWISNYSP_ZONEPOP1990POP2000POP2010POP2020DOS_LLDOSLL_DATENYCCALC_SQ_MIDATEMODShape_LengShape_Areageometry
0AlbanyALBA97409936001010000East2925942945653042040NoneNoneN532.7917792017-11-10166077.8342421.379924e+09MULTIPOLYGON (((-73.67694 42.78341, -73.67728 ...
1AlleganyALLE97410036003020000West5047049927489460NoneNoneN1035.2091312019-04-26210499.3392792.681179e+09MULTIPOLYGON (((-78.04115 42.52082, -78.04115 ...
2BronxBRON97410136005600000Long Island1203789133265013851080NoneNoneY42.3139582019-10-04110631.2507681.095926e+08MULTIPOLYGON (((-73.89688 40.79617, -73.89757 ...
3BroomeBROO97410236007030000Central2121602005362006000NoneNoneN715.2874652019-04-26227933.3320211.852586e+09MULTIPOLYGON (((-75.41849 42.19502, -75.41858 ...
4CattaraugusCATT97410336009040000West8423483955803170NoneNoneN1324.3092192019-04-26276084.5055603.429945e+09MULTIPOLYGON (((-78.46390 42.53635, -78.46388 ...
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NAMEABBREVGNIS_IDFIPS_CODESWISNYSP_ZONEPOP1990POP2000POP2010POP2020DOS_LLDOSLL_DATENYCCALC_SQ_MIDATEMODShape_LengShape_Areageometry
0AlleganyALLE97410036003020000West5047049927489460NoneNoneN1035.2091312019-04-26210499.3392792.681179e+09MULTIPOLYGON (((-78.04115 42.52082, -78.04115 ...
1CattaraugusCATT97410336009040000West8423483955803170NoneNoneN1324.3092192019-04-26276084.5055603.429945e+09MULTIPOLYGON (((-78.46390 42.53635, -78.46388 ...
2ChautauquaCHAU97410536013060000West1418951397501349050NoneNoneN1087.2791772019-04-26231568.8845282.816040e+09MULTIPOLYGON (((-79.06072 42.53784, -79.06071 ...
3ErieERIE97411336029140000West9685329502659190400NoneNoneN1048.1595522017-10-30366827.1897292.714721e+09MULTIPOLYGON (((-78.90772 42.93463, -78.90302 ...
4GeneseeGENE97411736037180000West6006060370600790NoneNoneN496.0570482018-02-12155397.0826261.284782e+09MULTIPOLYGON (((-77.99726 43.13297, -77.99695 ...
\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": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# dissolve polygon based on zone\n", "polygon = west_ny.dissolve(by='NYSP_ZONE')\n", "polygon.plot()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "id": "97jitElaw-eo" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
geometryNAMEABBREVGNIS_IDFIPS_CODESWISPOP1990POP2000POP2010POP2020DOS_LLDOSLL_DATENYCCALC_SQ_MIDATEMODShape_LengShape_Area
NYSP_ZONE
WestMULTIPOLYGON (((-78.90772 42.93463, -78.90302 ...AlleganyALLE974100360030200005047049927489460NoneNoneN1035.2091312019-04-26210499.3392792.681179e+09
\n", "
" ], "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
geometryaddress
1POINT (-78.82218 43.01100)2055, Niagara Falls Boulevard, Town of Amherst...
3POINT (-78.20803 43.01360)Walmart Supercenter, 4133, Veterans Memorial D...
7POINT (-78.77824 42.90475)Citi Trends, 100, East Thruway Plaza Drive, Th...
8POINT (-78.69387 42.98329)Walmart Supercenter, 5033, Transit Road, Easte...
13POINT (-79.31335 42.45387)Walmart Supercenter, 10401, Bennett Road, Fred...
14POINT (-77.78476 42.79901)4300, Lakeville Road, Village of Geneseo, Town...
16POINT (-77.73073 43.21536)100, Elm Ridge Center Drive, Elm Ridge Center,...
18POINT (-78.87170 42.74320)Walmart Supercenter, 5360, Southwestern Boulev...
20POINT (-79.29999 42.09681)Walmart Supercenter, 350, East Fairmount Avenu...
21POINT (-78.69682 42.88252)4975, Transit Road, Town of Lancaster, Erie Co...
\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": [ "![alt text](img-markdown/supermarket-UK.jpg \"Title\")" ] }, { "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
objectidnuts118cdnuts118nmbng_ebng_nlonglatst_areashast_lengthsgeometry
01UKCNorth East (England)417313600358-1.7289055.2970318.592429e+091.008435e+06MULTIPOLYGON (((398583.804 653093.703, 398566....
12UKDNorth West (England)350015506280-2.7723754.4494511.416409e+102.075324e+06MULTIPOLYGON (((357067.497 586765.599, 357029....
23UKEYorkshire and The Humber446903448736-1.2871253.9326401.540912e+101.385386e+06MULTIPOLYGON (((478300.699 518863.096, 478309....
34UKFEast Midlands (England)477660322635-0.8496752.7957191.564327e+101.332317e+06MULTIPOLYGON (((512572.598 414469.499, 512619....
45UKGWest Midlands (England)386294295477-2.2035852.5569691.300374e+109.539014e+05POLYGON ((402840.498 368845.598, 402862.397 36...
\n", "
" ], "text/plain": [ " objectid nuts118cd nuts118nm bng_e bng_n long \\\n", "0 1 UKC North East (England) 417313 600358 -1.72890 \n", "1 2 UKD North West (England) 350015 506280 -2.77237 \n", "2 3 UKE Yorkshire and The Humber 446903 448736 -1.28712 \n", "3 4 UKF East Midlands (England) 477660 322635 -0.84967 \n", "4 5 UKG West Midlands (England) 386294 295477 -2.20358 \n", "\n", " lat st_areasha st_lengths \\\n", "0 55.297031 8.592429e+09 1.008435e+06 \n", "1 54.449451 1.416409e+10 2.075324e+06 \n", "2 53.932640 1.540912e+10 1.385386e+06 \n", "3 52.795719 1.564327e+10 1.332317e+06 \n", "4 52.556969 1.300374e+10 9.539014e+05 \n", "\n", " geometry \n", "0 MULTIPOLYGON (((398583.804 653093.703, 398566.... \n", "1 MULTIPOLYGON (((357067.497 586765.599, 357029.... \n", "2 MULTIPOLYGON (((478300.699 518863.096, 478309.... \n", "3 MULTIPOLYGON (((512572.598 414469.499, 512619.... \n", "4 POLYGON ((402840.498 368845.598, 402862.397 36... " ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Check dataframe of boundary\n", "df1.head()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "id": "l5myD9ptw-es" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
objectidnuts118cdnuts118nmbng_ebng_nlonglatst_areashast_lengthsgeometrycentroid
01UKCNorth East (England)417313600358-1.7289055.2970318.592429e+091.008435e+06MULTIPOLYGON (((398583.804 653093.703, 398566....POINT (406274.318 569213.337)
12UKDNorth West (England)350015506280-2.7723754.4494511.416409e+102.075324e+06MULTIPOLYGON (((357067.497 586765.599, 357029....POINT (353041.284 461726.493)
\n", "
" ], "text/plain": [ " objectid nuts118cd nuts118nm bng_e bng_n long \\\n", "0 1 UKC North East (England) 417313 600358 -1.72890 \n", "1 2 UKD North West (England) 350015 506280 -2.77237 \n", "\n", " lat st_areasha st_lengths \\\n", "0 55.297031 8.592429e+09 1.008435e+06 \n", "1 54.449451 1.416409e+10 2.075324e+06 \n", "\n", " geometry \\\n", "0 MULTIPOLYGON (((398583.804 653093.703, 398566.... \n", "1 MULTIPOLYGON (((357067.497 586765.599, 357029.... \n", "\n", " centroid \n", "0 POINT (406274.318 569213.337) \n", "1 POINT (353041.284 461726.493) " ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create centroid of each NUTS region\n", "df1['centroid'] = df1.centroid\n", "df1.head(2)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "id": "Br9_YWFyw-es" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SIDLONLATNAMESUPERMARKEgeometry
01.0-3.1805655.93667EDINBURGH CAUSEWAYSIDE EXPRESSTescoPOINT (326258.542 672064.843)
12.0-3.1835855.94493EDINBURGH METROTescoPOINT (326085.646 672987.227)
23.0-3.2051855.94444EDINBURGH EARL GREY STREET EXPRESSTescoPOINT (324735.853 672956.000)
34.0-3.2114055.93440EDINBURGH BRUNTSFIELD METROTescoPOINT (324327.860 671845.556)
45.0-3.1801455.96144EDINBURGH LEITH WALK EXPRESSTescoPOINT (326331.821 674820.767)
.....................
25922593.0-5.0685150.26167Sainsbury's TruroSainsburysPOINT (181321.563 44685.173)
25932594.0-3.1885055.65400Sainsbury's PeeblesSainsburysPOINT (325222.928 640618.997)
25942595.0-3.1930055.65700Tesco's PeeblesTescoPOINT (324945.555 640957.675)
25952596.0-4.6150055.48700Sainsbury's AyrSainsburysPOINT (234788.209 624502.248)
25962597.0-1.7390055.05000Sainsbury's PontelandSainsburysPOINT (416673.661 572798.737)
\n", "

2597 rows Ă— 6 columns

\n", "
" ], "text/plain": [ " SID LON LAT NAME \\\n", "0 1.0 -3.18056 55.93667 EDINBURGH CAUSEWAYSIDE EXPRESS \n", "1 2.0 -3.18358 55.94493 EDINBURGH METRO \n", "2 3.0 -3.20518 55.94444 EDINBURGH EARL GREY STREET EXPRESS \n", "3 4.0 -3.21140 55.93440 EDINBURGH BRUNTSFIELD METRO \n", "4 5.0 -3.18014 55.96144 EDINBURGH LEITH WALK EXPRESS \n", "... ... ... ... ... \n", "2592 2593.0 -5.06851 50.26167 Sainsbury's Truro \n", "2593 2594.0 -3.18850 55.65400 Sainsbury's Peebles \n", "2594 2595.0 -3.19300 55.65700 Tesco's Peebles \n", "2595 2596.0 -4.61500 55.48700 Sainsbury's Ayr \n", "2596 2597.0 -1.73900 55.05000 Sainsbury's Ponteland \n", "\n", " SUPERMARKE geometry \n", "0 Tesco POINT (326258.542 672064.843) \n", "1 Tesco POINT (326085.646 672987.227) \n", "2 Tesco POINT (324735.853 672956.000) \n", "3 Tesco POINT (324327.860 671845.556) \n", "4 Tesco POINT (326331.821 674820.767) \n", "... ... ... \n", "2592 Sainsburys POINT (181321.563 44685.173) \n", "2593 Sainsburys POINT (325222.928 640618.997) \n", "2594 Tesco POINT (324945.555 640957.675) \n", "2595 Sainsburys POINT (234788.209 624502.248) \n", "2596 Sainsburys POINT (416673.661 572798.737) \n", "\n", "[2597 rows x 6 columns]" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Check dataframe of supermarket\n", "df2" ] }, { "cell_type": "markdown", "metadata": { "id": "GwiRL2Q3w-es" }, "source": [ "So far, we have imported the data of boundary and supermarket locations as dataframes. As you can see, there are 2,597 supermarkets in UK. However, we don't know which ones are the nearest supermarkets to the centroid of each NUTS region. To get more understanding about location data, let's visualize them in a plot by using `matplotlib`." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "id": "gBVYJhShw-es" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# import matplotlib module\n", "import matplotlib.pyplot as plt\n", "\n", "# Make subplots that are next to each other\n", "fig, ax = plt.subplots(figsize=(8, 8))\n", "\n", "# Data to plot\n", "df1.plot(ax=ax, column='nuts118nm') # nuts boundary\n", "df2.plot(ax=ax, markersize=0.2, color='yellow') # location of supermarkets\n", "df1.centroid.plot(ax=ax, color= 'black', markersize=3) # centroid of nuts boundary\n", "\n", "# set plotting frame\n", "plt.xlim(-300000, 1000000)\n", "plt.show();" ] }, { "cell_type": "markdown", "metadata": { "id": "YETUAi3Jw-es" }, "source": [ "Now we can see where those supermarkets located in the map. Thus, let's start finding the nearest supermarkets step by step." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "id": "ufqODhFTw-et" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "image/svg+xml": "", "text/plain": [ "" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create a union polygon (make all polygons into one)\n", "df2_union = df2['geometry'].unary_union\n", "\n", "print(type(df2_union))\n", "df2_union" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "id": "7wg9HBf7w-et" }, "outputs": [], "source": [ "# Find the nearest supermarket to the North East nuts region.\n", "nearest = nearest_points(df1['centroid'][0], df2_union)[1]" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "id": "bXb8RT4Aw-et" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SIDLONLATNAMESUPERMARKEgeometry
25962597.0-1.73955.05Sainsbury's PontelandSainsburysPOINT (416673.661 572798.737)
\n", "
" ], "text/plain": [ " SID LON LAT NAME SUPERMARKE \\\n", "2596 2597.0 -1.739 55.05 Sainsbury's Ponteland Sainsburys \n", "\n", " geometry \n", "2596 POINT (416673.661 572798.737) " ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get the information row of the nearest supermarket\n", "row_df2 = df2[df2['geometry'] == nearest]\n", "row_df2" ] }, { "cell_type": "markdown", "metadata": { "id": "557ZQfv_w-et" }, "source": [ "**Write a loop to calculate nearest point**" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "id": "DE6M3Wbnw-et" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SIDLONLATNAMESUPERMARKEgeometry
25962597.0-1.7390055.05000Sainsbury's PontelandSainsburysPOINT (416673.661 572798.737)
21032104.0-2.8219554.05636LancasterAsdaPOINT (346199.257 462525.885)
17131714.0-1.1268253.95412Morrisons - Acomb - Font Street - Acomb - No...MorrisonsPOINT (457294.177 451192.090)
531532.0-0.6663552.91421GRANTHAM EXPRESSTescoPOINT (489669.615 335991.122)
592593.0-2.2326152.42122COOKLEY EXPRESSTescoPOINT (384182.799 280350.450)
766767.00.3975752.26007NEWMARKETTescoPOINT (563613.794 265109.619)
12041205.0-0.0999951.49448ELEPHANT AND CASTLE METROTescoPOINT (531884.737 178970.946)
19671968.0-0.5670251.31692Morrisons - Woking - 82 Goldsworth Road - Wok...MorrisonsPOINT (499854.725 158489.166)
13341335.0-3.1213151.00524TAUNTON GALMINGTON EXPRESSTescoPOINT (321334.410 123454.491)
18501851.0-4.0673352.40563Morrisons - Aberystwyth - Parc Y Dolai - Llan...MorrisonsPOINT (259382.146 280601.507)
99100.0-3.8294357.19116AVIEMORE METROTescoPOINT (289453.027 812541.912)
21412142.0-6.7460854.63502Cookstown Northern IrelandAsdaPOINT (93790.920 536946.043)
\n", "
" ], "text/plain": [ " SID LON LAT \\\n", "2596 2597.0 -1.73900 55.05000 \n", "2103 2104.0 -2.82195 54.05636 \n", "1713 1714.0 -1.12682 53.95412 \n", "531 532.0 -0.66635 52.91421 \n", "592 593.0 -2.23261 52.42122 \n", "766 767.0 0.39757 52.26007 \n", "1204 1205.0 -0.09999 51.49448 \n", "1967 1968.0 -0.56702 51.31692 \n", "1334 1335.0 -3.12131 51.00524 \n", "1850 1851.0 -4.06733 52.40563 \n", "99 100.0 -3.82943 57.19116 \n", "2141 2142.0 -6.74608 54.63502 \n", "\n", " NAME SUPERMARKE \\\n", "2596 Sainsbury's Ponteland Sainsburys \n", "2103 Lancaster Asda \n", "1713 Morrisons - Acomb - Font Street - Acomb - No... Morrisons \n", "531 GRANTHAM EXPRESS Tesco \n", "592 COOKLEY EXPRESS Tesco \n", "766 NEWMARKET Tesco \n", "1204 ELEPHANT AND CASTLE METRO Tesco \n", "1967 Morrisons - Woking - 82 Goldsworth Road - Wok... Morrisons \n", "1334 TAUNTON GALMINGTON EXPRESS Tesco \n", "1850 Morrisons - Aberystwyth - Parc Y Dolai - Llan... Morrisons \n", "99 AVIEMORE METRO Tesco \n", "2141 Cookstown Northern Ireland Asda \n", "\n", " geometry \n", "2596 POINT (416673.661 572798.737) \n", "2103 POINT (346199.257 462525.885) \n", "1713 POINT (457294.177 451192.090) \n", "531 POINT (489669.615 335991.122) \n", "592 POINT (384182.799 280350.450) \n", "766 POINT (563613.794 265109.619) \n", "1204 POINT (531884.737 178970.946) \n", "1967 POINT (499854.725 158489.166) \n", "1334 POINT (321334.410 123454.491) \n", "1850 POINT (259382.146 280601.507) \n", "99 POINT (289453.027 812541.912) \n", "2141 POINT (93790.920 536946.043) " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create an empty pandas dataframe\n", "nearest_pt = pd.DataFrame()\n", "\n", "for i in range(len(df1)):\n", " \n", " # Find the nearest supermarket to the North East nuts region.\n", " nearest = nearest_points(df1['centroid'][i], df2_union)[1]\n", " \n", " # Get the information row of the nearest supermarket\n", " row_df2 = df2[df2['geometry'] == nearest]\n", " \n", " # Write each result in pandas dataframe\n", " nearest_pt = nearest_pt.append(row_df2)\n", " \n", "nearest_pt" ] }, { "cell_type": "markdown", "metadata": { "id": "JCBKPP4sw-et" }, "source": [ "**Write a function to calculate nearest point**" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "id": "34R3q-09w-et" }, "outputs": [], "source": [ "# Definie a function to find nearest points and return the output from spcified column\n", "def gpd_nearest(row, target, origin_geo='geometry', output_column=None):\n", " \n", " # Create a destination geometry by making union polygon \n", " destination_geo = target['geometry'].unary_union\n", " \n", " # Find the geometry that is closest\n", " nearest = nearest_points(row[origin_geo], destination_geo)[1]\n", " \n", " # Get the row corresponding to the nearest destination\n", " row_target = target[target['geometry'] == nearest]\n", " \n", " # Get the value from destination based on provided column name\n", " output = row_target[output_column].values\n", "\n", " return output" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "id": "MPllgPCMw-eu" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
objectidnuts118cdnuts118nmbng_ebng_nlonglatst_areashast_lengthsgeometrycentroidnearest_loc
01UKCNorth East (England)417313600358-1.7289055.2970318.592429e+091.008435e+06MULTIPOLYGON (((398583.804 653093.703, 398566....POINT (406274.318 569213.337)[2597.0]
12UKDNorth West (England)350015506280-2.7723754.4494511.416409e+102.075324e+06MULTIPOLYGON (((357067.497 586765.599, 357029....POINT (353041.284 461726.493)[2104.0]
23UKEYorkshire and The Humber446903448736-1.2871253.9326401.540912e+101.385386e+06MULTIPOLYGON (((478300.699 518863.096, 478309....POINT (450735.172 452358.014)[1714.0]
34UKFEast Midlands (England)477660322635-0.8496752.7957191.564327e+101.332317e+06MULTIPOLYGON (((512572.598 414469.499, 512619....POINT (480316.348 337075.435)[532.0]
45UKGWest Midlands (England)386294295477-2.2035852.5569691.300374e+109.539014e+05POLYGON ((402840.498 368845.598, 402862.397 36...POINT (381687.482 286831.267)[593.0]
\n", "
" ], "text/plain": [ " objectid nuts118cd nuts118nm bng_e bng_n long \\\n", "0 1 UKC North East (England) 417313 600358 -1.72890 \n", "1 2 UKD North West (England) 350015 506280 -2.77237 \n", "2 3 UKE Yorkshire and The Humber 446903 448736 -1.28712 \n", "3 4 UKF East Midlands (England) 477660 322635 -0.84967 \n", "4 5 UKG West Midlands (England) 386294 295477 -2.20358 \n", "\n", " lat st_areasha st_lengths \\\n", "0 55.297031 8.592429e+09 1.008435e+06 \n", "1 54.449451 1.416409e+10 2.075324e+06 \n", "2 53.932640 1.540912e+10 1.385386e+06 \n", "3 52.795719 1.564327e+10 1.332317e+06 \n", "4 52.556969 1.300374e+10 9.539014e+05 \n", "\n", " geometry \\\n", "0 MULTIPOLYGON (((398583.804 653093.703, 398566.... \n", "1 MULTIPOLYGON (((357067.497 586765.599, 357029.... \n", "2 MULTIPOLYGON (((478300.699 518863.096, 478309.... \n", "3 MULTIPOLYGON (((512572.598 414469.499, 512619.... \n", "4 POLYGON ((402840.498 368845.598, 402862.397 36... \n", "\n", " centroid nearest_loc \n", "0 POINT (406274.318 569213.337) [2597.0] \n", "1 POINT (353041.284 461726.493) [2104.0] \n", "2 POINT (450735.172 452358.014) [1714.0] \n", "3 POINT (480316.348 337075.435) [532.0] \n", "4 POINT (381687.482 286831.267) [593.0] " ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Apply function to the dataframe\n", "df1[\"nearest_loc\"] = df1.apply(gpd_nearest, target=df2, origin_geo=\"centroid\", output_column= \"SID\", axis=1)\n", "\n", "df1.head()" ] }, { "cell_type": "markdown", "metadata": { "id": "IQDfxJ6Kw-eu" }, "source": [ "Très bon! By using few different methods, we can finally find the nearest supermarkets to the centroid of each NUTS region in the UK." ] }, { "cell_type": "markdown", "metadata": { "id": "NFcfny9bw-eu" }, "source": [ "---" ] } ], "metadata": { "colab": { "name": "03-Geocoding-and-Nearest-neighbour-analysis.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10" } }, "nbformat": 4, "nbformat_minor": 4 }