mirror of
https://github.com/wassname/geopandas.git
synced 2026-09-09 11:22:50 +08:00
929 lines
81 KiB
Plaintext
929 lines
81 KiB
Plaintext
{
|
|
"metadata": {
|
|
"name": "",
|
|
"signature": "sha256:48efe66abdde37459952c96981b795279e6c34f5d4ebbec82ba5614f7e90d199"
|
|
},
|
|
"nbformat": 3,
|
|
"nbformat_minor": 0,
|
|
"worksheets": [
|
|
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#Spatial Joins\n",
|
|
"\n",
|
|
"A *spatial join* uses [binary predicates](http://toblerity.org/shapely/manual.html#binary-predicates) \n",
|
|
"such as `intersects` and `crosses` to combine two `GeoDataFrames` based on the spatial relationship \n",
|
|
"between their geometries.\n",
|
|
"\n",
|
|
"A common use case might be a spatial join between a point layer and a polygon layer where you want to retain the point geometries and grab the attributes of the intersecting polygons.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"from IPython.core.display import Image \n",
|
|
"Image(url=\"https://dl.dropboxusercontent.com/u/6769420/sjoin_test.png\") "
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"html": [
|
|
"<img src=\"https://dl.dropboxusercontent.com/u/6769420/sjoin_test.png\"/>"
|
|
],
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 2,
|
|
"text": [
|
|
"<IPython.core.display.Image at 0x7fe191420650>"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 2
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"\n",
|
|
"## Types of spatial joins\n",
|
|
"\n",
|
|
"We currently support the following methods of spatial joins. We refer to the *left_df* and *right_df* which are the correspond to the two dataframes passed in as args.\n",
|
|
"\n",
|
|
"### Left outer join\n",
|
|
"\n",
|
|
"In a LEFT OUTER JOIN (`how='left'`), we keep *all* rows from the left and duplicate them if necessary to represent multiple hits between the two dataframes. We retain attributes of the right if they intersect and lose right rows that don't intersect. A left outer join implies that we are interested in retaining the geometries of the left. \n",
|
|
"\n",
|
|
"This is equivalent to the PostGIS query:\n",
|
|
"```\n",
|
|
"SELECT pts.geom, pts.id as ptid, polys.id as polyid \n",
|
|
"FROM pts\n",
|
|
"LEFT OUTER JOIN polys\n",
|
|
"ON ST_Intersects(pts.geom, polys.geom);\n",
|
|
"\n",
|
|
" geom | ptid | polyid \n",
|
|
"--------------------------------------------+------+--------\n",
|
|
" 010100000040A9FBF2D88AD03F349CD47D796CE9BF | 4 | 10\n",
|
|
" 010100000048EABE3CB622D8BFA8FBF2D88AA0E9BF | 3 | 10\n",
|
|
" 010100000048EABE3CB622D8BFA8FBF2D88AA0E9BF | 3 | 20\n",
|
|
" 0101000000F0D88AA0E1A4EEBF7052F7E5B115E9BF | 2 | 20\n",
|
|
" 0101000000818693BA2F8FF7BF4ADD97C75604E9BF | 1 | \n",
|
|
"(5 rows)\n",
|
|
"```\n",
|
|
"\n",
|
|
"### Right outer join\n",
|
|
"\n",
|
|
"In a RIGHT OUTER JOIN (`how='right'`), we keep *all* rows from the right and duplicate them if necessary to represent multiple hits between the two dataframes. We retain attributes of the left if they intersect and lose left rows that don't intersect. A right outer join implies that we are interested in retaining the geometries of the right. \n",
|
|
"\n",
|
|
"This is equivalent to the PostGIS query:\n",
|
|
"```\n",
|
|
"SELECT polys.geom, pts.id as ptid, polys.id as polyid \n",
|
|
"FROM pts\n",
|
|
"RIGHT OUTER JOIN polys\n",
|
|
"ON ST_Intersects(pts.geom, polys.geom);\n",
|
|
"\n",
|
|
" geom | ptid | polyid \n",
|
|
"----------+------+--------\n",
|
|
" 01...9BF | 4 | 10\n",
|
|
" 01...9BF | 3 | 10\n",
|
|
" 02...7BF | 3 | 20\n",
|
|
" 02...7BF | 2 | 20\n",
|
|
" 00...5BF | | 30\n",
|
|
"(5 rows)\n",
|
|
"```\n",
|
|
"\n",
|
|
"### Inner join\n",
|
|
"\n",
|
|
"In an INNER JOIN (`how='inner'`), we keep rows from the right and left only where their binary predicate is `True`. We duplicate them if necessary to represent multiple hits between the two dataframes. We retain attributes of the right and left only if they intersect and lose all rows that do not. An inner join implies that we are interested in retaining the geometries of the left. \n",
|
|
"\n",
|
|
"This is equivalent to the PostGIS query:\n",
|
|
"```\n",
|
|
"SELECT pts.geom, pts.id as ptid, polys.id as polyid \n",
|
|
"FROM pts\n",
|
|
"INNER JOIN polys\n",
|
|
"ON ST_Intersects(pts.geom, polys.geom);\n",
|
|
"\n",
|
|
" geom | ptid | polyid \n",
|
|
"--------------------------------------------+------+--------\n",
|
|
" 010100000040A9FBF2D88AD03F349CD47D796CE9BF | 4 | 10\n",
|
|
" 010100000048EABE3CB622D8BFA8FBF2D88AA0E9BF | 3 | 10\n",
|
|
" 010100000048EABE3CB622D8BFA8FBF2D88AA0E9BF | 3 | 20\n",
|
|
" 0101000000F0D88AA0E1A4EEBF7052F7E5B115E9BF | 2 | 20\n",
|
|
"(4 rows) \n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Spatial Joins between two GeoDataFrames\n",
|
|
"\n",
|
|
"Let's take a look at how we'd implement these using `GeoPandas`. First, load up the NYC test data into `GeoDataFrames`:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"import os\n",
|
|
"from shapely.geometry import Point\n",
|
|
"from geopandas import GeoDataFrame, read_file\n",
|
|
"from geopandas.tools import overlay\n",
|
|
"\n",
|
|
"# NYC Boros\n",
|
|
"zippath = os.path.abspath('../examples/nybb_14aav.zip')\n",
|
|
"polydf = read_file('/nybb_14a_av/nybb.shp', vfs='zip://' + zippath)\n",
|
|
"\n",
|
|
"# Generate some points\n",
|
|
"b = [int(x) for x in polydf.total_bounds]\n",
|
|
"N = 8\n",
|
|
"pointdf = GeoDataFrame([\n",
|
|
" {'geometry' : Point(x, y), 'value1': x + y, 'value2': x - y}\n",
|
|
" for x, y in zip(range(b[0], b[2], int((b[2]-b[0])/N)),\n",
|
|
" range(b[1], b[3], int((b[3]-b[1])/N)))])"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"prompt_number": 19
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": true,
|
|
"input": [
|
|
"pointdf"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"html": [
|
|
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>geometry</th>\n",
|
|
" <th>value1</th>\n",
|
|
" <th>value2</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td> POINT (913175 120121)</td>\n",
|
|
" <td> 1033296</td>\n",
|
|
" <td> 793054</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td> POINT (932450 139211)</td>\n",
|
|
" <td> 1071661</td>\n",
|
|
" <td> 793239</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td> POINT (951725 158301)</td>\n",
|
|
" <td> 1110026</td>\n",
|
|
" <td> 793424</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td> POINT (971000 177391)</td>\n",
|
|
" <td> 1148391</td>\n",
|
|
" <td> 793609</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td> POINT (990275 196481)</td>\n",
|
|
" <td> 1186756</td>\n",
|
|
" <td> 793794</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td> POINT (1009550 215571)</td>\n",
|
|
" <td> 1225121</td>\n",
|
|
" <td> 793979</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td> POINT (1028825 234661)</td>\n",
|
|
" <td> 1263486</td>\n",
|
|
" <td> 794164</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td> POINT (1048100 253751)</td>\n",
|
|
" <td> 1301851</td>\n",
|
|
" <td> 794349</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td> POINT (1067375 272841)</td>\n",
|
|
" <td> 1340216</td>\n",
|
|
" <td> 794534</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 20,
|
|
"text": [
|
|
" geometry value1 value2\n",
|
|
"0 POINT (913175 120121) 1033296 793054\n",
|
|
"1 POINT (932450 139211) 1071661 793239\n",
|
|
"2 POINT (951725 158301) 1110026 793424\n",
|
|
"3 POINT (971000 177391) 1148391 793609\n",
|
|
"4 POINT (990275 196481) 1186756 793794\n",
|
|
"5 POINT (1009550 215571) 1225121 793979\n",
|
|
"6 POINT (1028825 234661) 1263486 794164\n",
|
|
"7 POINT (1048100 253751) 1301851 794349\n",
|
|
"8 POINT (1067375 272841) 1340216 794534"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 20
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": true,
|
|
"input": [
|
|
"polydf"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"html": [
|
|
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>BoroCode</th>\n",
|
|
" <th>BoroName</th>\n",
|
|
" <th>Shape_Area</th>\n",
|
|
" <th>Shape_Leng</th>\n",
|
|
" <th>geometry</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td> 5</td>\n",
|
|
" <td> Staten Island</td>\n",
|
|
" <td> 1.623847e+09</td>\n",
|
|
" <td> 330454.175933</td>\n",
|
|
" <td> (POLYGON ((970217.0223999023 145643.3322143555...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td> 3</td>\n",
|
|
" <td> Brooklyn</td>\n",
|
|
" <td> 1.937810e+09</td>\n",
|
|
" <td> 741227.337073</td>\n",
|
|
" <td> (POLYGON ((1021176.479003906 151374.7969970703...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td> 4</td>\n",
|
|
" <td> Queens</td>\n",
|
|
" <td> 3.045079e+09</td>\n",
|
|
" <td> 896875.396449</td>\n",
|
|
" <td> (POLYGON ((1029606.076599121 156073.8142089844...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td> 1</td>\n",
|
|
" <td> Manhattan</td>\n",
|
|
" <td> 6.364308e+08</td>\n",
|
|
" <td> 358400.912836</td>\n",
|
|
" <td> (POLYGON ((981219.0557861328 188655.3157958984...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td> 2</td>\n",
|
|
" <td> Bronx</td>\n",
|
|
" <td> 1.186822e+09</td>\n",
|
|
" <td> 464475.145651</td>\n",
|
|
" <td> (POLYGON ((1012821.805786133 229228.2645874023...</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 21,
|
|
"text": [
|
|
" BoroCode BoroName Shape_Area Shape_Leng \\\n",
|
|
"0 5 Staten Island 1.623847e+09 330454.175933 \n",
|
|
"1 3 Brooklyn 1.937810e+09 741227.337073 \n",
|
|
"2 4 Queens 3.045079e+09 896875.396449 \n",
|
|
"3 1 Manhattan 6.364308e+08 358400.912836 \n",
|
|
"4 2 Bronx 1.186822e+09 464475.145651 \n",
|
|
"\n",
|
|
" geometry \n",
|
|
"0 (POLYGON ((970217.0223999023 145643.3322143555... \n",
|
|
"1 (POLYGON ((1021176.479003906 151374.7969970703... \n",
|
|
"2 (POLYGON ((1029606.076599121 156073.8142089844... \n",
|
|
"3 (POLYGON ((981219.0557861328 188655.3157958984... \n",
|
|
"4 (POLYGON ((1012821.805786133 229228.2645874023... "
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 21
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": true,
|
|
"input": [
|
|
"pointdf.plot()"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 22,
|
|
"text": [
|
|
"<matplotlib.axes.AxesSubplot at 0x7fe17c79de90>"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"png": "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\n",
|
|
"text": [
|
|
"<matplotlib.figure.Figure at 0x7fe17c8344d0>"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 22
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"polydf.plot()"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 23,
|
|
"text": [
|
|
"<matplotlib.axes.AxesSubplot at 0x7fe17c48f8d0>"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"png": "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\nmfMX+xFXjljJjLYzaOnckqB3Qbx49oId23fEpEXIbIizw6mARqNh06ZNrFq1CltbW6pVq4a+vj6/\n/PJ57UelUvHhw4dkCVXk4+PD2LFjefDAi9DQUCIjI7GyssTExITg4BDu3btL3rzF6NBhJra2Dmg0\nGjQaNceOraRyZem0opeXF0WLFo3nTnGJiorixYsXGBsb8/HjRxya9Prh50kvtJu+lz862fLg3H6C\nXvlglqsAcrmcAWtvsrqfAxuGVKfHkv9QKA0BiIoIQxUVibGxMVa5rAh8E4jPXR+8Pbx57vUcPy8/\nPoV8om27tuzauQu5XP7FPsq27dvSo0gPnDo60Xt2byxyJ++xNblcTo5cOQh6E0SzbM1YcXUFxSoV\nw22HG1u3bOWnn35K1vulVzLiOZgMtUXGw8ODsmXL6hx2NG3aFFdXV549e8aGDRuYOnUqhoZGvHr1\nMklieObMGerEOo3RqNFgjIxMCQv7wJs33shkMiws8lO4cGWsre10trFqVV9ev36MsbFxokOpr1q1\nikGDBsV8rt5+FA1/WZTo50jPuB9axz8L+wFQvFoTOs2RcifPqK9ArVbh1HM6dXpMwffOOTxO7cTd\ndTVLFv9O586dqe5YnRfPX2CVy4o8efOQL28+bAvY0q1bN8qVK6f7fu7uDB02lNt3btOodyN6zuyJ\nkXHyBqY9tO4Qi/stRk+hx5GII7SzbMfpE6cpXz5tF7FSa4uMEMEU5MmTJ1SuXAVDw5y8eOFF0aLV\nePjwks6yCoWCqChp2BgeHo5S+WVUFR8fH3bv3s3+/Qfw8fElLOwjgYGBlCvnQNGiRdizZ09MWUND\nE8aMcUFPL/Eba2/fPsG+fbOAb88X6eLt27dYWVlRvcNo7Co2oECZmiiNjBN9/4zA46vH2Dq+CRq1\nmtJ1O9Juyg5Orv0f57bNJY+dPeVbDOLUmnHUr1+PKpUrMW7cOAwNDX/onidOnGDU6FH4vfCj3dh2\ntB/dHj09vWR6ItgweQNbZ25l1qFZTGw2EW9vb2xtbZOt/aQgRPDbZAgRfP78ORUrViZv3nK0bPkr\nAGp1FGq1GoVCyeLFHTE0NKFOne7s3j0tpl6+fPlo1qwZFStW5NSpU2TLlo27d+9y5coVTE3NsbGx\nx8amLHfuHOfFC6+YenK5HjKZnNat/0fp0nWT7Pft28fZt282hoaGicosZm9fhrt3PRi2zRvzPLZJ\n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\nJCQkJCQ+Pv4PeOABo584nw0AAAAASUVORK5CYII=\n",
|
|
"text": [
|
|
"<matplotlib.figure.Figure at 0x7fe17c7a93d0>"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 23
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Joins"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"from geopandas.tools import sjoin\n",
|
|
"join_left_df = sjoin(pointdf, polydf, how=\"left\")\n",
|
|
"join_left_df\n",
|
|
"# Note the NaNs where the point did not intersect a boro"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"html": [
|
|
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>geometry</th>\n",
|
|
" <th>value1</th>\n",
|
|
" <th>value2</th>\n",
|
|
" <th>BoroCode</th>\n",
|
|
" <th>BoroName</th>\n",
|
|
" <th>Shape_Area</th>\n",
|
|
" <th>Shape_Leng</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td> POINT (913175 120121)</td>\n",
|
|
" <td> 1033296</td>\n",
|
|
" <td> 793054</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td> None</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td> POINT (932450 139211)</td>\n",
|
|
" <td> 1071661</td>\n",
|
|
" <td> 793239</td>\n",
|
|
" <td> 5</td>\n",
|
|
" <td> Staten Island</td>\n",
|
|
" <td> 1.623847e+09</td>\n",
|
|
" <td> 330454.175933</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td> POINT (951725 158301)</td>\n",
|
|
" <td> 1110026</td>\n",
|
|
" <td> 793424</td>\n",
|
|
" <td> 5</td>\n",
|
|
" <td> Staten Island</td>\n",
|
|
" <td> 1.623847e+09</td>\n",
|
|
" <td> 330454.175933</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td> POINT (971000 177391)</td>\n",
|
|
" <td> 1148391</td>\n",
|
|
" <td> 793609</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td> None</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td> POINT (990275 196481)</td>\n",
|
|
" <td> 1186756</td>\n",
|
|
" <td> 793794</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td> None</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td> POINT (1009550 215571)</td>\n",
|
|
" <td> 1225121</td>\n",
|
|
" <td> 793979</td>\n",
|
|
" <td> 4</td>\n",
|
|
" <td> Queens</td>\n",
|
|
" <td> 3.045079e+09</td>\n",
|
|
" <td> 896875.396449</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td> POINT (1028825 234661)</td>\n",
|
|
" <td> 1263486</td>\n",
|
|
" <td> 794164</td>\n",
|
|
" <td> 2</td>\n",
|
|
" <td> Bronx</td>\n",
|
|
" <td> 1.186822e+09</td>\n",
|
|
" <td> 464475.145651</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td> POINT (1048100 253751)</td>\n",
|
|
" <td> 1301851</td>\n",
|
|
" <td> 794349</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td> None</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td> POINT (1067375 272841)</td>\n",
|
|
" <td> 1340216</td>\n",
|
|
" <td> 794534</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td> None</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 24,
|
|
"text": [
|
|
" geometry value1 value2 BoroCode BoroName \\\n",
|
|
"0 POINT (913175 120121) 1033296 793054 NaN None \n",
|
|
"1 POINT (932450 139211) 1071661 793239 5 Staten Island \n",
|
|
"2 POINT (951725 158301) 1110026 793424 5 Staten Island \n",
|
|
"3 POINT (971000 177391) 1148391 793609 NaN None \n",
|
|
"4 POINT (990275 196481) 1186756 793794 NaN None \n",
|
|
"5 POINT (1009550 215571) 1225121 793979 4 Queens \n",
|
|
"6 POINT (1028825 234661) 1263486 794164 2 Bronx \n",
|
|
"7 POINT (1048100 253751) 1301851 794349 NaN None \n",
|
|
"8 POINT (1067375 272841) 1340216 794534 NaN None \n",
|
|
"\n",
|
|
" Shape_Area Shape_Leng \n",
|
|
"0 NaN NaN \n",
|
|
"1 1.623847e+09 330454.175933 \n",
|
|
"2 1.623847e+09 330454.175933 \n",
|
|
"3 NaN NaN \n",
|
|
"4 NaN NaN \n",
|
|
"5 3.045079e+09 896875.396449 \n",
|
|
"6 1.186822e+09 464475.145651 \n",
|
|
"7 NaN NaN \n",
|
|
"8 NaN NaN "
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 24
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"join_right_df = sjoin(pointdf, polydf, how=\"right\")\n",
|
|
"join_right_df\n",
|
|
"# Note Staten Island is repeated"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"html": [
|
|
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>BoroCode</th>\n",
|
|
" <th>BoroName</th>\n",
|
|
" <th>Shape_Area</th>\n",
|
|
" <th>Shape_Leng</th>\n",
|
|
" <th>geometry</th>\n",
|
|
" <th>value1</th>\n",
|
|
" <th>value2</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td> 5</td>\n",
|
|
" <td> Staten Island</td>\n",
|
|
" <td> 1.623847e+09</td>\n",
|
|
" <td> 330454.175933</td>\n",
|
|
" <td> (POLYGON ((970217.0223999023 145643.3322143555...</td>\n",
|
|
" <td> 1071661</td>\n",
|
|
" <td> 793239</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td> 5</td>\n",
|
|
" <td> Staten Island</td>\n",
|
|
" <td> 1.623847e+09</td>\n",
|
|
" <td> 330454.175933</td>\n",
|
|
" <td> (POLYGON ((970217.0223999023 145643.3322143555...</td>\n",
|
|
" <td> 1110026</td>\n",
|
|
" <td> 793424</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td> 3</td>\n",
|
|
" <td> Brooklyn</td>\n",
|
|
" <td> 1.937810e+09</td>\n",
|
|
" <td> 741227.337073</td>\n",
|
|
" <td> (POLYGON ((1021176.479003906 151374.7969970703...</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td> 4</td>\n",
|
|
" <td> Queens</td>\n",
|
|
" <td> 3.045079e+09</td>\n",
|
|
" <td> 896875.396449</td>\n",
|
|
" <td> (POLYGON ((1029606.076599121 156073.8142089844...</td>\n",
|
|
" <td> 1225121</td>\n",
|
|
" <td> 793979</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td> 1</td>\n",
|
|
" <td> Manhattan</td>\n",
|
|
" <td> 6.364308e+08</td>\n",
|
|
" <td> 358400.912836</td>\n",
|
|
" <td> (POLYGON ((981219.0557861328 188655.3157958984...</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td> 2</td>\n",
|
|
" <td> Bronx</td>\n",
|
|
" <td> 1.186822e+09</td>\n",
|
|
" <td> 464475.145651</td>\n",
|
|
" <td> (POLYGON ((1012821.805786133 229228.2645874023...</td>\n",
|
|
" <td> 1263486</td>\n",
|
|
" <td> 794164</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 25,
|
|
"text": [
|
|
" BoroCode BoroName Shape_Area Shape_Leng \\\n",
|
|
"0 5 Staten Island 1.623847e+09 330454.175933 \n",
|
|
"1 5 Staten Island 1.623847e+09 330454.175933 \n",
|
|
"2 3 Brooklyn 1.937810e+09 741227.337073 \n",
|
|
"3 4 Queens 3.045079e+09 896875.396449 \n",
|
|
"4 1 Manhattan 6.364308e+08 358400.912836 \n",
|
|
"5 2 Bronx 1.186822e+09 464475.145651 \n",
|
|
"\n",
|
|
" geometry value1 value2 \n",
|
|
"0 (POLYGON ((970217.0223999023 145643.3322143555... 1071661 793239 \n",
|
|
"1 (POLYGON ((970217.0223999023 145643.3322143555... 1110026 793424 \n",
|
|
"2 (POLYGON ((1021176.479003906 151374.7969970703... NaN NaN \n",
|
|
"3 (POLYGON ((1029606.076599121 156073.8142089844... 1225121 793979 \n",
|
|
"4 (POLYGON ((981219.0557861328 188655.3157958984... NaN NaN \n",
|
|
"5 (POLYGON ((1012821.805786133 229228.2645874023... 1263486 794164 "
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 25
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"join_inner_df = sjoin(pointdf, polydf, how=\"inner\")\n",
|
|
"join_inner_df\n",
|
|
"# Note the lack of NaNs; dropped anything that didn't intersect"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"html": [
|
|
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>geometry</th>\n",
|
|
" <th>value1</th>\n",
|
|
" <th>value2</th>\n",
|
|
" <th>BoroCode</th>\n",
|
|
" <th>BoroName</th>\n",
|
|
" <th>Shape_Area</th>\n",
|
|
" <th>Shape_Leng</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td> POINT (932450 139211)</td>\n",
|
|
" <td> 1071661</td>\n",
|
|
" <td> 793239</td>\n",
|
|
" <td> 5</td>\n",
|
|
" <td> Staten Island</td>\n",
|
|
" <td> 1.623847e+09</td>\n",
|
|
" <td> 330454.175933</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td> POINT (951725 158301)</td>\n",
|
|
" <td> 1110026</td>\n",
|
|
" <td> 793424</td>\n",
|
|
" <td> 5</td>\n",
|
|
" <td> Staten Island</td>\n",
|
|
" <td> 1.623847e+09</td>\n",
|
|
" <td> 330454.175933</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td> POINT (1009550 215571)</td>\n",
|
|
" <td> 1225121</td>\n",
|
|
" <td> 793979</td>\n",
|
|
" <td> 4</td>\n",
|
|
" <td> Queens</td>\n",
|
|
" <td> 3.045079e+09</td>\n",
|
|
" <td> 896875.396449</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td> POINT (1028825 234661)</td>\n",
|
|
" <td> 1263486</td>\n",
|
|
" <td> 794164</td>\n",
|
|
" <td> 2</td>\n",
|
|
" <td> Bronx</td>\n",
|
|
" <td> 1.186822e+09</td>\n",
|
|
" <td> 464475.145651</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 27,
|
|
"text": [
|
|
" geometry value1 value2 BoroCode BoroName \\\n",
|
|
"0 POINT (932450 139211) 1071661 793239 5 Staten Island \n",
|
|
"1 POINT (951725 158301) 1110026 793424 5 Staten Island \n",
|
|
"2 POINT (1009550 215571) 1225121 793979 4 Queens \n",
|
|
"3 POINT (1028825 234661) 1263486 794164 2 Bronx \n",
|
|
"\n",
|
|
" Shape_Area Shape_Leng \n",
|
|
"0 1.623847e+09 330454.175933 \n",
|
|
"1 1.623847e+09 330454.175933 \n",
|
|
"2 3.045079e+09 896875.396449 \n",
|
|
"3 1.186822e+09 464475.145651 "
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 27
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"We're not limited to using the `intersection` binary predicate. Any of the `Shapely` geometry methods that return a Boolean can be used by specifying the `op` kwarg."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"sjoin(pointdf, polydf, how=\"left\", op=\"within\")"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"html": [
|
|
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>geometry</th>\n",
|
|
" <th>value1</th>\n",
|
|
" <th>value2</th>\n",
|
|
" <th>BoroCode</th>\n",
|
|
" <th>BoroName</th>\n",
|
|
" <th>Shape_Area</th>\n",
|
|
" <th>Shape_Leng</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td> POINT (913175 120121)</td>\n",
|
|
" <td> 1033296</td>\n",
|
|
" <td> 793054</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td> None</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td> POINT (932450 139211)</td>\n",
|
|
" <td> 1071661</td>\n",
|
|
" <td> 793239</td>\n",
|
|
" <td> 5</td>\n",
|
|
" <td> Staten Island</td>\n",
|
|
" <td> 1.623847e+09</td>\n",
|
|
" <td> 330454.175933</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td> POINT (951725 158301)</td>\n",
|
|
" <td> 1110026</td>\n",
|
|
" <td> 793424</td>\n",
|
|
" <td> 5</td>\n",
|
|
" <td> Staten Island</td>\n",
|
|
" <td> 1.623847e+09</td>\n",
|
|
" <td> 330454.175933</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td> POINT (971000 177391)</td>\n",
|
|
" <td> 1148391</td>\n",
|
|
" <td> 793609</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td> None</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td> POINT (990275 196481)</td>\n",
|
|
" <td> 1186756</td>\n",
|
|
" <td> 793794</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td> None</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td> POINT (1009550 215571)</td>\n",
|
|
" <td> 1225121</td>\n",
|
|
" <td> 793979</td>\n",
|
|
" <td> 4</td>\n",
|
|
" <td> Queens</td>\n",
|
|
" <td> 3.045079e+09</td>\n",
|
|
" <td> 896875.396449</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td> POINT (1028825 234661)</td>\n",
|
|
" <td> 1263486</td>\n",
|
|
" <td> 794164</td>\n",
|
|
" <td> 2</td>\n",
|
|
" <td> Bronx</td>\n",
|
|
" <td> 1.186822e+09</td>\n",
|
|
" <td> 464475.145651</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td> POINT (1048100 253751)</td>\n",
|
|
" <td> 1301851</td>\n",
|
|
" <td> 794349</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td> None</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td> POINT (1067375 272841)</td>\n",
|
|
" <td> 1340216</td>\n",
|
|
" <td> 794534</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td> None</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" <td> NaN</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 32,
|
|
"text": [
|
|
" geometry value1 value2 BoroCode BoroName \\\n",
|
|
"0 POINT (913175 120121) 1033296 793054 NaN None \n",
|
|
"1 POINT (932450 139211) 1071661 793239 5 Staten Island \n",
|
|
"2 POINT (951725 158301) 1110026 793424 5 Staten Island \n",
|
|
"3 POINT (971000 177391) 1148391 793609 NaN None \n",
|
|
"4 POINT (990275 196481) 1186756 793794 NaN None \n",
|
|
"5 POINT (1009550 215571) 1225121 793979 4 Queens \n",
|
|
"6 POINT (1028825 234661) 1263486 794164 2 Bronx \n",
|
|
"7 POINT (1048100 253751) 1301851 794349 NaN None \n",
|
|
"8 POINT (1067375 272841) 1340216 794534 NaN None \n",
|
|
"\n",
|
|
" Shape_Area Shape_Leng \n",
|
|
"0 NaN NaN \n",
|
|
"1 1.623847e+09 330454.175933 \n",
|
|
"2 1.623847e+09 330454.175933 \n",
|
|
"3 NaN NaN \n",
|
|
"4 NaN NaN \n",
|
|
"5 3.045079e+09 896875.396449 \n",
|
|
"6 1.186822e+09 464475.145651 \n",
|
|
"7 NaN NaN \n",
|
|
"8 NaN NaN "
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 32
|
|
}
|
|
],
|
|
"metadata": {}
|
|
}
|
|
]
|
|
} |