Skip to content

Instantly share code, notes, and snippets.

@mrocklin
Last active July 18, 2019 07:50
Show Gist options
  • Save mrocklin/9d4a158afd74d551cd0a4477953af548 to your computer and use it in GitHub Desktop.
Save mrocklin/9d4a158afd74d551cd0a4477953af548 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"How to Parallelize GeoPandas (maybe)\n",
"====================================\n",
"\n",
"This notebook gives examples of how to break apart a geopandas dataset into a GeoDataFrame of GeoDataFrames. It performs a region subselection and a spatial join on the full dataset by manipulating the sub-datasets.\n",
"\n",
"There is no actual parallelism here, but everything here is amenable to being wrapped with [dask.delayed](http://dask.pydata.org/en/latest/delayed.html), which should be able to handle all of the actual execution."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A simple dataset cut into two triangular pieces"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import geopandas as gpd\n",
"import shapely\n",
"import random\n",
"import numpy as np\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16deb8dc88>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16deb8d240>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"points = [shapely.geometry.Point(random.random(), random.random()) for i in range(100)]\n",
"gdf = gpd.GeoDataFrame({'geometry': points, 'value': np.random.random(len(points))})\n",
"gdf.plot()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>geometry</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>POINT (0.93541533352915 0.09510387753660587)</td>\n",
" <td>0.354677</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>POINT (0.0682664027026203 0.6300355077103446)</td>\n",
" <td>0.068994</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>POINT (0.6111960159676231 0.4762759727847248)</td>\n",
" <td>0.490330</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>POINT (0.1918998115120579 0.8120888506748247)</td>\n",
" <td>0.760044</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>POINT (0.8891961071955971 0.07229128951183272)</td>\n",
" <td>0.889795</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" geometry value\n",
"0 POINT (0.93541533352915 0.09510387753660587) 0.354677\n",
"1 POINT (0.0682664027026203 0.6300355077103446) 0.068994\n",
"2 POINT (0.6111960159676231 0.4762759727847248) 0.490330\n",
"3 POINT (0.1918998115120579 0.8120888506748247) 0.760044\n",
"4 POINT (0.8891961071955971 0.07229128951183272) 0.889795"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gdf.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"-0.04 -0.04 1.08 1.08\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,1.0)\"><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.0216\" opacity=\"0.6\" d=\"M 0.0,0.0 L 1.0,0.0 L 0.0,1.0 L 0.0,0.0 z\" /></g></svg>"
],
"text/plain": [
"<shapely.geometry.polygon.Polygon at 0x7f16deb82940>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = shapely.geometry.Polygon([(0, 0), (1, 0), (0, 1)])\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"-0.04 -0.04 1.08 1.08\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,1.0)\"><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.0216\" opacity=\"0.6\" d=\"M 1.0,0.0 L 1.0,1.0 L 0.0,1.0 L 1.0,0.0 z\" /></g></svg>"
],
"text/plain": [
"<shapely.geometry.polygon.Polygon at 0x7f16db366978>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b = shapely.geometry.Polygon([(1, 0), (1, 1), (0, 1)])\n",
"b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Now we separate the data among the two geometries"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"adf = gdf[gdf.intersects(a)]\n",
"bdf = gdf[gdf.intersects(b)]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### And arrange them into a GeoDataFrame of GeoDataFrames"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>geometry</th>\n",
" <th>region</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>POLYGON ((0 0, 1 0, 0 1, 0 0))</td>\n",
" <td>ge...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>POLYGON ((1 0, 1 1, 0 1, 1 0))</td>\n",
" <td>geome...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" geometry \\\n",
"0 POLYGON ((0 0, 1 0, 0 1, 0 0)) \n",
"1 POLYGON ((1 0, 1 1, 0 1, 1 0)) \n",
"\n",
" region \n",
"0 ge... \n",
"1 geome... "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dgdf = gpd.GeoDataFrame({'geometry': [a, b], 'region': [adf, bdf]})\n",
"dgdf"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16db5e5ef0>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16deb82978>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dgdf.plot()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16db232dd8>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nFZOIROf/APNDzBLHYNpGAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16db271f98>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dgdf.region[0].plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Parallel Operation 1: Subset with polygon\n",
"\n",
"Lets select out a region from our super-dataframe. This will force us to think about how to break down a macro-scopic operation into many small operations.\n",
"\n",
"Lets subset out a square from the center of the dataset."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"0.17600000000000002 0.17600000000000002 0.648 0.648\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,1.0)\"><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.012960000000000001\" opacity=\"0.6\" d=\"M 0.2,0.2 L 0.8,0.2 L 0.8,0.8 L 0.2,0.8 L 0.2,0.2 z\" /></g></svg>"
],
"text/plain": [
"<shapely.geometry.polygon.Polygon at 0x7f16db13ad30>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = shapely.geometry.Polygon([(0.2, 0.2), (0.8, 0.2), (0.8, 0.8), (0.2, 0.8)])\n",
"c"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16db0f5d68>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQIAAAD8CAYAAACcoKqNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAERJJREFUeJzt3X2MHHd9x/H3B0cGlYYH1ddC/RzXJlwCJOIanlRBVFTs\noNpUPMhWURsJYoEwoQVVGIHcyCiiAkFEqYtqUEWEBMaNSjmQqRElqIIS5EtxoLbr1DGhvobCkYYi\ntUCw++kfO4b1Ze2bO8/uzM58XtJJO7O/7Hyzd/e+3c1kV7aJiG57XN0DRET9EoKISAgiIiGICBKC\niCAhiAgSgoggIYgIEoKIAK6o68ArVqzwunXr6jp8RCfce++9P7A9sdC62kKwbt06ZmZm6jp8RCdI\n+k6ZdXlqEBEJQUQkBBFBQhARJAQRQckQSNos6aSkU5J2D7h+jaS7JX1D0jcl3VT9qBExLAuGQNIy\nYB+wBZgEdkianLfsXcBB29cD24G/rHrQiBieMucR3ACcsn0aQNIBYBtwvG+NgScVl58MPFTFcJ/+\n9Kf57ne/y9VXX13FzUW0wuMf/3he+MIXIqmy2ywTgpXAmb7tWeB589bcBnxB0puBJwIvHXRDknYC\nOwHWrFmz4IFf/epXc+7cOZ75jJU87deeWmLUiPb7p6/fz8mT97N27drKbrNMCAZlZ/47nu4APmb7\n/ZJeAHxc0rW2/++Cf8jeD+wHmJqaWvBdU99y61v44J9/kAdOf48Dd76Wayd/vcS4Ee32G89+D+fO\nnav0Nsu8WDgLrO7bXsVjH/q/DjgIYPtrwBOAFVUM+Kobt7Nh1SZ+87fez78cr+QZR0TMUyYER4CN\nktZLWk7vxcDpeWv+HfhtAEnPpBeCuaqG3P0Hf5oYRAzRgiGwfRbYBRwGTtD7rwPHJO2VtLVY9jbg\nFkn3AZ8EbnbFH5iQGEQMT6nzCGwfsr3J9gbbtxf79tieLi4ft/0i28+xfZ3tLwxj2MQgYjjG7szC\nxCCiemMXAkgMIqo2liGAxCCiSmMbAkgMIqoy1iGAxCCiCmMfAkgMIi5XK0IAiUHE5WhNCCAxiFiq\nVoUAEoOIpWhdCCAxiFisVoYAEoOIxWhtCCAxiCir1SGAxCCijNaHABKDiIV0IgSQGERcSmdCAIlB\nxMV0KgSQGEQM0rkQQGIQMV8nQwCJQUS/zoYAEoOI8zodAkgMIiAhABKDiISgkBhElyUEfRKD6KpS\nIZC0WdJJSack7R5w/R2SjhZf90v6YfWjjkZiEF20YAgkLQP2AVuASWCHpMn+Nbb/uPiEo+uADwF/\nO4xhRyUxiK4p84jgBuCU7dO2HwUOANsusX4Hvc8/HGuJQXRJmRCsBM70bc8W+x5D0lpgPfCli1y/\nU9KMpJm5uco+LHloEoPoijIh0IB9F/uk4+3AXbbPDbrS9n7bU7anJiYmys5Yq8QguqBMCGaB1X3b\nq4CL/UZspwVPC+ZLDKLtyoTgCLBR0npJy+n9sk/PXyTpGcBTga9VO2IzJAbRZguGwPZZYBdwGDgB\nHLR9TNJeSVv7lu4ADti+2NOGsZcYRFuVOo/A9iHbm2xvsH17sW+P7em+NbfZfsw5Bm2TGEQb5czC\nJUgMom0SgiVKDKJNEoLLkBhEWyQElykxiDZICCqQGMS4SwgqkhjEOEsIKpQYxLhKCCqWGMQ4SgiG\nIDGIcZMQDEliEOMkIRiixCDGRUIwZIlBjIOEYAQSg2i6hGBEEoNosoRghBKDaKqEYMQSg2iihKAG\niUE0TUJQk8QgmiQhqFFiEE2RENQsMYgmSAgaIDGIuiUEDZEYRJ0SggZJDKIupUIgabOkk5JOSRr4\n2QWSXiPpuKRjkj5R7ZjdkRhEHRYMgaRlwD5gCzAJ7JA0OW/NRuAdwItsXwP80RBm7YzEIEatzCOC\nG4BTtk/bfhQ4AGybt+YWYJ/tRwBsf7/aMbsnMYhRKhOClcCZvu3ZYl+/TcAmSV+VdI+kzVUN2GWJ\nQYxKmRBowL75H3R6BbAReAm9D0P9qKSnPOaGpJ2SZiTNzM3NLXbWTkoMYhTKhGAWWN23vQqY/xM5\nC3zG9s9sfxs4SS8MF7C93/aU7amJiYmlztw5iUEMW5kQHAE2SlovaTmwHZiet+bvgBsBJK2g91Th\ndJWDdl1iEMO0YAhsnwV2AYeBE8BB28ck7ZW0tVh2GHhY0nHgbuBPbD88rKG7KjGIYSl1HoHtQ7Y3\n2d5g+/Zi3x7b08Vl236r7Unbz7J9YJhDd1liEMOQMwvHUGIQVUsIxlRiEFVKCMZYYhBVSQjGXGIQ\nVUgIWiAxiMuVELREYhCXIyFokcQgliohaJnEIJYiIWihxCAWKyFoqcQgFiMhaLHEIMpKCFouMYgy\nEoIOSAxiIQlBRyQGcSkJQYckBnExCUHHJAYxSELQQYlBzJcQdFRiEP0Sgg5LDOK8hKDjEoOAhCBI\nDCIhiEJi0G0JQfxcYtBdCUFcIDHoplIhkLRZ0klJpyTtHnD9zZLmJB0tvl5f/agxKolB9ywYAknL\ngH3AFmAS2CFpcsDST9m+rvj6aMVzxoglBt1S5hHBDcAp26dtPwocALYNd6xogsSgO8qEYCVwpm97\nttg33yslfVPSXZJWD7g+xlBi0A1lQqAB+zxv+7PAOtvPBr4I3DnwhqSdkmYkzczNzS1u0qhNYtB+\nZUIwC/T/hV8FXPDTYPth2z8tNj8CPHfQDdneb3vK9tTExMRS5o2aJAbtViYER4CNktZLWg5sB6b7\nF0h6et/mVuBEdSNGUyQG7bVgCGyfBXYBh+n9gh+0fUzSXklbi2W3Sjom6T7gVuDmYQ0c9UoM2qnU\neQS2D9neZHuD7duLfXtsTxeX32H7GtvPsX2j7X8d5tBRr8SgfXJmYSxJYtAuCUEsWWLQHglBXJbE\noB0SgrhsicH4SwiiEonBeEsIojKJwfhKCKJSicF4SgiiconB+EkIYigSg/GSEMTQJAbjIyGIoUoM\nxkNCEEOXGDRfQhAjkRg0W0IQI5MYNFdCECOVGDRTQhAjlxg0T0IQtUgMmiUhiNokBs2REEStEoNm\nSAiidolB/RKCaITEoF4JQTRGYlCfhCAaJTGoR0IQjZMYjF6pEEjaLOmkpFOSdl9i3askWdJUdSNG\nFyUGo7VgCCQtA/YBW4BJYIekyQHrrqT3cWdfr3rI6KbEYHTKPCK4AThl+7TtR4EDwLYB694NvBf4\nSYXzRcclBqNRJgQrgTN927PFvp+TdD2w2vbnKpwtAkgMRqFMCDRgn39+pfQ44A7gbQvekLRT0oyk\nmbm5ufJTRuclBsNVJgSzwOq+7VVA/3fiSuBa4MuSHgSeD0wPesHQ9n7bU7anJiYmlj51dFJiMDxl\nQnAE2ChpvaTlwHZg+vyVtv/b9grb62yvA+4BttqeGcrE0WmJwXAsGALbZ4FdwGHgBHDQ9jFJeyVt\nHfaAEfMlBtUrdR6B7UO2N9neYPv2Yt8e29MD1r4kjwZi2BKDauXMwhhbiUF1EoIYa4lBNRKCGHuJ\nweVLCKIVEoPLkxBEayQGS5cQRKskBkuTEETrJAaLlxBEKyUGi5MQRGslBuUlBNFqiUE5CUG0XmKw\nsIQgOiExuLSEIDojMbi4hCA6JTEYLCGIzkkMHishiE5KDC6UEERnJQa/kBBEpyUGPQlBdF5ikBBE\nAIlBQhBR6HIMEoKIPl2NQUIQMU8XY5AQRAzQtRiUCoGkzZJOSjolafeA698g6VuSjkr6iqTJ6keN\nGK0uxWDBEEhaBuwDtgCTwI4Bv+ifsP0s29cB7wU+UPmkETXoSgzKPCK4AThl+7TtR4EDwLb+BbZ/\n1Lf5RPo+Nj1i3HUhBmVCsBI407c9W+y7gKQ3SXqA3iOCW6sZL6IZ2h6DMiHQgH2P+Ytve5/tDcDb\ngXcNvCFpp6QZSTNzc3OLmzSiZm2OQZkQzAKr+7ZXAZe6Fw4Arxh0he39tqdsT01MTJSfMqIh2hqD\nMiE4AmyUtF7ScmA7cMHHoUva2Lf5cuDfqhsxolnaGIMFQ2D7LLALOAycAA7aPiZpr6StxbJdko5J\nOgq8FfjDoU0c0QBti0Gp8whsH7K9yfYG27cX+/bYni4uv8X2Nbavs32j7WPDHDqiCdoUg5xZGHEZ\n2hKDhCDiMrUhBglBRAXGPQYJQURFxjkGCUFEhcY1BglBRMXGMQYJQcQQjFsMEoKIIRmnGCQEEUM0\nLjFICCKGbBxikBBEjEDTY5AQRIxIk2OQEESMUFNjkBBEjFgTY5AQRNSgaTFICCJq0qQYJAQRNWpK\nDBKCiJo1IQYJQUQD1B2DhCCiIeqMQUIQ0SB1xSAhiGiYOmKQEEQ00KhjkBBENNQoY1AqBJI2Szop\n6ZSk3QOuf6uk45K+KekfJK2tftSI7hlVDBYMgaRlwD5gCzAJ7JA0OW/ZN4Ap288G7qL30egRUYFR\nxKDMI4IbgFO2T9t+lN6nHW/rX2D7btv/W2zeQ+8TkyOiIv0x+M/vPVL57V9RYs1K4Ezf9izwvEus\nfx3w+csZqt8/3z/DI//zX1XdXMTYWv20tZz+jwf48Y9/ykMPPcRVV11V2W2XCYEG7PPAhdJrgSng\nxRe5fiewE2DNmjULHviWnbdw1Ybq/mUjxt3W3385H/7wh1m/fn2ltyt74O/0LxZILwBus/2yYvsd\nALbfM2/dS4EPAS+2/f2FDjw1NeWZmZmlzh0RJUi61/bUQuvKvEZwBNgoab2k5cB2YHrewa4H/grY\nWiYCEdEsC4bA9llgF3AYOAEctH1M0l5JW4tl7wN+GfgbSUclTV/k5iKigcq8RoDtQ8Chefv29F1+\nacVzRcQI5czCiEgIIiIhiAgSgoggIYgISpxQNLQDS3PAd0osXQH8YMjjZIbM0NYZ1tqeWGhRbSEo\nS9JMmTOjMkNmyAxLl6cGEZEQRMR4hGB/3QOQGc7LDD2tm6HxrxFExPCNwyOCiBiyxoSgCW+QWmKG\nN0j6VvF/WH5lwHs3Dn2GvnWvkmRJlb56XeI+uFnSXHEfHJX0+iqPX2aGYs1rip+HY5I+MeoZJN3R\ndx/cL+mHNcywRtLdkr5R/F7ctOSD2a79C1gGPABcBSwH7gMm5625Efil4vIbgU/VMMOT+i5vBf5+\n1DMU664E/pHe+0NOjfg+uBn4i5p/FjbSe8Pcpxbbv1rH96Fv/ZuBv67hftgPvLG4PAk8uNTjNeUR\nQRPeILXMDD/q23wiF3nLtmHOUHg3vXeK/klNxx+mMjPcAuyz/QiAq38znMXeDzuAT9Ywg4EnFZef\nDCz5LY6bEoJBb5C68hLrK32D1MXMIOlNkh6g94t466hnKN4NarXtz1V87FLHL7yyeCh6l6TVNcyw\nCdgk6auS7pG0uYYZACieoq4HvlTDDLcBr5U0S+/9Qt681IM1JQRLeYPU99Uxg+19tjcAbwfeNcoZ\nJD0OuAN4W8XHLXX8wmeBde59hsUXgTtrmOEKek8PXkLvr/FHJT1lxDOctx24y/a5Co9fdoYdwMds\nrwJuAj5e/IwsWlNCMAv0/2VZxYCHOcUbpL6T3nsj/rSOGfocAF4x4hmuBK4FvizpQeD5wHSFLxgu\neB/Yfrjvvv8I8NyKjl16hmLNZ2z/zPa3gZP0wjDKGc7bTvVPC8rO8DrgIIDtrwFPoPf/ICzesF70\nWeQLI1cAp+k9xDr/wsg189ZcT+/Fk401zrCx7/LvAjOjnmHe+i9T7YuFZe6Dp/dd/j3gnhq+D5uB\nO4vLK+g9hP6VUX8fgGcAD1Kcj1PD/fB54Obi8jPphWJJs1Q6/GX+i98E3F/8sr+z2LeX3l9/6D0M\n/R5wtPiarmGGDwLHiuPffalf0mHNMG9tpSEoeR+8p7gP7ivug6tr+D4I+ABwHPgWsL2O7wO95+h/\nVvWxF3E/TAJfLb4XR4HfWeqxcmZhRDTmNYKIqFFCEBEJQUQkBBFBQhARJAQRQUIQESQEEQH8P6QB\nfiwv+r6SAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16db106080>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"geometries = []\n",
"regions = []\n",
"\n",
"for index, (geo, region) in dgdf.iterrows():\n",
" if geo.intersects(c):\n",
" geometry = geo.intersection(c)\n",
" region = region[region.intersects(c)]\n",
" \n",
" geometries.append(geometry)\n",
" regions.append(region)\n",
" \n",
"result = gpd.GeoDataFrame({'geometry': geometries, 'region': regions})\n",
"result.plot()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16db142fd0>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nkopmSEkq2v8D1f9voVgeTAoAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16db15a0f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"result.region[0].plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Operation 2: Spatial Join with GeoPandas dataset\n",
"\n",
"Here we do a simple spatial join, where the other side is a normal GeoPandas GeoDataFrame"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Make a grid of data"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16daf2a400>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16dafa2c18>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"delta = 0.1\n",
"grid = [shapely.geometry.Polygon([(x, y), (x + delta, y), (x + delta, y + delta), (x, y + delta)])\n",
" for x in np.arange(0, 1, 0.1)\n",
" for y in np.arange(0, 1, 0.1)]\n",
"\n",
"grid = gpd.GeoDataFrame({'geometry': grid, 'x': np.arange(len(grid)), 'y': np.arange(len(grid)) ** 2})\n",
"grid.plot()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>geometry</th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>POLYGON ((0 0, 0.1 0, 0.1 0.1, 0 0.1, 0 0))</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>POLYGON ((0 0.1, 0.1 0.1, 0.1 0.2, 0 0.2, 0 0.1))</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>POLYGON ((0 0.2, 0.1 0.2, 0.1 0.3, 0 0.3, 0 0.2))</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>POLYGON ((0 0.3, 0.1 0.3, 0.1 0.4, 0 0.4, 0 0.3))</td>\n",
" <td>3</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>POLYGON ((0 0.4, 0.1 0.4, 0.1 0.5, 0 0.5, 0 0.4))</td>\n",
" <td>4</td>\n",
" <td>16</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" geometry x y\n",
"0 POLYGON ((0 0, 0.1 0, 0.1 0.1, 0 0.1, 0 0)) 0 0\n",
"1 POLYGON ((0 0.1, 0.1 0.1, 0.1 0.2, 0 0.2, 0 0.1)) 1 1\n",
"2 POLYGON ((0 0.2, 0.1 0.2, 0.1 0.3, 0 0.3, 0 0.2)) 2 4\n",
"3 POLYGON ((0 0.3, 0.1 0.3, 0.1 0.4, 0 0.4, 0 0.3)) 3 9\n",
"4 POLYGON ((0 0.4, 0.1 0.4, 0.1 0.5, 0 0.5, 0 0.4)) 4 16"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grid.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Perform Spatial Join"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>geometries</th>\n",
" <th>regions</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>POLYGON ((0 0, 1 0, 0 1, 0 0))</td>\n",
" <td>ge...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>POLYGON ((1 0, 1 1, 0 1, 1 0))</td>\n",
" <td>geome...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" geometries \\\n",
"0 POLYGON ((0 0, 1 0, 0 1, 0 0)) \n",
"1 POLYGON ((1 0, 1 1, 0 1, 1 0)) \n",
"\n",
" regions \n",
"0 ge... \n",
"1 geome... "
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"geometries = []\n",
"regions = []\n",
"\n",
"for index, (geo, region) in dgdf.iterrows():\n",
" intersection = grid.intersects(geo)\n",
" if intersection.any():\n",
" geometry = geo # old geometry\n",
" subset = grid[intersection]\n",
" region = gpd.sjoin(region, subset, how='inner')\n",
" \n",
" geometries.append(geometry)\n",
" regions.append(region)\n",
" \n",
"result = gpd.GeoDataFrame({'geometries': geometries, 'regions': regions})\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>geometry</th>\n",
" <th>value</th>\n",
" <th>index_right</th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>POINT (0.0682664027026203 0.6300355077103446)</td>\n",
" <td>0.068994</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>POINT (0.07428419722196156 0.6224502621273443)</td>\n",
" <td>0.839670</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>POINT (0.8891961071955971 0.07229128951183272)</td>\n",
" <td>0.889795</td>\n",
" <td>80</td>\n",
" <td>80</td>\n",
" <td>6400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>POINT (0.8397928154621241 0.009835043023548429)</td>\n",
" <td>0.198468</td>\n",
" <td>80</td>\n",
" <td>80</td>\n",
" <td>6400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>POINT (0.2207359963462852 0.4475341217122858)</td>\n",
" <td>0.737915</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>576</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" geometry value index_right \\\n",
"1 POINT (0.0682664027026203 0.6300355077103446) 0.068994 6 \n",
"70 POINT (0.07428419722196156 0.6224502621273443) 0.839670 6 \n",
"4 POINT (0.8891961071955971 0.07229128951183272) 0.889795 80 \n",
"27 POINT (0.8397928154621241 0.009835043023548429) 0.198468 80 \n",
"5 POINT (0.2207359963462852 0.4475341217122858) 0.737915 24 \n",
"\n",
" x y \n",
"1 6 36 \n",
"70 6 36 \n",
"4 80 6400 \n",
"27 80 6400 \n",
"5 24 576 "
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result.regions[0].head()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16dab9b128>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAASYAAAD8CAYAAADaFgknAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEpZJREFUeJzt3X+M1HV+x/Hnewbp2VS45lhiA3LrpZi4t0FXJ8jlEhEO\nFFdO/uDnNqbVInDXrs3lqImESjZrCFcN96NAU4TaO88U+bFREdeilJVrzCEuAfZQY4PcWoi17F0t\npLlaYefdP2a8jsMu8911Zr6f78zrkRhmZj9857Xr7ovv97Of7/dr7o6ISEhScQcQESmmYhKR4KiY\nRCQ4KiYRCY6KSUSCo2ISkeComEQkOComEQmOiklEgjMmrjeeMGGCNzY2xvX2IlJFR48e/ZW7N0Qd\nH1sxNTY20tvbG9fbi0gVmdn7IxmvQzkRCY6KSUSCo2ISkeComEQkOComEQmOiklEgqNiEpHgqJiG\nsa7nAFM3fZ91PQfijiJSd1RMw9hxso9Bd3ac7Is7ikjdUTENo615Gmkz2pqnxR1FpO5YXHdJyWQy\nrlNSROqDmR1190zU8dpjEpHgqJhEJDgqJhEJTqRiMrN5ZvaumZ0ys0eG+PgUM+sxs2Nm1mdmreWP\nKiL1omQxmVka2ALcDTQBbWbWVDTsr4Bd7t4CLAP+ttxBRaR+RNljmg6ccvfT7v4J8CywoGiMA+Py\nj8cDH5QvoojUmyjFNAk4U/D8bP61Qh3AfWZ2FugGHhpqQ2a20sx6zax3YGBgFHFFpB5EKSYb4rXi\nxU9twI/dfTLQCvzUzC7btrs/6e4Zd880NES+/K+I1JkoxXQWuK7g+WQuP1RbDuwCcPefA18AJpQj\noIjUnyjF9CYw1cyuN7Ox5Ca39xaN+TfgGwBmdiO5YtKxmoiMSslicvdLQDuwH3iH3G/f3jKzTjO7\nNz9sNbDCzE4AO4D7Pa5zXUQk8SLdvsndu8lNahe+tq7g8dvA18sbTUTqlVZ+i0hwVEwiEhwVk4gE\nR8UkIsFRMYlIcBJfTMcGNvDcexmODWyIO4qIlEnii6n/QhfOIP0XuuKOIiJlkvhiahy3ECNN47iF\ncUcRkTKJtMAyZC0Na2hpWBN3DBEpo8TvMYlI7VExiUhwVEwiEhwVk4gER8UkIsFRMYlIcFRMIhIc\nFZOIBEfFJCLBUTGJSHBUTCISHBWTiARHxSQiwVExiUhwVEwiEhwVk4gER8UkIsFRMYlIcFRMIhIc\nFZOIBEfFJCLBUTGJSHBUTCISHBWTiARHxSQiwan5YtrUvp27rlrKpvbtcUcRkYhqvpj2bX2V7GCW\nfVtfjTuKiERU88U0f9VcUukUjbNvobXlUTavfzHuSCJSQs0X00ObH2T/xZ2cOfffZAed7j1H4o4k\nIiXUfDF9qnXRdFJpo3XR9LijiEgJ5u6lB5nNA34EpIHt7v69IcYsAToAB064+x9daZuZTMZ7e3tH\nk7lmbV7/It17jtC6aDrta78ZdxyRsjGzo+6eiTq+5B6TmaWBLcDdQBPQZmZNRWOmAmuAr7v7V4Hv\njCi1ANC954gON0WIdig3HTjl7qfd/RPgWWBB0ZgVwBZ3/wjA3c+VN2Z90OGmSM6YCGMmAWcKnp8F\nbisacwOAmb1O7nCvw93/qXhDZrYSWAkwZcqU0eStae1rv6lDOBGi7THZEK8VT0yNAaYCdwBtwHYz\n++Jlf8n9SXfPuHumoaFhpFlFpE5EKaazwHUFzycDHwwx5gV3v+juvwTeJVdUIiIjFqWY3gSmmtn1\nZjYWWAbsLRrzPDALwMwmkDu0O13OoCJSP0oWk7tfAtqB/cA7wC53f8vMOs3s3vyw/cCvzextoAd4\n2N1/XanQIlLbIq1jqoQQ1jE93f8MPecOMWviTP648b5Ys4jUsrKvY6plPecOkSVLz7lDcUcRkQJ1\nXUyzJs4kRYpZE2fGHUVECtT1oZyIVIcO5UQk8VRMIhIcFZOIBEfFJCLBUTGJSHBUTCISHBWTiARH\nxVRFxwY28Nx7GY4NbIg7ikjQVExV1H+hC2eQ/gtdcUcRCZqKqYoaxy3ESNM4bmHcUUSCFuXSulIm\nLQ1raGlYE3cMkeBpj0lEgqNiEpHgqJhEJDgqJhEJjopJRIKjYhKR4KiYRCQ4KiYRCY6KSUSCo2IS\nkeComEQkOComEQmOiklEgpP4Ytq8/kVaWx5l8/oX444iImWS+GLq3nOE7KDTvedI3FFEpEwSX0yt\ni6aTShuti6bHHUVEysTcPZY3zmQy3tvbG8t7x21dzwF2nOyjrXkanbPmxB1HpOLM7Ki7Z6KOT/we\nUxLtONnHoDs7TvbFHUUkSCqmGLQ1TyNtRlvztLijiARJh3IiUnE6lBORxFMxiUhwVEwiEhwVk4gE\nJ1Ixmdk8M3vXzE6Z2SNXGLfIzNzMIk9ylcvGbQe4ffFGNm47UO23FpEyK1lMZpYGtgB3A01Am5k1\nDTHuGuAvgDfKHTKKF145QTbrvPDKiTjeXkTKKMoe03TglLufdvdPgGeBBUOMewx4HPi4jPkiW3Dn\nTaRSxoI7b4rj7UWkjMZEGDMJOFPw/CxwW+EAM2sBrnP3fWb2l2XMF9nqFXNYvUKnd4jUgih7TDbE\na79dlWlmKeAHwOqSGzJbaWa9ZtY7MDAQPaXUnPVdB7n54R+yvutg3FEkQFGK6SxwXcHzycAHBc+v\nAZqB18ysH5gB7B1qAtzdn3T3jLtnGhoaRp9aEm/34T4Gs87uwzpfUC4XpZjeBKaa2fVmNhZYBuz9\n9IPuft7dJ7h7o7s3AoeBe91d55vIsBbPmEY6ZSyeofMF5XIl55jc/ZKZtQP7gTTwlLu/ZWadQK+7\n773yFkQut3bhbNYunB13DAlUlMlv3L0b6C56bd0wY+/4/LGkEtZ3HWT34T4Wz5imUpCgaeV3HamF\neZ3s+Q6yH95I9nxH3FGkglRMNSDqDRlqYl7nf3YCg/k/pVbpekw1oLXlUbKDTiptdB97LO44FZU9\n35ErpauXkhrfEXcciUjXY6pD9XRDhtT4DlLXvqNSqnHaY6px2sOQEGiPST5LczKSQCqmWnf1UiCd\n/7MyOo+/RPPznXQef6li7yH1JdHFpNuDl1aNOZld/UcZdGdX/9GKvYfUl0QXk24PHoYljbeSNmNJ\n461xR5EaEWnld6haF02ne8+RuvhtVMjW3XwP626+J+4YUkP0WzkZEd3eXEZDv5WTitLtzaUaVEwy\nIrq9uVSDDuVEpOJ0KCciiadiEpHgqJhEJDgqpoTb1L6du65ayqb27aPehu5iLKFRMSXcvq2vkh3M\nsm/rq6Pehu5iLKFRMSXc/FVzSaVTzF81d9Tb0F2MJTRaLiCRbWrfzr6trzJ/1Vwe2vxg3HEkQbRc\nQCqmHIeNIlGomCqgHBPSISrHYaNIFDqUq4C7rlpKdjBLKp1i/8XwrxypE3Ol0nQoF4Ck7VnoxFwJ\njYqpAh7a/CD7L+5MzASxTsyV0OhQTkQqTodyIpJ4KiYRCY6KSUSCo2ISkeComBLo6f5neODICp7u\nfybuKCIVoWJKoJ5zh8iSpefcobijiFSEiimBZk2cSYoUsybOjDtKXdAeavVpHZNICQ8cWUGWLClS\n/MP0bXHHSSStYxIpM+2hVp/2mOpM5/GX2NV/lCWNt+q23lI12mOSK9rVf5RBd3b1H407isiwVExl\nlj3fQfbDG8me74g7ypCWNN5K2owljbfGHUVkWJEO5cxsHvAjIA1sd/fvFX38u8CDwCVgAPhTd3//\nStus1UO57Ic3AoNAmtS178QdRyQIZT+UM7M0sAW4G2gC2sysqWjYMSDj7tOAPcDj0SPXmKuXAun8\nnyIyGlEO5aYDp9z9tLt/AjwLLCgc4O497v6b/NPDwOTyxkyO1PgOUte+Q2p8x6j+fufxl2h+vpPO\n4y+VN5hIgkQppknAmYLnZ/OvDWc58PLnCVXPNDktEq2YbIjXhpyYMrP7gAzwxDAfX2lmvWbWOzAw\nED1lHdHktEiEyW8z+xrQ4e535Z+vAXD3DUXj5gCbgJnufq7UG1dj8nvjtgO88MoJFtx5E6tX6CL7\nInGpxDqmN4GpZna9mY0FlgF7i960BdgK3BullKpFt74WSaaSxeTul4B2YD/wDrDL3d8ys04zuzc/\n7Ang94DdZnbczPYOs7mq0q2vw6UTY+VKdEqKxEInxtYXnZIiiZCkE2NDX81fi7THJFKCVvN/ftpj\nEik3reavujFxBxAJXWp8B4xyJb+MjvaYRCQ4KiYRCY6KqYBOoBUJg4qpgE6gFQmDiqmATqAVCYPW\nMUkQdJOE2qZ1TJJIOoyWQiomCUIoh9Gb2rdz11VL2dS+PdYc9U6HciIF7rpqKdnBLKl0iv0Xd8Yd\np2boUE7kc5i/ai6pdIr5q+bGHaWuaY9JRCpOe0wyIhu3HeD2xRvZuO1A3FFEfkvFVOd0+WEJkYqp\nzunywxIizTGNwrGBDfRf6KJx3EJaGtbEHUckeJpjqoL+C104g/Rf6Io7ikhNUjGNQuO4hRhpGsct\njDuKSE3SFSxHoaVhjQ7hRCpIe0wiEhwVk4gER8UkUkeSsqC2botpXc8Bpm76Put6wv4fJFJOSVlQ\nW7fFtONkH4Pu7DjZF3cUkapJyoLauv2tXFvzNHac7KOteVrcUUSqZvWKOaxeMSfuGCVp5beIVJxW\nfotI4qmYRCI6NrCB597LcGxgQ9xRap6KSSQinSNZPSomkYh0jmT11O1v5URGSudIVo/2mEQkOIko\npvVdB7n54R+yvutg3FFEBHi6/xkeOLKCp/ufqcj2E1FMuw/3MZh1dh/WKm2REPScO0SWLD3nDlVk\n+4kopsUzppFOGYtnaJW2SAhmTZxJihSzJs6syPa18lukzNZ3HWT34T4Wz5jG2oWz444ThIqs/Daz\neWb2rpmdMrNHhvj475jZzvzH3zCzxuiRRWpLNaceanX+tWQxmVka2ALcDTQBbWbWVDRsOfCRu/8h\n8APgr8sdVCQpqjn1UKvzr1H2mKYDp9z9tLt/AjwLLCgaswD4Sf7xHuAbZmbliymSHGsXzub4E9+p\nymFcrc6/RllgOQk4U/D8LHDbcGPc/ZKZnQe+BPyqcJCZrQRWAkyZMmWUkUXkU2sXzq7Jeawoe0xD\n7fkUz5hHGYO7P+nuGXfPNDQ0RMknInUoSjGdBa4reD4Z+GC4MWY2BhgP/Gc5AopI/YlSTG8CU83s\nejMbCywD9haN2Qv8Sf7xIuCgx7UOQUQSr+QcU37OqB3YD6SBp9z9LTPrBHrdfS/w98BPzewUuT2l\nZZUMLSK1LdLVBdy9G+guem1dweOPgcXljSYi9SoRp6SISH1RMYlIcGI7V87MBoD3Iw6fQNGaqIRR\n/vgkOTvUTv4vu3vkNUKxFdNImFnvSE4ADI3yxyfJ2aF+8+tQTkSCo2ISkeAkpZiejDvA56T88Uly\ndqjT/ImYYxKR+pKUPSYRqSNBFVPSr5QZIf93zextM+szs382sy/HkXMopbIXjFtkZm5mQf2mKEp+\nM1uS//q/ZWb/WO2MVxLhe2eKmfWY2bH8909rHDmHYmZPmdk5Mzs5zMfNzP4m/7n1mdktJTfq7kH8\nR+48vPeArwBjgRNAU9GYPwP+Lv94GbAz7twjzD8L+N3842+Hkj9K9vy4a4CfAYeBTNy5R/i1nwoc\nA34//3xi3LlHmP9J4Nv5x01Af9y5C7LdDtwCnBzm463Ay+QujzQDeKPUNkPaY0r6lTJL5nf3Hnf/\nTf7pYXKXkAlBlK89wGPA48DH1QwXQZT8K4At7v4RgLufq3LGK4mS34Fx+cfjufzSQ7Fx959x5csc\nLQCe9pzDwBfN7A+utM2QimmoK2VOGm6Mu18CPr1SZgii5C+0nNy/IiEomd3MWoDr3H1fNYNFFOVr\nfwNwg5m9bmaHzWxe1dKVFiV/B3CfmZ0ld0L9Q9WJVhYj/dmIdnWBKinblTJjEjmbmd0HZIDK3JRr\n5K6Y3cxS5G4ycX+1Ao1QlK/9GHKHc3eQ21P9FzNrdvf/qnC2KKLkbwN+7O4bzexr5C4z1Ozu2crH\n+9xG/HMb0h5T0q+UGSU/ZjYHWAvc6+7/W6VspZTKfg3QDLxmZv3k5gn2BjQBHvV75wV3v+juvwTe\nJVdUIYiSfzmwC8Ddfw58gdx5aEkQ6WfjM+KeOCuYIBsDnAau5/8nAL9aNObP+ezk9664c48wfwu5\nSc6pcecdafai8a8R1uR3lK/9POAn+ccTyB1afCnu7CPI/zJwf/7xjfkfbIs7e0G+Roaf/L6Hz05+\nHym5vbg/oaJPoBX41/wP79r8a53k9i4g96/EbuAUcAT4StyZR5j/APAfwPH8f3vjzhw1e9HYoIop\n4tfegO8DbwO/AJbFnXmE+ZuA1/OldRy4M+7MBdl3AP8OXCS3d7Qc+BbwrYKv/Zb85/aLKN87Wvkt\nIsEJaY5JRARQMYlIgFRMIhIcFZOIBEfFJCLBUTGJSHBUTCISHBWTiATn/wAOn+ZZlpRtBwAAAABJ\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16dabe1c50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"result.regions[0].plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Spatial Join with other DaskGeoPandas dataset\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### First lets make another parallelizable dataset by pulling apart our grid into two sections"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16daa4f940>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16daa59198>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"d = shapely.geometry.Polygon([(0, 0), (.5, 0), (.5, 1), (0, 1)])\n",
"e = shapely.geometry.Polygon([(.5, 0), (1, 0), (1, 1), (.5, 1)])\n",
"\n",
"ddf = grid[grid.geometry.centroid.intersects(d)]\n",
"edf = grid[grid.geometry.centroid.intersects(e)]\n",
"\n",
"other = gpd.GeoDataFrame({'geometry': [d, e], 'region': [ddf, edf]})\n",
"other.plot()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>geometry</th>\n",
" <th>region</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>POLYGON ((0 0, 0.5 0, 0.5 1, 0 1, 0 0))</td>\n",
" <td>g...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>POLYGON ((0.5 0, 1 0, 1 1, 0.5 1, 0.5 0))</td>\n",
" <td>g...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" geometry \\\n",
"0 POLYGON ((0 0, 0.5 0, 0.5 1, 0 1, 0 0)) \n",
"1 POLYGON ((0.5 0, 1 0, 1 1, 0.5 1, 0.5 0)) \n",
"\n",
" region \n",
"0 g... \n",
"1 g... "
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"other"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16daa53710>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16daa59fd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"other.region[0].plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Now we perform a dask-dask spatial join"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"A = dgdf # triangle dask-geodataframe from earlier\n",
"B = other # half-split grid"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16da7cab70>"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16da7dfc18>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"A.plot()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16da730828>"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16dafdf7f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"B.plot()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16da656048>"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nkaYAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16da721c18>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"geos = []\n",
"regions = []\n",
"\n",
"for a_index, (a_geo, a_region) in A.iterrows():\n",
" for b_index, (b_geo, b_region) in B.iterrows():\n",
" if a_geo.intersects(b_geo):\n",
" geo = a_geo.intersection(b_geo)\n",
" region = gpd.sjoin(a_region, b_region, how='inner')\n",
" \n",
" geos.append(geo)\n",
" regions.append(region)\n",
" \n",
"result = gpd.GeoDataFrame({'geometry': geos, 'region': regions})\n",
"result.plot()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"-0.04 -0.04 0.5800000000000001 1.08\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,1.0)\"><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.0216\" opacity=\"0.6\" d=\"M 0.5,0.0 L 0.0,0.0 L 0.0,1.0 L 0.5,0.5 L 0.5,0.0 z\" /></g></svg>"
],
"text/plain": [
"<shapely.geometry.polygon.Polygon at 0x7f16da70f630>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result.geometry[0]"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>geometry</th>\n",
" <th>value</th>\n",
" <th>index_right</th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>POINT (0.0682664027026203 0.6300355077103446)</td>\n",
" <td>0.068994</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>POINT (0.07428419722196156 0.6224502621273443)</td>\n",
" <td>0.839670</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>POINT (0.2207359963462852 0.4475341217122858)</td>\n",
" <td>0.737915</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>576</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>POINT (0.03510484030883243 0.7511655248137925)</td>\n",
" <td>0.669927</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>POINT (0.1822252097249891 0.2151233784401591)</td>\n",
" <td>0.357155</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>144</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" geometry value index_right x \\\n",
"1 POINT (0.0682664027026203 0.6300355077103446) 0.068994 6 6 \n",
"70 POINT (0.07428419722196156 0.6224502621273443) 0.839670 6 6 \n",
"5 POINT (0.2207359963462852 0.4475341217122858) 0.737915 24 24 \n",
"10 POINT (0.03510484030883243 0.7511655248137925) 0.669927 7 7 \n",
"11 POINT (0.1822252097249891 0.2151233784401591) 0.357155 12 12 \n",
"\n",
" y \n",
"1 36 \n",
"70 36 \n",
"5 576 \n",
"10 49 \n",
"11 144 "
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result.region[0].head()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f16da600710>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f16da9719e8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"result.region[0].plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Next steps\n",
"\n",
"So, none of this was actually parallelized. To do that we need to wrap the operations on the sub-geodataframes in dask.delayed while keeping the operations on the metadata concrete."
]
}
],
"metadata": {
"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.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment