{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Geometric operations\n", "\n", "## Overlay analysis\n", "\n", "In this tutorial, the aim is to make an overlay analysis where we create a new layer based on geometries from a dataset that `intersect` with geometries of another layer. As our test case, we will select Polygon grid cells from `TravelTimes_to_5975375_RailwayStation_Helsinki.shp` that intersects with municipality borders of Helsinki found in `Helsinki_borders.shp`.\n", "\n", "Typical overlay operations are (source: [QGIS docs](https://docs.qgis.org/2.8/en/docs/gentle_gis_introduction/vector_spatial_analysis_buffers.html#more-spatial-analysis-tools)):\n", "![](img/overlay_operations.png)\n", "\n", "## Download data\n", "\n", "For this lesson, you should [download a data package](https://github.com/AutoGIS/data/raw/master/L4_data.zip) that includes 3 files:\n", "\n", " - Helsinki_borders.shp\n", " - Travel_times_to_5975375_RailwayStation.shp\n", " - Amazon_river.shp\n", " \n", " \n", "You can download the data following these steps: \n", "\n", "1. Navigate to the correct folder:\n", " \n", "```\n", "cd autogis/notebooks/L4/data\n", "\n", "```\n", "\n", "2. Download the zip-file from https://github.com/AutoGIS/data/raw/master/L4_data.zip using wget\n", "\n", "```\n", "wget https://github.com/AutoGIS/data/raw/master/L4_data.zip\n", "\n", "```\n", "\n", "3. Unzip the file\n", "\n", "```\n", "$ unzip L4_data.zip\n", "```\n", "\n", "You should now see the files in the `data` folder.Let's first read the data and see how they look like." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import geopandas as gpd\n", "import matplotlib.pyplot as plt\n", "import shapely.speedups\n", "%matplotlib inline\n", "\n", "# File paths\n", "border_fp = \"data/Helsinki_borders.shp\"\n", "grid_fp = \"data/TravelTimes_to_5975375_RailwayStation.shp\"\n", "\n", "# Read files\n", "grid = gpd.read_file(grid_fp)\n", "hel = gpd.read_file(border_fp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's do a quick overlay visualization of the two layers:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the layers\n", "ax = grid.plot(facecolor='gray')\n", "hel.plot(ax=ax, facecolor='None', edgecolor='blue')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here the grey area is the Travel Time Matrix - a data set that contains 13231 grid squares (13231 rows of data) that covers the Helsinki region, and the blue area represents the municipality of Helsinki. Our goal is to conduct an overlay analysis and select the geometries from the grid polygon layer that intersect with the Helsinki municipality polygon.\n", "\n", "When conducting overlay analysis, it is important to first check that the CRS of the layers match. The overlay visualization indicates that everything should be ok (the layers are plotted nicely on top of each other). However, let's still check if the crs match using Python:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epsg:3067\n" ] } ], "source": [ "# Check the crs of the municipality polygon\n", "print(hel.crs)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Ensure that the CRS matches, if not raise an AssertionError\n", "assert hel.crs == grid.crs, \"CRS differs between layers!\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Indeed, they do. We are now ready to conduct an overlay analysis between these layers. \n", "\n", "We will create a new layer based on grid polygons that `intersect` with our Helsinki layer. We can use a function called `overlay()` to conduct the overlay analysis that takes as an input 1) first GeoDataFrame, 2) second GeoDataFrame, and 3) parameter `how` that can be used to control how the overlay analysis is conducted (possible values are `'intersection'`, `'union'`, `'symmetric_difference'`, `'difference'`, and `'identity'`):" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "intersection = gpd.overlay(grid, hel, how='intersection')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's plot our data and see what we have:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "intersection.plot(color=\"b\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a result, we now have only those grid cells that intersect with the Helsinki borders. If you look closely, you can also observe that **the grid cells are clipped based on the boundary.**\n", "\n", "- Whatabout the data attributes? Let's see what we have:\n" ] }, { "cell_type": "code", "execution_count": 7, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
car_m_dcar_m_tcar_r_dcar_r_tfrom_idpt_m_dpt_m_tpt_m_ttpt_r_dpt_r_tpt_r_ttto_idwalk_dwalk_tGML_IDNAMEFINNAMESWENATCODEgeometry
029476412948346587627429990769524984779959753752553236527517366HelsinkiHelsingfors091POLYGON ((402250.000 6685750.000, 402024.224 6...
129456412946246587627529866749524860759359753752540836327517366HelsinkiHelsingfors091POLYGON ((402367.890 6685750.000, 402250.000 6...
2367725036778565876278335411161374426513014659753753111044427517366HelsinkiHelsingfors091POLYGON ((403250.000 6685750.000, 403148.515 6...
3368984936904565876279337201191414444413215559753753128944727517366HelsinkiHelsingfors091POLYGON ((403456.484 6685750.000, 403250.000 6...
429411402941844587812829944759524938769959753752548636427517366HelsinkiHelsingfors091POLYGON ((402000.000 6685500.000, 401900.425 6...
\n", "
" ], "text/plain": [ " car_m_d car_m_t car_r_d car_r_t from_id pt_m_d pt_m_t pt_m_tt \\\n", "0 29476 41 29483 46 5876274 29990 76 95 \n", "1 29456 41 29462 46 5876275 29866 74 95 \n", "2 36772 50 36778 56 5876278 33541 116 137 \n", "3 36898 49 36904 56 5876279 33720 119 141 \n", "4 29411 40 29418 44 5878128 29944 75 95 \n", "\n", " pt_r_d pt_r_t pt_r_tt to_id walk_d walk_t GML_ID NAMEFIN \\\n", "0 24984 77 99 5975375 25532 365 27517366 Helsinki \n", "1 24860 75 93 5975375 25408 363 27517366 Helsinki \n", "2 44265 130 146 5975375 31110 444 27517366 Helsinki \n", "3 44444 132 155 5975375 31289 447 27517366 Helsinki \n", "4 24938 76 99 5975375 25486 364 27517366 Helsinki \n", "\n", " NAMESWE NATCODE geometry \n", "0 Helsingfors 091 POLYGON ((402250.000 6685750.000, 402024.224 6... \n", "1 Helsingfors 091 POLYGON ((402367.890 6685750.000, 402250.000 6... \n", "2 Helsingfors 091 POLYGON ((403250.000 6685750.000, 403148.515 6... \n", "3 Helsingfors 091 POLYGON ((403456.484 6685750.000, 403250.000 6... \n", "4 Helsingfors 091 POLYGON ((402000.000 6685500.000, 401900.425 6... " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "intersection.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, due to the overlay analysis, the dataset contains the attributes from both input layers.\n", "\n", "Let's save our result grid as a GeoJSON file that is commonly used file format nowadays for storing spatial data." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Output filepath\n", "outfp = \"data/TravelTimes_to_5975375_RailwayStation_Helsinki.geojson\"\n", "\n", "# Use GeoJSON driver\n", "intersection.to_file(outfp, driver=\"GeoJSON\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many more examples for different types of overlay analysis in [Geopandas documentation](http://geopandas.org/set_operations.html) where you can go and learn more." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Aggregating data\n", "\n", "Data aggregation refers to a process where we combine data into groups. When doing spatial data aggregation, we merge the geometries together into coarser units (based on some attribute), and can also calculate summary statistics for these combined geometries from the original, more detailed values. For example, suppose that we are interested in studying continents, but we only have country-level data like the country dataset. If we aggregate the data by continent, we would convert the country-level data into a continent-level dataset.\n", "\n", "In this tutorial, we will aggregate our travel time data by car travel times (column `car_r_t`), i.e. the grid cells that have the same travel time to Railway Station will be merged together.\n", "\n", "- For doing the aggregation we will use a function called `dissolve()` that takes as input the column that will be used for conducting the aggregation:\n" ] }, { "cell_type": "code", "execution_count": 9, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
geometrycar_m_dcar_m_tcar_r_dfrom_idpt_m_dpt_m_tpt_m_ttpt_r_dpt_r_tpt_r_ttto_idwalk_dwalk_tGML_IDNAMEFINNAMESWENATCODE
car_r_t
-1MULTIPOLYGON (((388000.000 6668750.000, 387750...-1-1-15913094-1-1-1-1-1-1-1-1-127517366HelsinkiHelsingfors091
0POLYGON ((386000.000 6672000.000, 385750.000 6...000597537500000059753750027517366HelsinkiHelsingfors091
7POLYGON ((386250.000 6671750.000, 386000.000 6...105171051597373961756617565975375448627517366HelsinkiHelsingfors091
8MULTIPOLYGON (((386250.000 6671500.000, 386000...12868128659737367061010706101059753757061027517366HelsinkiHelsingfors091
9MULTIPOLYGON (((386500.000 6671250.000, 386250...18719187159704571384111313941112597537512491827517366HelsinkiHelsingfors091
\n", "
" ], "text/plain": [ " geometry car_m_d car_m_t \\\n", "car_r_t \n", "-1 MULTIPOLYGON (((388000.000 6668750.000, 387750... -1 -1 \n", " 0 POLYGON ((386000.000 6672000.000, 385750.000 6... 0 0 \n", " 7 POLYGON ((386250.000 6671750.000, 386000.000 6... 1051 7 \n", " 8 MULTIPOLYGON (((386250.000 6671500.000, 386000... 1286 8 \n", " 9 MULTIPOLYGON (((386500.000 6671250.000, 386250... 1871 9 \n", "\n", " car_r_d from_id pt_m_d pt_m_t pt_m_tt pt_r_d pt_r_t pt_r_tt \\\n", "car_r_t \n", "-1 -1 5913094 -1 -1 -1 -1 -1 -1 \n", " 0 0 5975375 0 0 0 0 0 0 \n", " 7 1051 5973739 617 5 6 617 5 6 \n", " 8 1286 5973736 706 10 10 706 10 10 \n", " 9 1871 5970457 1384 11 13 1394 11 12 \n", "\n", " to_id walk_d walk_t GML_ID NAMEFIN NAMESWE NATCODE \n", "car_r_t \n", "-1 -1 -1 -1 27517366 Helsinki Helsingfors 091 \n", " 0 5975375 0 0 27517366 Helsinki Helsingfors 091 \n", " 7 5975375 448 6 27517366 Helsinki Helsingfors 091 \n", " 8 5975375 706 10 27517366 Helsinki Helsingfors 091 \n", " 9 5975375 1249 18 27517366 Helsinki Helsingfors 091 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Conduct the aggregation\n", "dissolved = intersection.dissolve(by=\"car_r_t\")\n", "\n", "# What did we get\n", "dissolved.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Let's compare the number of cells in the layers before and after the aggregation:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows in original intersection GeoDataFrame: 3826\n", "Rows in dissolved layer: 51\n" ] } ], "source": [ "print('Rows in original intersection GeoDataFrame:', len(intersection))\n", "print('Rows in dissolved layer:', len(dissolved))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Indeed the number of rows in our data has decreased and the Polygons were merged together.\n", "\n", "What actually happened here? Let's take a closer look. \n", "\n", "- Let's see what columns we have now in our GeoDataFrame:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['geometry', 'car_m_d', 'car_m_t', 'car_r_d', 'from_id', 'pt_m_d',\n", " 'pt_m_t', 'pt_m_tt', 'pt_r_d', 'pt_r_t', 'pt_r_tt', 'to_id', 'walk_d',\n", " 'walk_t', 'GML_ID', 'NAMEFIN', 'NAMESWE', 'NATCODE'],\n", " dtype='object')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dissolved.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, the column that we used for conducting the aggregation (`car_r_t`) can not be found from the columns list anymore. What happened to it?\n", "\n", "- Let's take a look at the indices of our GeoDataFrame:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Int64Index([-1, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,\n", " 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,\n", " 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,\n", " 56],\n", " dtype='int64', name='car_r_t')" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dissolved.index" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Aha! Well now we understand where our column went. It is now used as index in our `dissolved` GeoDataFrame. \n", "\n", "- Now, we can for example select only such geometries from the layer that are for example exactly 15 minutes away from the Helsinki Railway Station:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "geometry (POLYGON ((387750.0001355155 6669250.000042822...\n", "car_m_d 7458\n", "car_m_t 13\n", "car_r_d 7458\n", "from_id 5934913\n", "pt_m_d 6858\n", "pt_m_t 26\n", "pt_m_tt 30\n", "pt_r_d 6858\n", "pt_r_t 27\n", "pt_r_tt 32\n", "to_id 5975375\n", "walk_d 6757\n", "walk_t 97\n", "GML_ID 27517366\n", "NAMEFIN Helsinki\n", "NAMESWE Helsingfors\n", "NATCODE 091\n", "Name: 15, dtype: object" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Select only geometries that are within 15 minutes away\n", "dissolved.loc[15]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pandas.core.series.Series" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# See the data type\n", "type(dissolved.loc[15])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "geometry (POLYGON ((387750.0001355155 6669250.000042822...\n", "car_m_d 7458\n", "car_m_t 13\n", "car_r_d 7458\n", "from_id 5934913\n", "Name: 15, dtype: object" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# See the data\n", "dissolved.loc[15].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, as a result, we have now a Pandas `Series` object containing basically one row from our original aggregated GeoDataFrame.\n", "\n", "Let's also visualize those 15 minute grid cells.\n", "\n", "- First, we need to convert the selected row back to a GeoDataFrame:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# Create a GeoDataFrame\n", "selection = gpd.GeoDataFrame([dissolved.loc[15]], crs=dissolved.crs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Plot the selection on top of the entire grid:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot all the grid cells, and the grid cells that are 15 minutes a way from the Railway Station\n", "ax = dissolved.plot(facecolor='gray')\n", "selection.plot(ax=ax, facecolor='red')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simplifying geometries" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sometimes it might be useful to be able to simplify geometries. This could be something to consider for example when you have very detailed spatial features that cover the whole world. If you make a map that covers the whole world, it is unnecessary to have really detailed geometries because it is simply impossible to see those small details from your map. Furthermore, it takes a long time to actually render a large quantity of features into a map. Here, we will see how it is possible to simplify geometric features in Python.\n", "\n", "As an example we will use data representing the Amazon river in South America, and simplify it's geometries.\n", "\n", "- Let's first read the data and see how the river looks like:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PROJCS[\"Mercator_2SP\",GEOGCS[\"GCS_GRS 1980(IUGG, 1980)\",DATUM[\"D_unknown\",SPHEROID[\"GRS80\",6378137,298.257222101]],PRIMEM[\"Unknown\",0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Mercator_2SP\"],PARAMETER[\"standard_parallel_1\",-2],PARAMETER[\"central_meridian\",-43],PARAMETER[\"false_easting\",5000000],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import geopandas as gpd\n", "\n", "# File path\n", "fp = \"data/Amazon_river.shp\"\n", "data = gpd.read_file(fp)\n", "\n", "# Print crs\n", "print(data.crs)\n", "\n", "# Plot the river\n", "data.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The LineString that is presented here is quite detailed, so let's see how we can generalize them a bit. As we can see from the coordinate reference system, the data is projected in a metric system using [Mercator projection based on SIRGAS datum](http://spatialreference.org/ref/sr-org/7868/). \n", "\n", "- Generalization can be done easily by using a Shapely function called `.simplify()`. The `tolerance` parameter can be used to adjusts how much geometries should be generalized. **The tolerance value is tied to the coordinate system of the geometries**. Hence, the value we pass here is 20 000 **meters** (20 kilometers).\n", "\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Generalize geometry\n", "data['geom_gen'] = data.simplify(tolerance=20000)\n", "\n", "# Set geometry to be our new simlified geometry\n", "data = data.set_geometry('geom_gen')\n", "\n", "# Plot \n", "data.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nice! As a result, now we have simplified our LineString quite significantly as we can see from the map." ] } ], "metadata": { "anaconda-cloud": {}, "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.8.6" } }, "nbformat": 4, "nbformat_minor": 4 }