Skip to content

Instantly share code, notes, and snippets.

@jorisvandenbossche
Created March 14, 2017 19:44
Show Gist options
  • Save jorisvandenbossche/751809b631f30579b9859e6bf75d2657 to your computer and use it in GitHub Desktop.
Save jorisvandenbossche/751809b631f30579b9859e6bf75d2657 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# Exploration of GeoPandas' spatial join `sjoin`"
},
{
"metadata": {
"collapsed": true,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "%matplotlib inline\nimport geopandas\nimport shapely",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "from shapely.geometry import Polygon\n\npolys1 = geopandas.GeoSeries([Polygon([(0,0), (5,0), (5,5), (0,5)]),\n Polygon([(5,5), (6,5), (6,6), (5,6)]),\n Polygon([(6,0), (9,0), (9,3), (6,3)])])\n\npolys2 = geopandas.GeoSeries([Polygon([(1,1), (4,1), (4,4), (1,4)]),\n Polygon([(4,4), (7,4), (7,7), (4,7)]),\n Polygon([(7,7), (10,7), (10,10), (7,10)])])\n \ndf1 = geopandas.GeoDataFrame({'geometry': polys1, 'df1':[0,1,2]})\ndf2 = geopandas.GeoDataFrame({'geometry': polys2, 'df2':[3,4,5]})",
"execution_count": 2,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "ax = df1.plot(color='red')\ndf2.plot(ax=ax, color='blue')\nax.set(xlim=(0,10), ylim=(0,10));",
"execution_count": 3,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQQAAAEACAYAAABVmQgcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAC3FJREFUeJzt3W+IpfV5h/Hrq5uwa2zMpmCCkTgpxaQEbFhotZXgsaYo\nCcS+aIsxbaKFvmqiJCVo8mZmIC3xRRqE5o3ESBq0BZeAFkIjYo7QFmJTNRr/pSCb9U/dEDRNQ1jI\n2rsv5uTudl2dmfNnnjnr9YHFc86e8zs348x1nueZh2dTVUgSwGlDDyBp9zAIkppBkNQMgqRmECQ1\ngyCpbRqEJLcmOZLkkeMe25/kniRPJflWkrMWO6aknbCVLYTbgMtPeOxG4N6qejdwH/DZeQ8maedl\nKycmJTkP+MequmBy/0ngkqo6kuTtwLiq3rPYUSUt2rTHEM6uqiMAVfUCcPb8RpI0lHkdVPT8Z+kU\nsGfK1x1J8rbjdhl+9GpPTGIspIFUVbbz/K0GIZM/v3Q3cA1wE/Bx4K5NhtrOTINbW1tjbW1t6DG2\nbNnmhcXNnITV1cV8v43Ha4xGawtZexHW17fVAmBrv3a8A/hX4Pwkh5NcC3wB+P0kTwGXTe5LWnKb\nbiFU1dWv8lcfmPMskgbmmYonMRqNhh5hW5ZtXljOmVdWRkOPsHBbOg9hpjdIatmOIWh5LfIYwrJZ\nX8+2Dyq6hSCpGQRJzSBIagZBUjMIkppBkNQMgqRmECQ1gyCpGQRJzSBIagZBUjMIkppBkNQMgqRm\nECQ1gyCpGQRJzSBIagZBUjMIkppBkNQMgqRmECQ1gyCpGQRJzSBIagZBUjMIkppBkNQMgqRmECQ1\ngyCpGQRJbaYgJPlUku8neSTJ7UneOK/BJO28qYOQ5Bzgk8CBqroA2ANcNa/BJO28PTO+/nTgTUn+\nBzgDeH72kSQNZeothKp6HvgicBh4DvhJVd07r8Ek7byptxCSvAW4EjgP+C/gYJKrq+qOE5+7trbW\nt0ejEaPRaNq3lfQqDh0ac+jQeKY1UlXTvTD5Q+Dyqvrzyf0/BS6sqk+c8Lya9j2k7UrC6qrfbwDr\n66Gqsp3XzPJbhsPARUn2JglwGfDEDOtJGtgsxxAeAA4CDwHfAwLcMqe5JA1gpt8yVNU6sD6nWSQN\nzDMVJTWDIKkZBEnNIEhqBkFSMwiSmkGQ1AyCpGYQJDWDIKkZBEnNIEhqBkFSMwiSmkGQ1AyCpGYQ\nJDWDIKlNfdXlLb+BV11euH373srRoy8NPYZ2oe1eddkgnAK89Pj/mVx6fOgxdoVkZy/DLukUYxAk\nNYMgqRkESc0gSGoGQVIzCJKaQZDUDIKkZhAkNYMgqRkESc0gSGoGQVIzCJLaTEFIclaSO5M8keSx\nJBfOazBJO2/PjK+/GfhmVf1Rkj3AGXOYSdJApg5CkjcD76+qawCq6hjw0znNJWkAs+wyvAv4cZLb\nkjyY5JYk++Y1mKSdN0sQ9gAHgC9X1QHg58CNc5lK0iBmOYbwLPBMVX13cv8gcMPJnri2tta3R6MR\no9FohrfVTrrp85/n6MvH5r7u3r37uOGGk367aErj8ZjxeDzTGlMHoaqOJHkmyflV9QPgMuDxkz33\n+CBouRx9+Rirl4zmvu76/eO5r/l6d+KH7fr6+rbXmPW3DNcBtyd5A/A0cO2M60ka0ExBqKrvAb81\np1kkDcwzFSU1gyCpGQRJzSBIagZBUjMIkppBkNQMgqRmECQ1gyCpGQRJzSBIagZBUjMIkppBkNQM\ngqRmECQ1gyCpzXpNxS1JshNv87q2vr62uLUXcEHUvXv9Jzx2ox0JQq2u7sTbvG5lfX0hV0aGjRis\nrq4tZG3tPu4ySGoGQVIzCJKaQZDUDIKkZhAkNYMgqRkESc0gSGoGQVIzCJKaQZDUDIKkZhAkNYMg\nqRkESW3mICQ5LcmDSe6ex0CShjOPLYTrgcfnsI6kgc0UhCTnAh8EvjKfcSQNadYthC8BnwFqDrNI\nGtjUQUjyIeBIVT0MZPJH0hJL1XQf7kn+GvgT4BiwD/gV4BtV9bETnlerl1zS90crK4xWVqadt+37\nq7/h6LH/nnkdnVr279/Piy++OPQYgxiPx4zH476/vr5OVW3rg3rqIPy/RZJLgL+sqg+f5O9qEZdh\n37j0+Lfnvu4yWr//0oVd6j4b31QLWVuLlWTbQfA8BEltLv9QS1XdD9w/j7UkDcctBEnNIEhqBkFS\nMwiSmkGQ1AyCpGYQJDWDIKkZBEnNIEhqBkFSMwiSmkGQ1AyCpGYQJDWDIKkZBEnNIEhqc7mEmrRd\nb923j5eOHh16jF1hN10p2iBoEC8dPbqwK0Uvm6yvDz1Cc5dBUjMIkppBkNQMgqRmECQ1gyCpGQRJ\nzSBIagZBUjMIkppBkNQMgqRmECQ1gyCpGQRJzSBIalMHIcm5Se5L8liSR5NcN8/BJO28Wa6YdAz4\ndFU9nORM4N+T3FNVT85pNkk7bOothKp6oaoentz+GfAE8I55DSZp583lGEKSFeB9wHfmsZ6kYcx8\nkdXJ7sJB4PrJlsIrrI3HfXu0ssJoZWXWt5V0gvF4zPi4n7VpzBSEJHvYiMHXq+quV3ve2mg0y9tI\n2oLRaMTouJ+19Smu5jzrLsNXgcer6uYZ15G0C8zya8eLgY8Cv5fkoSQPJrlifqNJ2mlT7zJU1b8A\np89xFkkD80xFSc0gSGoGQVIzCJKaQZDUDIKkZhAkNYMgqRkESc0gSGoGQVIzCJKaQZDUDIKkZhAk\nNYMgqRkESW3mqy4Paf3+S4ceYVfYv3fv0CPoFLG0QajV1aFHkE457jJIagZBUjMIkppBkNQMgqRm\nECQ1gyCpGQRJzSBIagZBUjMIkppBkNQMgqRmECQ1gyCpGQRJbaYgJLkiyZNJfpDkhnkNJWkYUwch\nyWnA3wKXA+8FPpLkPfMabEjjQ4eGHmFblm3eZfV6+DrPsoXw28B/VNUPq+oXwD8AV85nrGEt2//4\nZZt3Wb0evs6zBOEdwDPH3X928pikJeVBRUktVTXdC5OLgLWqumJy/0agquqmE5433RtImllVZTvP\nnyUIpwNPAZcB/wk8AHykqp6YakFJg5v632WoqpeTfAK4h41dj1uNgbTcpt5CkHTqWdhBxWU7aSnJ\nuUnuS/JYkkeTXDf0TFuR5LQkDya5e+hZtiLJWUnuTPLE5Gt94dAzbSbJp5J8P8kjSW5P8sahZzpR\nkluTHEnyyHGP7U9yT5KnknwryVmbrbOQICzpSUvHgE9X1XuB3wH+YglmBrgeeHzoIbbhZuCbVfUb\nwG8Cu3o3M8k5wCeBA1V1ARu72VcNO9VJ3cbGz9vxbgTurap3A/cBn91skUVtISzdSUtV9UJVPTy5\n/TM2vlF39XkVSc4FPgh8ZehZtiLJm4H3V9VtAFV1rKp+OvBYW3E68KYke4AzgOcHnucVquqfgZdO\nePhK4GuT218D/mCzdRYVhKU+aSnJCvA+4DvDTrKpLwGfAZblQNC7gB8nuW2ym3NLkn1DD/Vaqup5\n4IvAYeA54CdVde+wU23Z2VV1BDY+8ICzN3uBJyadIMmZwEHg+smWwq6U5EPAkclWTSZ/drs9wAHg\ny1V1APg5G5u1u1aSt7DxSXsecA5wZpKrh51qapt+cCwqCM8B7zzu/rmTx3a1ySbhQeDrVXXX0PNs\n4mLgw0meBv4euDTJ3w0802aeBZ6pqu9O7h9kIxC72QeAp6vqxap6GfgG8LsDz7RVR5K8DSDJ24Ef\nbfaCRQXh34BfT3Le5IjsVcAyHAX/KvB4Vd089CCbqarPVdU7q+rX2Pj63ldVHxt6rtcy2Xx9Jsn5\nk4cuY/cfED0MXJRkb5KwMfNuPRB64pbi3cA1k9sfBzb9kJv6xKTXsownLSW5GPgo8GiSh9jYvPpc\nVf3TsJOdcq4Dbk/yBuBp4NqB53lNVfVAkoPAQ8AvJv+9ZdipXinJHcAI+NUkh4FV4AvAnUn+DPgh\n8MebruOJSZJ+yYOKkppBkNQMgqRmECQ1gyCpGQRJzSBIagZBUvtfhNDIuOfNA/8AAAAASUVORK5C\nYII=\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f0010fb6dd8>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Intersects operation"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Default values (intersects / inner):"
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "res = geopandas.sjoin(df1, df2, how='inner', op='intersects')\nres",
"execution_count": 4,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>df1</th>\n <th>geometry</th>\n <th>index_right</th>\n <th>df2</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0))</td>\n <td>0</td>\n <td>3</td>\n </tr>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0))</td>\n <td>1</td>\n <td>4</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1</td>\n <td>POLYGON ((5 5, 6 5, 6 6, 5 6, 5 5))</td>\n <td>1</td>\n <td>4</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": "\n df1 geometry index_right df2\n0 0 POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)) 0 3\n0 0 POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)) 1 4\n1 1 POLYGON ((5 5, 6 5, 6 6, 5 6, 5 5)) 1 4"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true,
"scrolled": true
},
"cell_type": "code",
"source": "ax = res.plot()\nax.set(xlim=(0,10), ylim=(0,10));",
"execution_count": 5,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nGQRJzSBIav8P4lshYlJBcBIAAAAASUVORK5CYII=\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f0000bec978>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Left:"
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "res = geopandas.sjoin(df1, df2, how='left', op='intersects')\nres",
"execution_count": 6,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>df1</th>\n <th>geometry</th>\n <th>index_right</th>\n <th>df2</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0))</td>\n <td>0.0</td>\n <td>3.0</td>\n </tr>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0))</td>\n <td>1.0</td>\n <td>4.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1</td>\n <td>POLYGON ((5 5, 6 5, 6 6, 5 6, 5 5))</td>\n <td>1.0</td>\n <td>4.0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>2</td>\n <td>POLYGON ((6 0, 9 0, 9 3, 6 3, 6 0))</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": "\n df1 geometry index_right df2\n0 0 POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)) 0.0 3.0\n0 0 POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)) 1.0 4.0\n1 1 POLYGON ((5 5, 6 5, 6 6, 5 6, 5 5)) 1.0 4.0\n2 2 POLYGON ((6 0, 9 0, 9 3, 6 3, 6 0)) NaN NaN"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"scrolled": true,
"deletable": true
},
"cell_type": "code",
"source": "ax = res.plot()\nax.set(xlim=(0,10), ylim=(0,10));",
"execution_count": 7,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f0000bdb1d0>"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "res = geopandas.sjoin(df1, df2, how='right', op='intersects')\nres",
"execution_count": 8,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>df1</th>\n <th>index_left</th>\n <th>df2</th>\n <th>geometry</th>\n </tr>\n <tr>\n <th>index_right</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0.0</td>\n <td>0.0</td>\n <td>3</td>\n <td>POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1))</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0.0</td>\n <td>0.0</td>\n <td>4</td>\n <td>POLYGON ((4 4, 7 4, 7 7, 4 7, 4 4))</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1.0</td>\n <td>1.0</td>\n <td>4</td>\n <td>POLYGON ((4 4, 7 4, 7 7, 4 7, 4 4))</td>\n </tr>\n <tr>\n <th>2</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>5</td>\n <td>POLYGON ((7 7, 10 7, 10 10, 7 10, 7 7))</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": "\n df1 index_left df2 geometry\nindex_right \n0 0.0 0.0 3 POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1))\n1 0.0 0.0 4 POLYGON ((4 4, 7 4, 7 7, 4 7, 4 4))\n1 1.0 1.0 4 POLYGON ((4 4, 7 4, 7 7, 4 7, 4 4))\n2 NaN NaN 5 POLYGON ((7 7, 10 7, 10 10, 7 10, 7 7))"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"scrolled": true,
"deletable": true
},
"cell_type": "code",
"source": "ax = res.plot()\nax.set(xlim=(0,10), ylim=(0,10));",
"execution_count": 9,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f0000b55710>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Contains operation"
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "res = geopandas.sjoin(df1, df2, how='inner', op='contains')\nres",
"execution_count": 10,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>df1</th>\n <th>geometry</th>\n <th>index_right</th>\n <th>df2</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0))</td>\n <td>0</td>\n <td>3</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": "\n df1 geometry index_right df2\n0 0 POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)) 0 3"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"scrolled": true,
"deletable": true
},
"cell_type": "code",
"source": "ax = res.plot()\nax.set(xlim=(0,10), ylim=(0,10));",
"execution_count": 11,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f0000ac86d8>"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "res = geopandas.sjoin(df1, df2, how='left', op='contains')\nres",
"execution_count": 12,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>df1</th>\n <th>geometry</th>\n <th>index_right</th>\n <th>df2</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0))</td>\n <td>0.0</td>\n <td>3.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1</td>\n <td>POLYGON ((5 5, 6 5, 6 6, 5 6, 5 5))</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td>2</td>\n <td>POLYGON ((6 0, 9 0, 9 3, 6 3, 6 0))</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": "\n df1 geometry index_right df2\n0 0 POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)) 0.0 3.0\n1 1 POLYGON ((5 5, 6 5, 6 6, 5 6, 5 5)) NaN NaN\n2 2 POLYGON ((6 0, 9 0, 9 3, 6 3, 6 0)) NaN NaN"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"scrolled": false,
"deletable": true
},
"cell_type": "code",
"source": "ax = res.plot()\nax.set(xlim=(0,10), ylim=(0,10));",
"execution_count": 13,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f00009f1f98>"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "res = geopandas.sjoin(df1, df2, how='right', op='contains')\nres",
"execution_count": 14,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>df1</th>\n <th>index_left</th>\n <th>df2</th>\n <th>geometry</th>\n </tr>\n <tr>\n <th>index_right</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0.0</td>\n <td>0.0</td>\n <td>3</td>\n <td>POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1))</td>\n </tr>\n <tr>\n <th>1</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>4</td>\n <td>POLYGON ((4 4, 7 4, 7 7, 4 7, 4 4))</td>\n </tr>\n <tr>\n <th>2</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>5</td>\n <td>POLYGON ((7 7, 10 7, 10 10, 7 10, 7 7))</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": "\n df1 index_left df2 geometry\nindex_right \n0 0.0 0.0 3 POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1))\n1 NaN NaN 4 POLYGON ((4 4, 7 4, 7 7, 4 7, 4 4))\n2 NaN NaN 5 POLYGON ((7 7, 10 7, 10 10, 7 10, 7 7))"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "The same result without a right join:"
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "res = geopandas.sjoin(df2, df1, how='left', op='within')\nres",
"execution_count": 15,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>df2</th>\n <th>geometry</th>\n <th>index_right</th>\n <th>df1</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>3</td>\n <td>POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1))</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>4</td>\n <td>POLYGON ((4 4, 7 4, 7 7, 4 7, 4 4))</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td>5</td>\n <td>POLYGON ((7 7, 10 7, 10 10, 7 10, 7 7))</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": "\n df2 geometry index_right df1\n0 3 POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1)) 0.0 0.0\n1 4 POLYGON ((4 4, 7 4, 7 7, 4 7, 4 4)) NaN NaN\n2 5 POLYGON ((7 7, 10 7, 10 10, 7 10, 7 7)) NaN NaN"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"scrolled": false,
"deletable": true
},
"cell_type": "code",
"source": "ax = res.plot()\nax.set(xlim=(0,10), ylim=(0,10));",
"execution_count": 16,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\ngg==\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f0000a00fd0>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Within operation"
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "res = geopandas.sjoin(df1, df2, how='inner', op='within')\nres",
"execution_count": 17,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>df1</th>\n <th>geometry</th>\n <th>index_right</th>\n <th>df2</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1</th>\n <td>1</td>\n <td>POLYGON ((5 5, 6 5, 6 6, 5 6, 5 5))</td>\n <td>1</td>\n <td>4</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": "\n df1 geometry index_right df2\n1 1 POLYGON ((5 5, 6 5, 6 6, 5 6, 5 5)) 1 4"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "ax = res.plot()\nax.set(xlim=(0,10), ylim=(0,10));",
"execution_count": 18,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f000092f2e8>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "res = geopandas.sjoin(df1, df2, how='left', op='within')\nres",
"execution_count": 19,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>df1</th>\n <th>geometry</th>\n <th>index_right</th>\n <th>df2</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0))</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1</td>\n <td>POLYGON ((5 5, 6 5, 6 6, 5 6, 5 5))</td>\n <td>1.0</td>\n <td>4.0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>2</td>\n <td>POLYGON ((6 0, 9 0, 9 3, 6 3, 6 0))</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": "\n df1 geometry index_right df2\n0 0 POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0)) NaN NaN\n1 1 POLYGON ((5 5, 6 5, 6 6, 5 6, 5 5)) 1.0 4.0\n2 2 POLYGON ((6 0, 9 0, 9 3, 6 3, 6 0)) NaN NaN"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"scrolled": false,
"deletable": true
},
"cell_type": "code",
"source": "ax = res.plot()\nax.set(xlim=(0,10), ylim=(0,10));",
"execution_count": 20,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f0000953978>"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "res = geopandas.sjoin(df1, df2, how='right', op='within')\nres",
"execution_count": 21,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": "<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>df1</th>\n <th>index_left</th>\n <th>df2</th>\n <th>geometry</th>\n </tr>\n <tr>\n <th>index_right</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1</th>\n <td>1.0</td>\n <td>1.0</td>\n <td>4</td>\n <td>POLYGON ((4 4, 7 4, 7 7, 4 7, 4 4))</td>\n </tr>\n <tr>\n <th>0</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>3</td>\n <td>POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1))</td>\n </tr>\n <tr>\n <th>2</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>5</td>\n <td>POLYGON ((7 7, 10 7, 10 10, 7 10, 7 7))</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": "\n df1 index_left df2 geometry\nindex_right \n1 1.0 1.0 4 POLYGON ((4 4, 7 4, 7 7, 4 7, 4 4))\n0 NaN NaN 3 POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1))\n2 NaN NaN 5 POLYGON ((7 7, 10 7, 10 10, 7 10, 7 7))"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true,
"editable": true,
"scrolled": false,
"deletable": true
},
"cell_type": "code",
"source": "ax = res.plot()\nax.set(xlim=(0,10), ylim=(0,10));",
"execution_count": 22,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nYII=\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f00008c3a58>"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": true,
"trusted": true,
"editable": true,
"deletable": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "dev",
"display_name": "Python 3 (dev)",
"language": "python"
},
"language_info": {
"name": "python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"pygments_lexer": "ipython3",
"version": "3.5.2",
"nbconvert_exporter": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment