Skip to content

Instantly share code, notes, and snippets.

@kissmygritts
Created November 17, 2022 21:55
Show Gist options
  • Save kissmygritts/8a89950ffc5afa797dcea6b2c7f83466 to your computer and use it in GitHub Desktop.
Save kissmygritts/8a89950ffc5afa797dcea6b2c7f83466 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "0305a20a-bef9-467e-b45e-2bd72a18b428",
"metadata": {},
"outputs": [],
"source": [
"import geopandas as gpd\n",
"import shapely"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "816bb1b7-108c-4125-965a-4605fb322304",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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L7/sdiTH5efn67LLLlNMTIzi4+N13XXX6a233gqZY4xRbm6uEhISFBUVpYyMDB08eNClxHbl5+crIiJCWVlZwbFwX//Ro0d18803a+DAgYqOjtbYsWNVUVERfDyc13/q1Ck98MADSkpKUlRUlEaMGKEVK1aotbU1OCfc1r9r1y7NnDlTCQkJioiI0NNPPx3y+JdZb1NTkxYvXqxBgwapb9++uuaaa/Tuu+92PJTpZjZt2mR69epl1q9fbw4dOmSWLFli+vbta6qrq92O5qirrrrKbNiwwbzxxhumsrLSzJgxwwwdOtScOHEiOGfVqlUmJibGbN682Rw4cMDccMMNZvDgwaa+vt7F5M7bu3evGT58uBkzZoxZsmRJcDyc1//hhx+aYcOGme9973vmL3/5i6mqqjI7duwwf//734Nzwnn9P/nJT8zAgQPNs88+a6qqqsxTTz1l+vXrZwoLC4Nzwm39zz33nMnJyTGbN282kszWrVtDHv8y650/f7654IILTGlpqdm3b5+54oorzCWXXGJOnTrVoUzdrmAuv/xyM3/+/JCxUaNGmfvuu8+lROdGbW2tkWTKysqMMca0trYan89nVq1aFZzz8ccfm7i4OPPoo4+6FdNxDQ0NJjk52ZSWlprJkycHCybc13/vvfeaSZMmfe7j4b7+GTNmmNtuuy1kbNasWebmm282xoT/+j9bMF9mvf/6179Mr169zKZNm4Jzjh49anr06GGef/75DuXoVh+RNTc3q6KiQpmZmSHjmZmZ2rNnj0upzo1AICBJGjBggCSpqqpKfr8/5L3weDyaPHlyWL0XCxcu1IwZMzR16tSQ8XBf/7Zt25SWlqbrr79e8fHxGjdunNavXx98PNzXP2nSJL3wwgs6fPiwJOm1117T7t27dfXVV0sK//V/1pdZb0VFhT755JOQOQkJCUpJSenwe9IlL3bZUe+//75aWlrk9XpDxr1er/x+v0up7DPGaOnSpZo0aZJSUlIkKbjeM70X1dXV5zyjDZs2bdK+fftUXl7e5rFwX//bb7+ttWvXaunSpbr//vu1d+9e3X333fJ4PLr11lvDfv333nuvAoGARo0apcjISLW0tGjlypW66aabJIX/n/9nfZn1+v1+9e7dW/37928zp6O/H7tVwZz22Uv8G2M6dNn/rmLRokV6/fXXtXv37jaPhet7UVNToyVLlmj79u3q06fP584L1/W3trYqLS1NeXl5kqRx48bp4MGDWrt2rW699dbgvHBd/5NPPqmNGzeqpKREo0ePVmVlpbKyspSQkKC5c+cG54Xr+j9PR9Z7Nu9Jt/qIbNCgQYqMjGzTxrW1tW2aPVwsXrxY27Zt00svvRTyFQc+n0+Swva9qKioUG1trVJTU9WzZ0/17NlTZWVl+uUvf6mePXsG1xiu6x88eLAuuuiikLELL7xQR44ckRT+f/733HOP7rvvPt144426+OKLdcstt+j73/++8vPzJYX/+j/ry6zX5/OpublZdXV1nzunvbpVwfTu3VupqakqLS0NGS8tLVV6erpLqewwxmjRokXasmWLXnzxRSUlJYU8npSUJJ/PF/JeNDc3q6ysLCzeiylTpujAgQOqrKwM3tLS0jRnzhxVVlZqxIgRYb3+iRMntjkt/fDhwxo2bJik8P/zP3nyZJsvw4qMjAyephzu6/+sL7Pe1NRU9erVK2TO8ePH9cYbb3T8PenQqQFd2OnTlB977DFz6NAhk5WVZfr27Wveeecdt6M56q677jJxcXFm586d5vjx48HbyZMng3NWrVpl4uLizJYtW8yBAwfMTTfd1KVP0/x3/v+zyIwJ7/Xv3bvX9OzZ06xcudL87W9/M7/73e9MdHS02bhxY3BOOK9/7ty55oILLgieprxlyxYzaNAgs2zZsuCccFt/Q0OD2b9/v9m/f7+RZAoKCsz+/fuDfwXjy6x3/vz5ZsiQIWbHjh1m37595sorr+Q05fb61a9+ZYYNG2Z69+5tLr300uCpu+FE0hlvGzZsCM5pbW01Dz74oPH5fMbj8ZhvfOMb5sCBA+6FtuyzBRPu6//9739vUlJSjMfjMaNGjTLr1q0LeTyc119fX2+WLFlihg4davr06WNGjBhhcnJyTFNTU3BOuK3/pZdeOuN/83PnzjXGfLn1NjY2mkWLFpkBAwaYqKgo881vftMcOXKkw5m4XD8AwIpudQwGAHDuUDAAACsoGACAFRQMAMAKCgYAYAUFAwCwgoIBAFhBwQAArKBgAABWUDAAACsoGACAFRQMAMCK/ws7a9G5wJFB8wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"polys3 = gpd.GeoDataFrame(\n",
" data={\"id\": [0, 1, 2, 3, 4, 5, 6, 7]},\n",
" geometry = gpd.geoseries.GeoSeries([\n",
" shapely.geometry.Polygon.from_bounds(0, 0, 50, 50),\n",
" shapely.geometry.Polygon.from_bounds(50, 50, 100, 100),\n",
" shapely.geometry.Polygon.from_bounds(0, 0, 50, 50),\n",
" shapely.geometry.Polygon.from_bounds(40, 20, 60, 40),\n",
" shapely.geometry.Polygon.from_bounds(80, 0, 100, 20),\n",
" shapely.geometry.Polygon.from_bounds(60, 60, 80, 80),\n",
" shapely.geometry.Polygon.from_bounds(30, 80, 50, 100),\n",
" shapely.geometry.Polygon.from_bounds(90, 45, 95, 105)\n",
" ]),\n",
" crs = \"epsg:3310\"\n",
")\n",
"\n",
"base = polys3.plot(alpha=.25, color=[\"gray\", \"orange\", \"blue\", \"yellow\", \"red\", \"purple\", \"green\", \"black\"])\n",
"for i in polys3.index:\n",
" centroid = polys3.iloc[i].geometry.centroid\n",
" label = polys3.iloc[i].id\n",
" base.annotate(label, xy = (centroid.x, centroid.y))"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "4961a683-618b-4e3c-adaa-00749cff33e7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{None,\n",
" 'contains',\n",
" 'contains_properly',\n",
" 'covered_by',\n",
" 'covers',\n",
" 'crosses',\n",
" 'intersects',\n",
" 'overlaps',\n",
" 'touches',\n",
" 'within'}"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"polys3.sindex.valid_query_predicates"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "2fd5cdf7-3db0-4dfd-ad56-374d9d28d5d2",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id_left</th>\n",
" <th>geometry</th>\n",
" <th>index_right</th>\n",
" <th>id_right</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id_left geometry index_right \\\n",
"0 0 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 2 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 5 \n",
"2 2 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 0 \n",
"\n",
" id_right \n",
"0 2 \n",
"1 5 \n",
"2 0 "
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joiner = polys3.sjoin(polys3, predicate=\"contains\")\n",
"joiner = joiner[joiner.id_left != joiner.id_right].sort_values(by = [\"id_left\", \"id_right\"])\n",
"joiner"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "59c8e207-dbae-4d79-83e8-ace4032dbae8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: >"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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AVVWVmru3LkKBAKSPr2iGjt2bOz32tvb+1xdneD1euX1ehM9KgDAuIRfSR09elRDhsTfbVpaWuwt6Lm5uQoEAqqrq4ud7+npUX19vQoLCxM9DgBgAEv4ldSNN96olStXavz48br44ou1e/duVVVV6d5775X06T/zlZaWKhQKKS8vT3l5eQqFQsrMzNTs2bMTPQ4AYABLeKSefPJJ/fjHP9aCBQvU3t6uYDCoefPm6Sc/+UlszbJly9TV1aUFCxaoo6NDU6dO1bZt25SVlZXocQAAA5jHOeeSPcSZikaj8vl8ikQiys7OTvY4QL94ee+/kz0CcErTLzr5ewhO1+k+j/PZfQAAs4gUAMAsIgUAMItIAQDMIlIAALOIFADALCIFADCLSAEAzCJSAACziBQAwCwiBQAwi0gBAMwiUgAAs4gUAMAsIgUAMItIAQDMIlIAALOIFADALCIFADCLSAEAzCJSAACziBQAwCwiBQAwi0gBAMwiUgAAs4gUAMAsIgUAMItIAQDMIlIAALOIFADALCIFADCLSAEAzCJSAACziBQAwCwiBQAwi0gBAMwiUgAAs4gUAMAsIgUAMItIAQDMIlIAALOIFADALCIFADCLSAEAzCJSAACziBQAwCwiBQAwi0gBAMwiUgAAs4gUAMAsIgUAMItIAQDMIlIAALOIFADALCIFADCLSAEAzOqXSB06dEh33nmnRo0apczMTF1++eVqamqKnXfOqaKiQsFgUBkZGSouLlZLS0t/jAIAGMASHqmOjg5dddVVGjp0qP785z9r7969+vnPf66vfvWrsTWrV69WVVWVampq1NjYqEAgoBkzZqizszPR4wAABrD0RN/h448/rpycHK1fvz527IILLoj9b+ecqqurVV5erlmzZkmSNmzYIL/fr9raWs2bNy/RIwEABqiEX0lt3bpVU6ZM0S233KIxY8Zo8uTJWrduXex8a2urwuGwSkpKYse8Xq+KiorU0NBw0vvs7u5WNBqNuwEABr+ER+rdd9/VmjVrlJeXp5deeknz58/X/fffr9/85jeSpHA4LEny+/1xv+f3+2PnPq+yslI+ny92y8nJSfTYAACDEh6p3t5eXXHFFQqFQpo8ebLmzZun73//+1qzZk3cOo/HE/ezc67PsRPKysoUiURit7a2tkSPDQAwKOGRGjt2rC666KK4YxdeeKEOHjwo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+P+uoE7gjRMAALOIFADArJSNlNfr1WOPPSav15vsUZKOvYjHfnyGvfgMe/GZL3MvBuQbJwAAqSFlr6QAAPYRKQCAWUQKAGAWkQIAmJWykXrqqaeUm5ur4cOHq6CgQK+//nqyR+pXlZWVuvLKK5WVlaUxY8bo5ptv1r59++LWOOdUUVGhYDCojIwMFRcXq6WlJUkTf3kqKyvl8XhUWloaO5Zqe3Ho0CHdeeedGjVqlDIzM3X55Zerqakpdj5V9uPYsWN69NFHlZubq4yMDE2cOFErVqxQb29vbM1g3Yvt27frxhtvVDAYlMfj0fPPPx93/nQed3d3txYvXqzRo0drxIgRuummm/Tee++d22AuBW3atMkNHTrUrVu3zu3du9ctWbLEjRgxwh04cCDZo/Wb6667zq1fv969/fbbrrm52c2cOdONHz/eHTlyJLZm1apVLisryz333HNuz5497rbbbnNjx4510Wg0iZP3r507d7oLLrjAXXrppW7JkiWx46m0F//973/dhAkT3D333OP+/ve/u9bWVvfyyy+7d955J7YmVfbjpz/9qRs1apT705/+5FpbW93vf/9795WvfMVVV1fH1gzWvXjhhRdceXm5e+6555wkt2XLlrjzp/O458+f784//3xXV1fndu3a5a655hp32WWXuWPHjp31XCkZqa9//etu/vz5cccmTZrkHnnkkSRN9OVrb293klx9fb1zzrne3l4XCATcqlWrYms+/vhj5/P53NNPP52sMftVZ2eny8vLc3V1da6oqCgWqVTbi4cffthNmzbtlOdTaT9mzpzp7r333rhjs2bNcnfeeadzLnX24vOROp3H/eGHH7qhQ4e6TZs2xdYcOnTIDRkyxL344otnPUvK/XNfT0+PmpqaVFJSEne8pKREDQ0NSZrqyxeJRCRJI0eOlCS1trYqHA7H7YvX61VRUdGg3ZeFCxdq5syZmj59etzxVNuLrVu3asqUKbrllls0ZswYTZ48WevWrYudT6X9mDZtml555RXt379fkvTmm29qx44duv766yWl1l78r9N53E1NTfrkk0/i1gSDQeXn55/T3gzID5g9Fx988IGOHz8uv98fd9zv9yscDidpqi+Xc05Lly7VtGnTlJ+fL0mxx36yfTlw4MCXPmN/27Rpk3bt2qXGxsY+51JtL959912tWbNGS5cu1Y9+9CPt3LlT999/v7xer+6+++6U2o+HH35YkUhEkyZNUlpamo4fP66VK1fqjjvukJR6fzdOOJ3HHQ6HNWzYMJ133nl91pzLc2vKReqEz3/Fh3PurL/2Y6BZtGiR3nrrLe3YsaPPuVTYl7a2Ni1ZskTbtm3T8OHDT7kuFfZC+vSrb6ZMmaJQKCRJmjx5slpaWrRmzRrdfffdsXWpsB/PPvusNm7cqNraWl188cVqbm5WaWmpgsGg5s6dG1uXCntxMmfzuM91b1Lun/tGjx6ttLS0PmVvb2/v8/8SBqPFixdr69ateu211+K+7iQQCEhSSuxLU1OT2tvbVVBQoPT0dKWnp6u+vl6//OUvlZ6eHnu8qbAXkjR27FhddNFFcccuvPBCHTx4UFJq/d146KGH9Mgjj+j222/XJZdcorvuuksPPPCAKisrJaXWXvyv03ncgUBAPT096ujoOOWas5FykRo2bJgKCgpUV1cXd7yurk6FhYVJmqr/Oee0aNEibd68Wa+++qpyc3Pjzufm5ioQCMTtS09Pj+rr6wfdvlx77bXas2ePmpubY7cpU6Zozpw5am5u1sSJE1NmLyTpqquu6vOfI+zfv18TJkyQlFp/N44ePdrnC/jS0tJib0FPpb34X6fzuAsKCjR06NC4NYcPH9bbb799bntz1m+5GMBOvAX917/+tdu7d68rLS11I0aMcP/617+SPVq/+cEPfuB8Pp/7y1/+4g4fPhy7HT16NLZm1apVzufzuc2bN7s9e/a4O+64Y1C8tfZ0/O+7+5xLrb3YuXOnS09PdytXrnT//Oc/3W9/+1uXmZnpNm7cGFuTKvsxd+5cd/7558fegr5582Y3evRot2zZstiawboXnZ2dbvfu3W737t1OkquqqnK7d++O/ac5p/O458+f78aNG+defvllt2vXLvetb32Lt6CfrV/96lduwoQJbtiwYe6KK66IvRV7sJJ00tv69etja3p7e91jjz3mAoGA83q97uqrr3Z79uxJ3tBfos9HKtX24o9//KPLz893Xq/XTZo0ya1duzbufKrsRzQadUuWLHHjx493w4cPdxMnTnTl5eWuu7s7tmaw7sVrr7120ueIuXPnOudO73F3dXW5RYsWuZEjR7qMjAx3ww03uIMHD57TXHxVBwDArJR7TQoAMHAQKQCAWUQKAGAWkQIAmEWkAABmESkAgFlECgBgFpECAJhFpAAAZhEpAIBZRAoAYBaRAgCY9X9ZTDKXSwJxlwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"joiner.plot(alpha=.3)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "780481cc-2bff-49cb-b7d9-67a8e567da3c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id_left</th>\n",
" <th>geometry</th>\n",
" <th>index_right</th>\n",
" <th>id_right</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id_left geometry index_right \\\n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 5 \n",
"\n",
" id_right \n",
"1 5 "
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joiner = polys3.sjoin(polys3, predicate=\"contains_properly\")\n",
"joiner = joiner[joiner.id_left != joiner.id_right].sort_values(by = [\"id_left\", \"id_right\"])\n",
"joiner"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "8eedcc4c-6eb2-4b3e-91f3-053bcf3fc3c1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: >"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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Y2PjQE2337z++uu66qqrdNttt2nMmDGaPn26nn/+ee94sq3H13V3d2v16tVauHChfD5f0q3Fddddp7fffls7duyQJH300UfatGmTbrzxRknJ9btx9OhRHTt2TOeff37c/tTUVG3atCmp1uLr+vK8t2zZoiNHjsSNCYVCysvLO6e1GdKRys/P16pVq7R+/Xo9//zzikQiKigo0D//+U9FIhFJUiAQiHtMIBDwjg0lu3bt0ooVK5Sbm6v169dr0aJFuu+++7Rq1SpJSrr1+Lp169bp4MGDuvPOOyUl31osXbpU8+fP16WXXqqUlBRNnz5dpaWlmj9/vqTkWo/09HRdc801euKJJ7R//34dO3ZMq1ev1vvvv68DBw4k1Vp8XV+edyQS0XnnnacLLrjgtGPOxqD8FPS+mjVrlvfnqVOn6pprrtGkSZNUV1enq6++WpJ6fdWHc+6sv/7Dsp6eHl111VUKh8OSpOnTp6u5uVkrVqzQT37yE29csqzH173wwguaNWuWQqFQ3P5kWYtXXnlFq1ev1po1azRlyhR9+OGHKi0tVSgU0oIFC7xxybIeL730khYuXKixY8dq+PDhuuKKK1RSUqKtW7d6Y5JlLU52Ns/7XNdmSF9JnWzkyJGaOnWqdu7c6d3ld3Lh29raev3XwlCQlZWlyZMnx+277LLLtGfPHklKuvU4bvfu3dq4caPuuusub1+yrcXDDz+sRx55RPPmzdPUqVP14x//WA888IAqKyslJd96TJo0SQ0NDTp06JBaW1u1efNmHTlyRDk5OUm3Fsf15XkHg0F1d3ervb39tGPORlJFqqurS59++qmysrK8X7j6+nrveHd3txoaGlRQUDCAs+wf1157rT777LO4fTt27ND48eMlKenW47iVK1dqzJgxmj17trcv2dbi8OHDvb50bvjw4d4t6Mm2HseNHDlSWVlZam9v1/r163XLLbck7Vr05XlfeeWVSklJiRtz4MABffzxx+e2Nmd9y8Ug8OCDD7q//vWvbteuXe69995zN910k0tPT3d///vfnXNf3VKZmZnpXnvtNbd9+3Y3f/78IXEr6als3rzZjRgxwi1fvtzt3LnT/eEPf3BpaWlu9erV3phkWg/nnDt27JgbN26cW7p0aa9jybQWCxYscGPHjvVuQX/ttdfchRde6JYsWeKNSab1eOutt9ybb77pdu3a5TZs2OCmTZvmvvvd77ru7m7n3NBdi46ODrdt2za3bds2J8lVV1e7bdu2ud27dzvn+va8Fy1a5C6++GK3ceNGt3XrVve9732PW9D/k+P38aekpLhQKOTmzp3rmpubveM9PT1u2bJlLhgMOr/f766//nq3ffv2AZxx//rTn/7k8vLynN/vd5deeql77rnn4o4n23qsX7/eSXKfffZZr2PJtBaxWMzdf//9bty4ce788893EydOdOXl5a6rq8sbk0zr8corr7iJEye68847zwWDQXfPPfe4gwcPeseH6lq88847TlKvbcGCBc65vj3vzs5O94tf/MKNGjXKpaamuptuusnt2bPnnObFV3UAAMxKqvekAACDC5ECAJhFpAAAZhEpAIBZRAoAYBaRAgCYRaQAAGYRKQCAWUQKAGAWkQIAmEWkAABmESkAgFn/D63CtFExsjIoAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"joiner.plot(alpha=.3)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "20479aa8-8d80-4a02-a92c-5294289ba6a0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id_left</th>\n",
" <th>geometry</th>\n",
" <th>index_right</th>\n",
" <th>id_right</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5</td>\n",
" <td>POLYGON ((60.000 60.000, 60.000 80.000, 80.000...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id_left geometry index_right \\\n",
"0 0 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 2 \n",
"2 2 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 0 \n",
"5 5 POLYGON ((60.000 60.000, 60.000 80.000, 80.000... 1 \n",
"\n",
" id_right \n",
"0 2 \n",
"2 0 \n",
"5 1 "
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joiner = polys3.sjoin(polys3, predicate=\"covered_by\")\n",
"joiner = joiner[joiner.id_left != joiner.id_right].sort_values(by = [\"id_left\", \"id_right\"])\n",
"joiner"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "493773d6-f68a-4d1e-aab5-6f6a447fa4be",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: >"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"joiner.plot(alpha=.3)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "dd4b9d52-fdac-4e1b-ab1a-f026fa8ff179",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id_left</th>\n",
" <th>geometry</th>\n",
" <th>index_right</th>\n",
" <th>id_right</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id_left geometry index_right \\\n",
"0 0 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 2 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 5 \n",
"2 2 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 0 \n",
"\n",
" id_right \n",
"0 2 \n",
"1 5 \n",
"2 0 "
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joiner = polys3.sjoin(polys3, predicate=\"covers\")\n",
"joiner = joiner[joiner.id_left != joiner.id_right].sort_values(by = [\"id_left\", \"id_right\"])\n",
"joiner"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "52a76fec-3992-4050-903d-a87533d5ffe4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: >"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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AVVWVmru3LkKBAKSPr2iGjt2bOz32tvb+1xdneD1euX1ehM9KgDAuIRfSR09elRDhsTfbVpaWuwt6Lm5uQoEAqqrq4ud7+npUX19vQoLCxM9DgBgAEv4ldSNN96olStXavz48br44ou1e/duVVVV6d5775X06T/zlZaWKhQKKS8vT3l5eQqFQsrMzNTs2bMTPQ4AYABLeKSefPJJ/fjHP9aCBQvU3t6uYDCoefPm6Sc/+UlszbJly9TV1aUFCxaoo6NDU6dO1bZt25SVlZXocQAAA5jHOeeSPcSZikaj8vl8ikQiys7OTvY4QL94ee+/kz0CcErTLzr5ewhO1+k+j/PZfQAAs4gUAMAsIgUAMItIAQDMIlIAALOIFADALCIFADCLSAEAzCJSAACziBQAwCwiBQAwi0gBAMwiUgAAs4gUAMAsIgUAMItIAQDMIlIAALOIFADALCIFADCLSAEAzCJSAACziBQAwCwiBQAwi0gBAMwiUgAAs4gUAMAsIgUAMItIAQDMIlIAALOIFADALCIFADCLSAEAzCJSAACziBQAwCwiBQAwi0gBAMwiUgAAs4gUAMAsIgUAMItIAQDMIlIAALOIFADALCIFADCLSAEAzCJSAACziBQAwCwiBQAwi0gBAMwiUgAAs4gUAMAsIgUAMItIAQDMIlIAALOIFADALCIFADCLSAEAzOqXSB06dEh33nmnRo0apczMTF1++eVqamqKnXfOqaKiQsFgUBkZGSouLlZLS0t/jAIAGMASHqmOjg5dddVVGjp0qP785z9r7969+vnPf66vfvWrsTWrV69WVVWVampq1NjYqEAgoBkzZqizszPR4wAABrD0RN/h448/rpycHK1fvz527IILLoj9b+ecqqurVV5erlmzZkmSNmzYIL/fr9raWs2bNy/RIwEABqiEX0lt3bpVU6ZM0S233KIxY8Zo8uTJWrduXex8a2urwuGwSkpKYse8Xq+KiorU0NBw0vvs7u5WNBqNuwEABr+ER+rdd9/VmjVrlJeXp5deeknz58/X/fffr9/85jeSpHA4LEny+/1xv+f3+2PnPq+yslI+ny92y8nJSfTYAACDEh6p3t5eXXHFFQqFQpo8ebLmzZun73//+1qzZk3cOo/HE/ezc67PsRPKysoUiURit7a2tkSPDQAwKOGRGjt2rC666KK4YxdeeKEOHjwo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+P+uoE7gjRMAALOIFADArJSNlNfr1WOPPSav15vsUZKOvYjHfnyGvfgMe/GZL3MvBuQbJwAAqSFlr6QAAPYRKQCAWUQKAGAWkQIAmJWykXrqqaeUm5ur4cOHq6CgQK+//nqyR+pXlZWVuvLKK5WVlaUxY8bo5ptv1r59++LWOOdUUVGhYDCojIwMFRcXq6WlJUkTf3kqKyvl8XhUWloaO5Zqe3Ho0CHdeeedGjVqlDIzM3X55Zerqakpdj5V9uPYsWN69NFHlZubq4yMDE2cOFErVqxQb29vbM1g3Yvt27frxhtvVDAYlMfj0fPPPx93/nQed3d3txYvXqzRo0drxIgRuummm/Tee++d22AuBW3atMkNHTrUrVu3zu3du9ctWbLEjRgxwh04cCDZo/Wb6667zq1fv969/fbbrrm52c2cOdONHz/eHTlyJLZm1apVLisryz333HNuz5497rbbbnNjx4510Wg0iZP3r507d7oLLrjAXXrppW7JkiWx46m0F//973/dhAkT3D333OP+/ve/u9bWVvfyyy+7d955J7YmVfbjpz/9qRs1apT705/+5FpbW93vf/9795WvfMVVV1fH1gzWvXjhhRdceXm5e+6555wkt2XLlrjzp/O458+f784//3xXV1fndu3a5a655hp32WWXuWPHjp31XCkZqa9//etu/vz5cccmTZrkHnnkkSRN9OVrb293klx9fb1zzrne3l4XCATcqlWrYms+/vhj5/P53NNPP52sMftVZ2eny8vLc3V1da6oqCgWqVTbi4cffthNmzbtlOdTaT9mzpzp7r333rhjs2bNcnfeeadzLnX24vOROp3H/eGHH7qhQ4e6TZs2xdYcOnTIDRkyxL344otnPUvK/XNfT0+PmpqaVFJSEne8pKREDQ0NSZrqyxeJRCRJI0eOlCS1trYqHA7H7YvX61VRUdGg3ZeFCxdq5syZmj59etzxVNuLrVu3asqUKbrllls0ZswYTZ48WevWrYudT6X9mDZtml555RXt379fkvTmm29qx44duv766yWl1l78r9N53E1NTfrkk0/i1gSDQeXn55/T3gzID5g9Fx988IGOHz8uv98fd9zv9yscDidpqi+Xc05Lly7VtGnTlJ+fL0mxx36yfTlw4MCXPmN/27Rpk3bt2qXGxsY+51JtL959912tWbNGS5cu1Y9+9CPt3LlT999/v7xer+6+++6U2o+HH35YkUhEkyZNUlpamo4fP66VK1fqjjvukJR6fzdOOJ3HHQ6HNWzYMJ133nl91pzLc2vKReqEz3/Fh3PurL/2Y6BZtGiR3nrrLe3YsaPPuVTYl7a2Ni1ZskTbtm3T8OHDT7kuFfZC+vSrb6ZMmaJQKCRJmjx5slpaWrRmzRrdfffdsXWpsB/PPvusNm7cqNraWl188cVqbm5WaWmpgsGg5s6dG1uXCntxMmfzuM91b1Lun/tGjx6ttLS0PmVvb2/v8/8SBqPFixdr69ateu211+K+7iQQCEhSSuxLU1OT2tvbVVBQoPT0dKWnp6u+vl6//OUvlZ6eHnu8qbAXkjR27FhddNFFcccuvPBCHTx4UFJq/d146KGH9Mgjj+j222/XJZdcorvuuksPPPCAKisrJaXWXvyv03ncgUBAPT096ujoOOWas5FykRo2bJgKCgpUV1cXd7yurk6FhYVJmqr/Oee0aNEibd68Wa+++qpyc3Pjzufm5ioQCMTtS09Pj+rr6wfdvlx77bXas2ePmpubY7cpU6Zozpw5am5u1sSJE1NmLyTpqquu6vOfI+zfv18TJkyQlFp/N44ePdrnC/jS0tJib0FPpb34X6fzuAsKCjR06NC4NYcPH9bbb799bntz1m+5GMBOvAX917/+tdu7d68rLS11I0aMcP/617+SPVq/+cEPfuB8Pp/7y1/+4g4fPhy7HT16NLZm1apVzufzuc2bN7s9e/a4O+64Y1C8tfZ0/O+7+5xLrb3YuXOnS09PdytXrnT//Oc/3W9/+1uXmZnpNm7cGFuTKvsxd+5cd/7558fegr5582Y3evRot2zZstiawboXnZ2dbvfu3W737t1OkquqqnK7d++O/ac5p/O458+f78aNG+defvllt2vXLvetb32Lt6CfrV/96lduwoQJbtiwYe6KK66IvRV7sJJ00tv69etja3p7e91jjz3mAoGA83q97uqrr3Z79uxJ3tBfos9HKtX24o9//KPLz893Xq/XTZo0ya1duzbufKrsRzQadUuWLHHjx493w4cPdxMnTnTl5eWuu7s7tmaw7sVrr7120ueIuXPnOudO73F3dXW5RYsWuZEjR7qMjAx3ww03uIMHD57TXHxVBwDArJR7TQoAMHAQKQCAWUQKAGAWkQIAmEWkAABmESkAgFlECgBgFpECAJhFpAAAZhEpAIBZRAoAYBaRAgCY9X9ZTDKXSwJxlwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"joiner.plot(alpha=.3)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "820a8520-aed2-4c30-8947-37c886eedacc",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id_left</th>\n",
" <th>geometry</th>\n",
" <th>index_right</th>\n",
" <th>id_right</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty GeoDataFrame\n",
"Columns: [id_left, geometry, index_right, id_right]\n",
"Index: []"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joiner = polys3.sjoin(polys3, predicate=\"crosses\")\n",
"joiner = joiner[joiner.id_left != joiner.id_right].sort_values(by = [\"id_left\", \"id_right\"])\n",
"joiner"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "01031e81-9269-4db5-97e3-af2542c18bca",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/homebrew/Caskroom/miniconda/base/envs/gis/lib/python3.10/site-packages/geopandas/plotting.py:693: UserWarning: The GeoDataFrame you are attempting to plot is empty. Nothing has been displayed.\n",
" warnings.warn(\n"
]
},
{
"data": {
"text/plain": [
"<AxesSubplot: >"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAbAAAAGiCAYAAACGUJO6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAa6klEQVR4nO3de2xUZf7H8c+0Q6fIbscIWgvUWlzQKhGXNlTKVqMrNUAwJLuhhg0FFxMbdSt0caF2I0JMGt3IrrfWCxRiUthGBZc/usr8sUK57IVua4xtogG0RVubltAWcQcpz+8P0vk5tmjP0Atf+34l5495PGfmmSd13pwzM63POecEAIAxcaM9AQAAYkHAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACZ5Dtj+/fu1ePFiTZ48WT6fT++8884PHrNv3z5lZmYqMTFR06ZN0yuvvBLLXAEAiPAcsK+++kqzZs3SSy+9NKj9jx8/roULFyo3N1f19fV64oknVFRUpLffftvzZAEA6OO7lF/m6/P5tHv3bi1ZsuSi+6xbt0579uxRU1NTZKywsFAffPCBDh8+HOtDAwDGOP9wP8Dhw4eVl5cXNXbvvfdq69at+uabbzRu3Lh+x4TDYYXD4cjt8+fP6+TJk5o4caJ8Pt9wTxkAMIScc+rp6dHkyZMVFzd0H70Y9oC1tbUpOTk5aiw5OVnnzp1TR0eHUlJS+h1TVlamjRs3DvfUAAAjqKWlRVOnTh2y+xv2gEnqd9bUd9XyYmdTJSUlKi4ujtzu6urSddddp5aWFiUlJQ3fRAEAQ667u1upqan66U9/OqT3O+wBu/baa9XW1hY11t7eLr/fr4kTJw54TCAQUCAQ6DeelJREwADAqKF+C2jYvwc2d+5chUKhqLG9e/cqKytrwPe/AAAYDM8BO336tBoaGtTQ0CDpwsfkGxoa1NzcLOnC5b+CgoLI/oWFhfrss89UXFyspqYmVVZWauvWrVq7du3QPAMAwJjk+RLikSNHdNddd0Vu971XtWLFCm3fvl2tra2RmElSenq6ampqtGbNGr388suaPHmyXnjhBf3qV78agukDAMaqS/oe2Ejp7u5WMBhUV1cX74EBgDHD9RrO70IEAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJMQWsvLxc6enpSkxMVGZmpmpra793/6qqKs2aNUtXXHGFUlJS9MADD6izszOmCQMAIMUQsOrqaq1evVqlpaWqr69Xbm6uFixYoObm5gH3P3DggAoKCrRq1Sp99NFHevPNN/Wf//xHDz744CVPHgAwdnkO2ObNm7Vq1So9+OCDysjI0F/+8helpqaqoqJiwP3/+c9/6vrrr1dRUZHS09P1i1/8Qg899JCOHDlyyZMHAIxdngJ29uxZ1dXVKS8vL2o8Ly9Phw4dGvCYnJwcnThxQjU1NXLO6csvv9Rbb72lRYsWXfRxwuGwuru7ozYAAL7NU8A6OjrU29ur5OTkqPHk5GS1tbUNeExOTo6qqqqUn5+vhIQEXXvttbryyiv14osvXvRxysrKFAwGI1tqaqqXaQIAxoCYPsTh8/mibjvn+o31aWxsVFFRkZ588knV1dXp3Xff1fHjx1VYWHjR+y8pKVFXV1dka2lpiWWaAIAfMb+XnSdNmqT4+Ph+Z1vt7e39zsr6lJWVad68eXr88cclSbfeeqsmTJig3NxcPf3000pJSel3TCAQUCAQ8DI1AMAY4+kMLCEhQZmZmQqFQlHjoVBIOTk5Ax5z5swZxcVFP0x8fLykC2duAADEwvMlxOLiYm3ZskWVlZVqamrSmjVr1NzcHLkkWFJSooKCgsj+ixcv1q5du1RRUaFjx47p4MGDKioq0pw5czR58uSheyYAgDHF0yVEScrPz1dnZ6c2bdqk1tZWzZw5UzU1NUpLS5Mktba2Rn0nbOXKlerp6dFLL72k3//+97ryyit1991365lnnhm6ZwEAGHN8zsB1vO7ubgWDQXV1dSkpKWm0pwMA8GC4XsP5XYgAAJMIGADAJAIGADCJgAEATCJgAACTCBgAwCQCBgAwiYABAEwiYAAAkwgYAMAkAgYAMImAAQBMImAAAJMIGADAJAIGADCJgAEATCJgAACTCBgAwCQCBgAwiYABAEwiYAAAkwgYAMAkAgYAMImAAQBMImAAAJMIGADAJAIGADCJgAEATCJgAACTCBgAwCQCBgAwiYABAEwiYAAAkwgYAMAkAgYAMImAAQBMImAAAJMIGADAJAIGADCJgAEATCJgAACTCBgAwCQCBgAwiYABAEwiYAAAkwgYAMAkAgYAMImAAQBMImAAAJMIGADAJAIGADCJgAEATCJgAACTCBgAwCQCBgAwiYABAEwiYAAAkwgYAMAkAgYAMImAAQBMImAAAJMIGADAJAIGADAppoCVl5crPT1diYmJyszMVG1t7ffuHw6HVVpaqrS0NAUCAd1www2qrKyMacIAAEiS3+sB1dXVWr16tcrLyzVv3jy9+uqrWrBggRobG3XdddcNeMzSpUv15ZdfauvWrfrZz36m9vZ2nTt37pInDwAYu3zOOeflgOzsbM2ePVsVFRWRsYyMDC1ZskRlZWX99n/33Xd1//3369ixY7rqqqtimmR3d7eCwaC6urqUlJQU030AAEbHcL2Ge7qEePbsWdXV1SkvLy9qPC8vT4cOHRrwmD179igrK0vPPvuspkyZohkzZmjt2rX6+uuvL/o44XBY3d3dURsAAN/m6RJiR0eHent7lZycHDWenJystra2AY85duyYDhw4oMTERO3evVsdHR16+OGHdfLkyYu+D1ZWVqaNGzd6mRoAYIyJ6UMcPp8v6rZzrt9Yn/Pnz8vn86mqqkpz5szRwoULtXnzZm3fvv2iZ2ElJSXq6uqKbC0tLbFMEwDwI+bpDGzSpEmKj4/vd7bV3t7e76ysT0pKiqZMmaJgMBgZy8jIkHNOJ06c0PTp0/sdEwgEFAgEvEwNADDGeDoDS0hIUGZmpkKhUNR4KBRSTk7OgMfMmzdPX3zxhU6fPh0Z+/jjjxUXF6epU6fGMGUAAGK4hFhcXKwtW7aosrJSTU1NWrNmjZqbm1VYWCjpwuW/goKCyP7Lli3TxIkT9cADD6ixsVH79+/X448/rt/+9rcaP3780D0TAMCY4vl7YPn5+ers7NSmTZvU2tqqmTNnqqamRmlpaZKk1tZWNTc3R/b/yU9+olAopN/97nfKysrSxIkTtXTpUj399NND9ywAAGOO5++BjQa+BwYAdl0W3wMDAOByQcAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASTEFrLy8XOnp6UpMTFRmZqZqa2sHddzBgwfl9/t12223xfKwAABEeA5YdXW1Vq9erdLSUtXX1ys3N1cLFixQc3Pz9x7X1dWlgoIC/fKXv4x5sgAA9PE555yXA7KzszV79mxVVFRExjIyMrRkyRKVlZVd9Lj7779f06dPV3x8vN555x01NDRcdN9wOKxwOBy53d3drdTUVHV1dSkpKcnLdAEAo6y7u1vBYHDIX8M9nYGdPXtWdXV1ysvLixrPy8vToUOHLnrctm3bdPToUW3YsGFQj1NWVqZgMBjZUlNTvUwTADAGeApYR0eHent7lZycHDWenJystra2AY/55JNPtH79elVVVcnv9w/qcUpKStTV1RXZWlpavEwTADAGDK4o3+Hz+aJuO+f6jUlSb2+vli1bpo0bN2rGjBmDvv9AIKBAIBDL1AAAY4SngE2aNEnx8fH9zrba29v7nZVJUk9Pj44cOaL6+no9+uijkqTz58/LOSe/36+9e/fq7rvvvoTpAwDGKk+XEBMSEpSZmalQKBQ1HgqFlJOT02//pKQkffjhh2poaIhshYWFuvHGG9XQ0KDs7OxLmz0AYMzyfAmxuLhYy5cvV1ZWlubOnavXXntNzc3NKiwslHTh/avPP/9cb7zxhuLi4jRz5syo46+55holJib2GwcAwAvPAcvPz1dnZ6c2bdqk1tZWzZw5UzU1NUpLS5Mktba2/uB3wgAAuFSevwc2GobrOwQAgOF3WXwPDACAywUBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmETAAAAmETAAgEkEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACbFFLDy8nKlp6crMTFRmZmZqq2tvei+u3bt0vz583X11VcrKSlJc+fO1XvvvRfzhAEAkGIIWHV1tVavXq3S0lLV19crNzdXCxYsUHNz84D779+/X/Pnz1dNTY3q6up01113afHixaqvr7/kyQMAxi6fc855OSA7O1uzZ89WRUVFZCwjI0NLlixRWVnZoO7jlltuUX5+vp588skB/3s4HFY4HI7c7u7uVmpqqrq6upSUlORlugCAUdbd3a1gMDjkr+GezsDOnj2ruro65eXlRY3n5eXp0KFDg7qP8+fPq6enR1ddddVF9ykrK1MwGIxsqampXqYJABgDPAWso6NDvb29Sk5OjhpPTk5WW1vboO7jueee01dffaWlS5dedJ+SkhJ1dXVFtpaWFi/TBACMAf5YDvL5fFG3nXP9xgayc+dOPfXUU/rb3/6ma6655qL7BQIBBQKBWKYGABgjPAVs0qRJio+P73e21d7e3u+s7Luqq6u1atUqvfnmm7rnnnu8zxQAgG/xdAkxISFBmZmZCoVCUeOhUEg5OTkXPW7nzp1auXKlduzYoUWLFsU2UwAAvsXzJcTi4mItX75cWVlZmjt3rl577TU1NzersLBQ0oX3rz7//HO98cYbki7Eq6CgQM8//7xuv/32yNnb+PHjFQwGh/CpAADGEs8By8/PV2dnpzZt2qTW1lbNnDlTNTU1SktLkyS1trZGfSfs1Vdf1blz5/TII4/okUceiYyvWLFC27dvv/RnAAAYkzx/D2w0DNd3CAAAw++y+B4YAACXCwIGADCJgAEATCJgAACTCBgAwCQCBgAwiYABAEwiYAAAkwgYAMAkAgYAMImAAQBMImAAAJMIGADAJAIGADCJgAEATCJgAACTCBgAwCQCBgAwiYABAEwiYAAAkwgYAMAkAgYAMImAAQBMImAAAJMIGADAJAIGADCJgAEATCJgAACTCBgAwCQCBgAwiYABAEwiYAAAkwgYAMAkAgYAMImAAQBMImAAAJMIGADAJAIGADCJgAEATCJgAACTCBgAwCQCBgAwiYABAEwiYAAAkwgYAMAkAgYAMImAAQBMImAAAJMIGADAJAIGADCJgAEATCJgAACTCBgAwCQCBgAwiYABAEwiYAAAkwgYAMAkAgYAMImAAQBMImAAAJMIGADAJAIGADCJgAEATIopYOXl5UpPT1diYqIyMzNVW1v7vfvv27dPmZmZSkxM1LRp0/TKK6/ENFkAAPp4Dlh1dbVWr16t0tJS1dfXKzc3VwsWLFBzc/OA+x8/flwLFy5Ubm6u6uvr9cQTT6ioqEhvv/32JU8eADB2+ZxzzssB2dnZmj17tioqKiJjGRkZWrJkicrKyvrtv27dOu3Zs0dNTU2RscLCQn3wwQc6fPjwgI8RDocVDocjt7u6unTdddeppaVFSUlJXqYLABhl3d3dSk1N1alTpxQMBofujp0H4XDYxcfHu127dkWNFxUVuTvuuGPAY3Jzc11RUVHU2K5du5zf73dnz54d8JgNGzY4SWxsbGxsP6Lt6NGjXpLzg/zyoKOjQ729vUpOTo4aT05OVltb24DHtLW1Dbj/uXPn1NHRoZSUlH7HlJSUqLi4OHL71KlTSktLU3Nz89DW+0em7185nKl+P9ZpcFinwWGdfljfVbSrrrpqSO/XU8D6+Hy+qNvOuX5jP7T/QON9AoGAAoFAv/FgMMgPyCAkJSWxToPAOg0O6zQ4rNMPi4sb2g++e7q3SZMmKT4+vt/ZVnt7e7+zrD7XXnvtgPv7/X5NnDjR43QBALjAU8ASEhKUmZmpUCgUNR4KhZSTkzPgMXPnzu23/969e5WVlaVx48Z5nC4AABd4Pp8rLi7Wli1bVFlZqaamJq1Zs0bNzc0qLCyUdOH9q4KCgsj+hYWF+uyzz1RcXKympiZVVlZq69atWrt27aAfMxAIaMOGDQNeVsT/Y50Gh3UaHNZpcFinHzZca+T5Y/TShS8yP/vss2ptbdXMmTP15z//WXfccYckaeXKlfr000/1/vvvR/bft2+f1qxZo48++kiTJ0/WunXrIsEDACAWMQUMAIDRxu9CBACYRMAAACYRMACASQQMAGDSZRMw/kTL4HhZp127dmn+/Pm6+uqrlZSUpLlz5+q9994bwdmODq8/S30OHjwov9+v2267bXgneJnwuk7hcFilpaVKS0tTIBDQDTfcoMrKyhGa7ejxuk5VVVWaNWuWrrjiCqWkpOiBBx5QZ2fnCM12dOzfv1+LFy/W5MmT5fP59M477/zgMUPyGj6kv1kxRn/961/duHHj3Ouvv+4aGxvdY4895iZMmOA+++yzAfc/duyYu+KKK9xjjz3mGhsb3euvv+7GjRvn3nrrrRGe+cjyuk6PPfaYe+aZZ9y///1v9/HHH7uSkhI3btw499///neEZz5yvK5Rn1OnTrlp06a5vLw8N2vWrJGZ7CiKZZ3uu+8+l52d7UKhkDt+/Lj717/+5Q4ePDiCsx55XteptrbWxcXFueeff94dO3bM1dbWultuucUtWbJkhGc+smpqalxpaal7++23nSS3e/fu791/qF7DL4uAzZkzxxUWFkaN3XTTTW79+vUD7v+HP/zB3XTTTVFjDz30kLv99tuHbY6XA6/rNJCbb77Zbdy4caindtmIdY3y8/PdH//4R7dhw4YxETCv6/T3v//dBYNB19nZORLTu2x4Xac//elPbtq0aVFjL7zwgps6deqwzfFyM5iADdVr+KhfQjx79qzq6uqUl5cXNZ6Xl6dDhw4NeMzhw4f77X/vvffqyJEj+uabb4ZtrqMplnX6rvPnz6unp2fIfyP05SLWNdq2bZuOHj2qDRs2DPcULwuxrNOePXuUlZWlZ599VlOmTNGMGTO0du1aff311yMx5VERyzrl5OToxIkTqqmpkXNOX375pd566y0tWrRoJKZsxlC9hsf02+iH0kj9iRbrYlmn73ruuef01VdfaenSpcMxxVEXyxp98sknWr9+vWpra+X3j/r/DiMilnU6duyYDhw4oMTERO3evVsdHR16+OGHdfLkyR/t+2CxrFNOTo6qqqqUn5+v//3vfzp37pzuu+8+vfjiiyMxZTOG6jV81M/A+gz3n2j5sfC6Tn127typp556StXV1brmmmuGa3qXhcGuUW9vr5YtW6aNGzdqxowZIzW9y4aXn6Xz58/L5/OpqqpKc+bM0cKFC7V582Zt3779R30WJnlbp8bGRhUVFenJJ59UXV2d3n33XR0/fpxfnTeAoXgNH/V/cvInWgYnlnXqU11drVWrVunNN9/UPffcM5zTHFVe16inp0dHjhxRfX29Hn30UUkXXqidc/L7/dq7d6/uvvvuEZn7SIrlZyklJUVTpkyJ+oOyGRkZcs7pxIkTmj59+rDOeTTEsk5lZWWaN2+eHn/8cUnSrbfeqgkTJig3N1dPP/30j/LqUCyG6jV81M/A+BMtgxPLOkkXzrxWrlypHTt2/Oivw3tdo6SkJH344YdqaGiIbIWFhbrxxhvV0NCg7OzskZr6iIrlZ2nevHn64osvdPr06cjYxx9/rLi4OE2dOnVY5ztaYlmnM2fO9PujjfHx8ZL+/wwDQ/ga7ukjH8Ok76OqW7dudY2NjW716tVuwoQJ7tNPP3XOObd+/Xq3fPnyyP59H8Fcs2aNa2xsdFu3bh1TH6Mf7Drt2LHD+f1+9/LLL7vW1tbIdurUqdF6CsPO6xp911j5FKLXderp6XFTp051v/71r91HH33k9u3b56ZPn+4efPDB0XoKI8LrOm3bts35/X5XXl7ujh496g4cOOCysrLcnDlzRuspjIienh5XX1/v6uvrnSS3efNmV19fH/m6wXC9hl8WAXPOuZdfftmlpaW5hIQEN3v2bLdv377If1uxYoW78847o/Z///333c9//nOXkJDgrr/+eldRUTHCMx4dXtbpzjvvdJL6bStWrBj5iY8grz9L3zZWAuac93Vqampy99xzjxs/frybOnWqKy4udmfOnBnhWY88r+v0wgsvuJtvvtmNHz/epaSkuN/85jfuxIkTIzzrkfWPf/zje19rhus1nD+nAgAwadTfAwMAIBYEDABgEgEDAJhEwAAAJhEwAIBJBAwAYBIBAwCYRMAAACYRMACASQQMAGASAQMAmPR/vVBObw9VdzEAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"joiner.plot(alpha=.3)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "1afa04ab-ecfc-4507-8793-e5b8546b17a1",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id_left</th>\n",
" <th>geometry</th>\n",
" <th>index_right</th>\n",
" <th>id_right</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>POLYGON ((40.000 20.000, 40.000 40.000, 60.000...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>POLYGON ((40.000 20.000, 40.000 40.000, 60.000...</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5</td>\n",
" <td>POLYGON ((60.000 60.000, 60.000 80.000, 80.000...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>6</td>\n",
" <td>POLYGON ((30.000 80.000, 30.000 100.000, 50.00...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>7</td>\n",
" <td>POLYGON ((90.000 45.000, 90.000 105.000, 95.00...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id_left geometry index_right \\\n",
"0 0 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 1 \n",
"0 0 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 2 \n",
"0 0 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 3 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 0 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 2 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 5 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 6 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 7 \n",
"2 2 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 0 \n",
"2 2 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 1 \n",
"2 2 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 3 \n",
"3 3 POLYGON ((40.000 20.000, 40.000 40.000, 60.000... 0 \n",
"3 3 POLYGON ((40.000 20.000, 40.000 40.000, 60.000... 2 \n",
"5 5 POLYGON ((60.000 60.000, 60.000 80.000, 80.000... 1 \n",
"6 6 POLYGON ((30.000 80.000, 30.000 100.000, 50.00... 1 \n",
"7 7 POLYGON ((90.000 45.000, 90.000 105.000, 95.00... 1 \n",
"\n",
" id_right \n",
"0 1 \n",
"0 2 \n",
"0 3 \n",
"1 0 \n",
"1 2 \n",
"1 5 \n",
"1 6 \n",
"1 7 \n",
"2 0 \n",
"2 1 \n",
"2 3 \n",
"3 0 \n",
"3 2 \n",
"5 1 \n",
"6 1 \n",
"7 1 "
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joiner = polys3.sjoin(polys3, predicate=\"intersects\")\n",
"joiner = joiner[joiner.id_left != joiner.id_right].sort_values(by = [\"id_left\", \"id_right\"])\n",
"joiner"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "4eb05d1b-1ed8-4018-958c-af3e2d433f9f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: >"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAGdCAYAAAAv9mXmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAb+0lEQVR4nO3dfWyV9f3/8dehhUPL2k5gnMORgiVpvqj1Bosjq8zWCTUTdYbMO1AxugXGjVScYK2bhYwW2daR2YmBLEjGOswiOLY4fxRviqRu1AKKxcCMXanC+TZu3TlFulbo5/eH4eR7KCo315sL2ucjOYm9zuec8/4ctE+vnsNpwDnnBACAxwb4PQAAoG8iMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwESq3wOciZ6eHh08eFAZGRkKBAJ+jwMA/YZzTh0dHYpEIhow4MvPUS7IwBw8eFDZ2dl+jwEA/VZra6tGjRr1pWsuyMBkZGRI+nyDmZmZPk8DAP1HPB5XdnZ24vvwl7kgA3P8x2KZmZkEBgB8cCovT/AiPwDABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAExckJ+mDAAXsq17//esbj/5spBHk9jiDAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAICJ0w7Mtm3bdOuttyoSiSgQCOill15Kut45p/LyckUiEaWlpamoqEhNTU1Ja7q6ujR//nwNHz5cQ4YM0W233aaPPvrorDYCADi/nHZgPv30U1111VWqrq4+6fUrVqxQVVWVqqur1dDQoHA4rClTpqijoyOxpqSkRJs2bdKGDRu0fft2HT58WLfccouOHTt25jsBAJxXAs45d8Y3DgS0adMm3X777ZI+P3uJRCIqKSnR4sWLJX1+thIKhfT0009r1qxZisVi+sY3vqHf/e53uuuuuyRJBw8eVHZ2tl5++WXddNNNX/m48XhcWVlZisViyszMPNPxAcAXF/KnKZ/O919PX4Npbm5WNBpVcXFx4lgwGFRhYaHq6+slSY2Njfrss8+S1kQiEeXl5SXWnKirq0vxeDzpAgA4v3n6+2Ci0agkKRRKrmsoFFJLS0tizaBBg3TRRRf1WnP89ieqrKzUkiVLvBwVPjvb/4O70C3/6/t+jwAffdp19Kxuf7b//mx9tOisbn+qTN5FFggEkr52zvU6dqIvW1NaWqpYLJa4tLa2ejYrAMCGp4EJh8OS1OtMpK2tLXFWEw6H1d3drfb29i9cc6JgMKjMzMykCwDg/OZpYHJychQOh1VbW5s41t3drbq6OhUUFEiS8vPzNXDgwKQ1hw4d0nvvvZdYAwC48J32azCHDx/WBx98kPi6ublZu3fv1tChQzV69GiVlJSooqJCubm5ys3NVUVFhdLT0zV9+nRJUlZWlh566CE9+uijGjZsmIYOHaof//jHuuKKKzR58mTvdgYA8NVpB+btt9/WDTfckPh64cKFkqSZM2fq+eef16JFi9TZ2ak5c+aovb1dEydO1JYtW5SRkZG4za9+9SulpqbqzjvvVGdnp2688UY9//zzSklJ8WBLAIDzwVn9PRi/8PdgLny8i4x3kfVnZ/susiHBs3sD8Nm8i8y3vwcDAMBxBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAw4Xlgjh49qieffFI5OTlKS0vT2LFjtXTpUvX09CTWOOdUXl6uSCSitLQ0FRUVqampyetRAAA+8jwwTz/9tJ577jlVV1fr/fff14oVK/Tzn/9czzzzTGLNihUrVFVVperqajU0NCgcDmvKlCnq6OjwehwAgE88D8xbb72l733ve5o6daouueQSff/731dxcbHefvttSZ+fvaxcuVJlZWWaNm2a8vLytG7dOh05ckQ1NTVejwMA8InngZk0aZJeffVV7d+/X5L0zjvvaPv27br55pslSc3NzYpGoyouLk7cJhgMqrCwUPX19Se9z66uLsXj8aQLAOD8lur1HS5evFixWEzjxo1TSkqKjh07pmXLlumee+6RJEWjUUlSKBRKul0oFFJL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ScdDoZCi0ahPU9lzzmnhwoWaNGmS8vLyJCmx35M9Fy0tLed8RgsbNmzQzp071dDQ0Ou6vr7/Dz/8UKtWrdLChQv1xBNPaMeOHXr44YcVDAZ1//339/n9L168WLFYTOPGjVNKSoqOHTumZcuW6Z577pHU9//8T3Qq+41Goxo0aJAuuuiiXmvO9PtjvwrMcSd+xL9z7ow+9v9CMW/ePL377rvavn17r+v66nPR2tqqBQsWaMuWLRo8ePAXruur++/p6dGECRNUUVEhSRo/fryampq0atUq3X///Yl1fXX/L7zwgtavX6+amhpdfvnl2r17t0pKShSJRDRz5szEur66/y9yJvs9m+ekX/2IbPjw4UpJSelV47a2tl5l7yvmz5+vzZs36/XXX0/6FQfhcFiS+uxz0djYqLa2NuXn5ys1NVWpqamqq6vTr3/9a6Wmpib22Ff3P3LkSF122WVJxy699FIdOHBAUt//83/sscf0+OOP6+6779YVV1yh++67T4888ogqKysl9f39n+hU9hsOh9Xd3a329vYvXHO6+lVgBg0apPz8fNXW1iYdr62tVUFBgU9T2XDOad68edq4caNee+015eTkJF2fk5OjcDic9Fx0d3errq6uTzwXN954o/bs2aPdu3cnLhMmTNCMGTO0e/dujR07tk/v/7rrruv1tvT9+/drzJgxkvr+n/+RI0d6/TKslJSUxNuU+/r+T3Qq+83Pz9fAgQOT1hw6dEjvvffemT8nZ/TWgAvY8bcp//a3v3V79+51JSUlbsiQIe6f//yn36N56kc/+pHLyspyb7zxhjt06FDicuTIkcSa5cuXu6ysLLdx40a3Z88ed88991zQb9P8Kv/3XWTO9e3979ixw6Wmprply5a5f/zjH+73v/+9S09Pd+vXr0+s6cv7nzlzprv44osTb1PeuHGjGz58uFu0aFFiTV/bf0dHh9u1a5fbtWuXk+Sqqqrcrl27En8F41T2O3v2bDdq1Ci3detWt3PnTved73yHtymfrt/85jduzJgxbtCgQe6aa65JvHW3L5F00svatWsTa3p6etxTTz3lwuGwCwaD7vrrr3d79uzxb2hjJwamr+//z3/+s8vLy3PBYNCNGzfOrV69Oun6vrz/eDzuFixY4EaPHu0GDx7sxo4d68rKylxXV1diTV/b/+uvv37S/+ZnzpzpnDu1/XZ2drp58+a5oUOHurS0NHfLLbe4AwcOnPFMfFw/AMBEv3oNBgBw7hAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJv4/N0ftlgSNLh0AAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"joiner.plot(alpha=.3)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "928fca22-3a95-4426-93bb-efb742c605c5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id_left</th>\n",
" <th>geometry</th>\n",
" <th>index_right</th>\n",
" <th>id_right</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>POLYGON ((40.000 20.000, 40.000 40.000, 60.000...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>POLYGON ((40.000 20.000, 40.000 40.000, 60.000...</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>7</td>\n",
" <td>POLYGON ((90.000 45.000, 90.000 105.000, 95.00...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id_left geometry index_right \\\n",
"0 0 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 3 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 7 \n",
"2 2 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 3 \n",
"3 3 POLYGON ((40.000 20.000, 40.000 40.000, 60.000... 0 \n",
"3 3 POLYGON ((40.000 20.000, 40.000 40.000, 60.000... 2 \n",
"7 7 POLYGON ((90.000 45.000, 90.000 105.000, 95.00... 1 \n",
"\n",
" id_right \n",
"0 3 \n",
"1 7 \n",
"2 3 \n",
"3 0 \n",
"3 2 \n",
"7 1 "
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joiner = polys3.sjoin(polys3, predicate=\"overlaps\")\n",
"joiner = joiner[joiner.id_left != joiner.id_right].sort_values(by = [\"id_left\", \"id_right\"])\n",
"joiner"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "30d89555-46c9-4993-9b89-255bad7c519f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: >"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAGdCAYAAAAv9mXmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAbyUlEQVR4nO3dfWyV9f3/8dehhUPL2iowzuFIwZI0Q603WBy/VWbrhJqJOkPmHagY3QLjRipTsKubhYxWmeua2YmBLMjGOswiOLY4pd4VSbdRC1UsC8zYlSqcNW71tEjXCv38/jCcfA9F5eZ6c0H7fCQn8Vznc855f4r26dVzOA0455wAAPDYIL8HAAD0TwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYSPZ7gFPR29ur/fv3Ky0tTYFAwO9xAGDAcM6ps7NTkUhEgwZ98TnKORmY/fv3KzMz0+8xAGDAam1t1ZgxY75wzTkZmLS0NEmfbTA9Pd3naQBg4Ojo6FBmZmb8+/AXOScDc/THYunp6QQGAHxwIi9P8CI/AMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATJyTn6YMAOeyV3b/+7TuP/XikEeT2OIMBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgImTDszWrVt10003KRKJKBAI6IUXXki43Tmn0tJSRSIRpaSkqKCgQE1NTQlruru7tXDhQo0cOVLDhg3TzTffrA8++OC0NgIAOLucdGA++eQTXX755aqqqjru7StXrlRFRYWqqqpUX1+vcDisadOmqbOzM76mqKhImzZt0oYNG7Rt2zYdPHhQN954o44cOXLqOwEAnFUCzjl3yncOBLRp0ybdcsstkj47e4lEIioqKtLSpUslfXa2EgqF9MQTT2jOnDmKxWL66le/qt/+9re6/fbbJUn79+9XZmamXnzxRV1//fVf+rwdHR3KyMhQLBZTenr6qY4PAL44lz9N+WS+/3r6Gkxzc7Oi0agKCwvjx4LBoPLz81VXVydJamho0KeffpqwJhKJKCcnJ77mWN3d3ero6Ei4AADObp7+PphoNCpJCoUS6xoKhdTS0hJfM2TIEJ1//vl91hy9/7HKy8u1bNkyL0cFfHW6/weLc1tj68e+Pv+ZOgMyeRdZIBBIuO6c63PsWF+0pri4WLFYLH5pbW31bFYAgA1PAxMOhyWpz5lIW1tb/KwmHA6rp6dH7e3tn7vmWMFgUOnp6QkXAMDZzdPAZGVlKRwOq6amJn6sp6dHtbW1ysvLkyTl5uZq8ODBCWsOHDigd999N74GAHDuO+nXYA4ePKj33nsvfr25uVmNjY0aPny4xo4dq6KiIpWVlSk7O1vZ2dkqKytTamqqZs6cKUnKyMjQ/fffrx/+8IcaMWKEhg8froceekiXXnqppk6d6t3OAAC+OunAvPXWW7r22mvj1xcvXixJmj17tp599lktWbJEXV1dmjdvntrb2zV58mRt2bJFaWlp8fv84he/UHJysm677TZ1dXXpuuuu07PPPqukpCQPtgQAOBuc1t+D8Qt/DwbnOt5FNrCd7rvIrsg877TufzrvIvPt78EAAHAUgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMeB6Yw4cP69FHH1VWVpZSUlI0fvx4LV++XL29vfE1zjmVlpYqEokoJSVFBQUFampq8noUAICPPA/ME088oWeeeUZVVVX6xz/+oZUrV+pnP/uZnnrqqfialStXqqKiQlVVVaqvr1c4HNa0adPU2dnp9TgAAJ94Hpi//vWv+s53vqPp06frwgsv1He/+10VFhbqrbfekvTZ2UtlZaVKSko0Y8YM5eTkaN26dTp06JCqq6u9HgcA4BPPAzNlyhS9+uqr2rt3ryTp7bff1rZt23TDDTdIkpqbmxWNRlVYWBi/TzAYVH5+vurq6o77mN3d3ero6Ei4AADObsleP+DSpUsVi8U0YcIEJSUl6ciRI1qxYoXuvPNOSVI0GpUkhUKhhPuFQiG1tLQc9zHLy8u1bNkyr0cFABjy/Azmueee0/r161VdXa0dO3Zo3bp1evLJJ7Vu3bqEdYFAIOG6c67PsaOKi4sVi8Xil9bWVq/HBgB4zPMzmIcffliPPPKI7rjjDknSpZdeqpaWFpWXl2v27NkKh8OSPjuTGT16dPx+bW1tfc5qjgoGgwoGg16PCgAw5PkZzKFDhzRoUOLDJiUlxd+mnJWVpXA4rJqamvjtPT09qq2tVV5entfjAAB84vkZzE033aQVK1Zo7NixuuSSS7Rz505VVFTovvvuk/TZj8aKiopUVlam7OxsZWdnq6ysTKmpqZo5c6bX4wAAfOJ5YJ566in9+Mc/1rx589TW1qZIJKI5c+boJz/5SXzNkiVL1NXVpXnz5qm9vV2TJ0/Wli1blJaW5vU4AACfBJxzzu8hTlZHR4cyMjIUi8WUnp7u9zjASXtl97/9HgE+amz9+LTuf0Xmead1/6kXH//17hNxMt9/+SwyAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYMAnMhx9+qLvuuksjRoxQamqqrrjiCjU0NMRvd86ptLRUkUhEKSkpKigoUFNTk8UoAACfeB6Y9vZ2XX311Ro8eLD+8pe/aPfu3fr5z3+u8847L75m5cqVqqioUFVVlerr6xUOhzVt2jR1dnZ6PQ4AwCfJXj/gE088oczMTK1duzZ+7MILL4z/s3NOlZWVKikp0YwZMyRJ69atUygUUnV1tebMmeP1SAAAH3h+BrN582ZNmjRJt956q0aNGqWJEydqzZo18dubm5sVjUZVWFgYPxYMBpWfn6+6urrjPmZ3d7c6OjoSLgCAs5vngXn//fe1atUqZWdn6+WXX9bcuXP1wAMP6De/+Y0kKRqNSpJCoVDC/UKhUPy2Y5WXlysjIyN+yczM9HpsAIDHPA9Mb2+vrrzySpWVlWnixImaM2eOvv/972vVqlUJ6wKBQMJ151yfY0cVFxcrFovFL62trV6PDQDwmOeBGT16tC6++OKEYxdddJH27dsnSQqHw5LU52ylra2tz1nNUcFgUOnp6QkXAMDZzfPAXH311dqzZ0/Csb1792rcuHGSpKysLIXDYdXU1MRv7+npUW1trfLy8rweBwDgE8/fRfbggw8qLy9PZWVluu2227R9+3atXr1aq1evlvTZj8aKiopUVlam7OxsZWdnq6ysTKmpqZo5c6bX4wAAfOJ5YK666ipt2rRJxcXFWr58ubKyslRZWalZs2bF1yxZskRdXV2aN2+e2tvbNXnyZG3ZskVpaWlejwMA8EnAOef8HuJkdXR0KCMjQ7FYjNdjcE56Zfe//R4BPmps/fi07n9F5nmndf+pFx//9e4TcTLff/ksMgCACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACAiWS/B/DLky/v8XsEDGAPXf81v0fAOWzqxSG/RzghnMEAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwP298EAgF/Old/ncro4gwEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGDCPDDl5eUKBAIqKiqKH3POqbS0VJFIRCkpKSooKFBTU5P1KACAM8g0MPX19Vq9erUuu+yyhOMrV65URUWFqqqqVF9fr3A4rGnTpqmzs9NyHADAGWQWmIMHD2rWrFlas2aNzj///Phx55wqKytVUlKiGTNmKCcnR+vWrdOhQ4dUXV1tNQ4A4AwzC8z8+fM1ffp0TZ06NeF4c3OzotGoCgsL48eCwaDy8/NVV1d33Mfq7u5WR0dHwgUAcHYz+X0wGzZs0I4dO1RfX9/ntmg0KkkKhRJ/H0IoFFJLS8txH6+8vFzLli3zflAMWH97/z++Pv+TL+/x9fkfuv5rvj4/BgbPz2BaW1u1aNEirV+/XkOHDv3cdYFAIOG6c67PsaOKi4sVi8Xil9bWVk9nBgB4z/MzmIaGBrW1tSk3Nzd+7MiRI9q6dauqqqq0Z89n/+cWjUY1evTo+Jq2trY+ZzVHBYNBBYNBr0cFABjy/Azmuuuu065du9TY2Bi/TJo0SbNmzVJjY6PGjx+vcDismpqa+H16enpUW1urvLw8r8cBAPjE8zOYtLQ05eTkJBwbNmyYRowYET9eVFSksrIyZWdnKzs7W2VlZUpNTdXMmTO9HgcA4BOTF/m/zJIlS9TV1aV58+apvb1dkydP1pYtW5SWlubHOAAAA2ckMG+88UbC9UAgoNLSUpWWlp6JpwcA+IDPIgMAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAnPA1NeXq6rrrpKaWlpGjVqlG655Rbt2bMnYY1zTqWlpYpEIkpJSVFBQYGampq8HgUA4CPPA1NbW6v58+frb3/7m2pqanT48GEVFhbqk08+ia9ZuXKlKioqVFVVpfr6eoXDYU2bNk2dnZ1ejwMA8Emy1w/40ksvJVxfu3atRo0apYaGBl1zzTVyzqmyslIlJSWaMWOGJGndunUKhUKqrq7WnDlzvB4JAOAD89dgYrGYJGn48OGSpObmZkWjURUWFsbXBINB5efnq66u7riP0d3drY6OjoQLAODs5vkZzP/lnNPixYs1ZcoU5eTkSJKi0agkKRQKJawNhUJqaWk57uOUl5dr2bJllqNigPl/40f4+vwPXf81X58fOBNMz2AWLFigd955R7///e/73BYIBBKuO+f6HDuquLhYsVgsfmltbTWZFwDgHbMzmIULF2rz5s3aunWrxowZEz8eDoclfXYmM3r06Pjxtra2Pmc1RwWDQQWDQatRAQAGPD+Dcc5pwYIF2rhxo1577TVlZWUl3J6VlaVwOKyampr4sZ6eHtXW1iovL8/rcQAAPvH8DGb+/Pmqrq7WH//4R6WlpcVfc8nIyFBKSooCgYCKiopUVlam7OxsZWdnq6ysTKmpqZo5c6bX4wAAfOJ5YFatWiVJKigoSDi+du1a3XvvvZKkJUuWqKurS/PmzVN7e7smT56sLVu2KC0tzetxAAA+8TwwzrkvXRMIBFRaWqrS0lKvnx4AcJbgs8gAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMEFgAAAmCAwAwASBAQCYIDAAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATBAYAYILAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGDC18A8/fTTysrK0tChQ5Wbm6s333zTz3EAAB7yLTDPPfecioqKVFJSop07d+qb3/ymvv3tb2vfvn1+jQQA8JBvgamoqND999+v733ve7roootUWVmpzMxMrVq1yq+RAAAe8iUwPT09amhoUGFhYcLxwsJC1dXV9Vnf3d2tjo6OhAsA4OyW7MeTfvTRRzpy5IhCoVDC8VAopGg02md9eXm5li1b5ukMD13/NU8fDwCQyNcX+QOBQMJ151yfY5JUXFysWCwWv7S2tp6pEQEAp8iXM5iRI0cqKSmpz9lKW1tbn7MaSQoGgwoGg2dqPACAB3w5gxkyZIhyc3NVU1OTcLympkZ5eXl+jAQA8JgvZzCStHjxYt19992aNGmSvvGNb2j16tXat2+f5s6d69dIAAAP+RaY22+/Xf/5z3+0fPlyHThwQDk5OXrxxRc1btw4v0YCAHgo4Jxzfg9xsjo6OpSRkaFYLKb09HS/xwGAAeNkvv/yWWQAABMEBgBggsAAAEwQGACACQIDADBBYAAAJggMAMAEgQEAmCAwAAATvn1UzOk4+uED/OIxADizjn7fPZEPgTknA9PZ2SlJyszM9HkSABiYOjs7lZGR8YVrzsnPIuvt7dX+/fuVlpZ23F9Q9mU6OjqUmZmp1tbWAflZZuyf/bN/9n+q+3fOqbOzU5FIRIMGffGrLOfkGcygQYM0ZsyY036c9PT0Afkv2FHsn/2zf/Z/Kr7szOUoXuQHAJggMAAAEwMyMMFgUI899piCwaDfo/iC/bN/9s/+z8T+z8kX+QEAZ78BeQYDALBHYAAAJggMAMAEgQEAmBiQgXn66aeVlZWloUOHKjc3V2+++abfI3muvLxcV111ldLS0jRq1Cjdcsst2rNnT8Ia55xKS0sViUSUkpKigoICNTU1+TSxrfLycgUCARUVFcWP9ff9f/jhh7rrrrs0YsQIpaam6oorrlBDQ0P89v68/8OHD+vRRx9VVlaWUlJSNH78eC1fvly9vb3xNf1t/1u3btVNN92kSCSiQCCgF154IeH2E9lvd3e3Fi5cqJEjR2rYsGG6+eab9cEHH5z6UG6A2bBhgxs8eLBbs2aN2717t1u0aJEbNmyYa2lp8Xs0T11//fVu7dq17t1333WNjY1u+vTpbuzYse7gwYPxNY8//rhLS0tzzz//vNu1a5e7/fbb3ejRo11HR4ePk3tv+/bt7sILL3SXXXaZW7RoUfx4f97/f//7Xzdu3Dh37733ur///e+uubnZvfLKK+69996Lr+nP+//pT3/qRowY4f785z+75uZm94c//MF95StfcZWVlfE1/W3/L774oispKXHPP/+8k+Q2bdqUcPuJ7Hfu3LnuggsucDU1NW7Hjh3u2muvdZdffrk7fPjwKc004ALz9a9/3c2dOzfh2IQJE9wjjzzi00RnRltbm5PkamtrnXPO9fb2unA47B5//PH4mv/9738uIyPDPfPMM36N6bnOzk6XnZ3tampqXH5+fjww/X3/S5cudVOmTPnc2/v7/qdPn+7uu+++hGMzZsxwd911l3Ou/+//2MCcyH4//vhjN3jwYLdhw4b4mg8//NANGjTIvfTSS6c0x4D6EVlPT48aGhpUWFiYcLywsFB1dXU+TXVmxGIxSdLw4cMlSc3NzYpGowlfi2AwqPz8/H71tZg/f76mT5+uqVOnJhzv7/vfvHmzJk2apFtvvVWjRo3SxIkTtWbNmvjt/X3/U6ZM0auvvqq9e/dKkt5++21t27ZNN9xwg6T+v/9jnch+Gxoa9OmnnyasiUQiysnJOeWvyTn5YZen6qOPPtKRI0cUCoUSjodCIUWjUZ+msuec0+LFizVlyhTl5ORIUny/x/tatLS0nPEZLWzYsEE7duxQfX19n9v6+/7ff/99rVq1SosXL9aPfvQjbd++XQ888ICCwaDuueeefr//pUuXKhaLacKECUpKStKRI0e0YsUK3XnnnZL6/5//sU5kv9FoVEOGDNH555/fZ82pfn8cUIE56tiP+HfOndLH/p8rFixYoHfeeUfbtm3rc1t//Vq0trZq0aJF2rJli4YOHfq56/rr/nt7ezVp0iSVlZVJkiZOnKimpiatWrVK99xzT3xdf93/c889p/Xr16u6ulqXXHKJGhsbVVRUpEgkotmzZ8fX9df9f55T2e/pfE0G1I/IRo4cqaSkpD41bmtr61P2/mLhwoXavHmzXn/99YRfcRAOhyWp334tGhoa1NbWptzcXCUnJys5OVm1tbX65S9/qeTk5Pge++v+R48erYsvvjjh2EUXXaR9+/ZJ6v9//g8//LAeeeQR3XHHHbr00kt1991368EHH1R5ebmk/r//Y53IfsPhsHp6etTe3v65a07WgArMkCFDlJubq5qamoTjNTU1ysvL82kqG845LViwQBs3btRrr72mrKyshNuzsrIUDocTvhY9PT2qra3tF1+L6667Trt27VJjY2P8MmnSJM2aNUuNjY0aP358v97/1Vdf3edt6Xv37tW4ceMk9f8//0OHDvX5ZVhJSUnxtyn39/0f60T2m5ubq8GDByesOXDggN59991T/5qc0lsDzmFH36b861//2u3evdsVFRW5YcOGuX/9619+j+apH/zgBy4jI8O98cYb7sCBA/HLoUOH4msef/xxl5GR4TZu3Oh27drl7rzzznP6bZpf5v++i8y5/r3/7du3u+TkZLdixQr3z3/+0/3ud79zqampbv369fE1/Xn/s2fPdhdccEH8bcobN250I0eOdEuWLImv6W/77+zsdDt37nQ7d+50klxFRYXbuXNn/K9gnMh+586d68aMGeNeeeUVt2PHDvetb32LtymfrF/96ldu3LhxbsiQIe7KK6+Mv3W3P5F03MvatWvja3p7e91jjz3mwuGwCwaD7pprrnG7du3yb2hjxwamv+//T3/6k8vJyXHBYNBNmDDBrV69OuH2/rz/jo4Ot2jRIjd27Fg3dOhQN378eFdSUuK6u7vja/rb/l9//fXj/jc/e/Zs59yJ7berq8stWLDADR8+3KWkpLgbb7zR7du375Rn4uP6AQAmBtRrMACAM4fAAABMEBgAgAkCAwAwQWAAACYIDADABIEBAJggMAAAEwQGAGCCwAAATBAYAIAJAgMAMPH/AQ+B2D871dT0AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"joiner.plot(alpha=.3)"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "411ff87c-83a5-4912-9591-4978f0913b1b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id_left</th>\n",
" <th>geometry</th>\n",
" <th>index_right</th>\n",
" <th>id_right</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>POLYGON ((50.000 50.000, 50.000 100.000, 100.0...</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>6</td>\n",
" <td>POLYGON ((30.000 80.000, 30.000 100.000, 50.00...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id_left geometry index_right \\\n",
"0 0 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 1 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 0 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 2 \n",
"1 1 POLYGON ((50.000 50.000, 50.000 100.000, 100.0... 6 \n",
"2 2 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 1 \n",
"6 6 POLYGON ((30.000 80.000, 30.000 100.000, 50.00... 1 \n",
"\n",
" id_right \n",
"0 1 \n",
"1 0 \n",
"1 2 \n",
"1 6 \n",
"2 1 \n",
"6 1 "
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joiner = polys3.sjoin(polys3, predicate=\"touches\")\n",
"joiner = joiner[joiner.id_left != joiner.id_right].sort_values(by = [\"id_left\", \"id_right\"])\n",
"joiner"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "82f20014-8ef4-49da-abcd-5d36ab52c0ae",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: >"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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X5mZmUn/F+449iIW+3ECe3ECe3HCue7F/7qCOo43TgAAzCJSAACzkjZSXq9Xjz/+uLxeb6JHSTj2Ihb7cQJ7cQJ7ccL53It++cYJAEBySNorKQCAfUQKAGAWkQIAmEWkAABmJW2knnnmGWVnZ2vo0KHKy8vTW2+9leiR+lRFRYWuuuoqZWRkaNSoUbrlllu0d+/emDXOOZWVlSkYDCotLU2FhYVqbm5O0MTnT0VFhTwej4qLi6PHkm0vDh48qLvuuksjRoxQenq6rrzySjU2NkbPJ8t+HD16VI899piys7OVlpam8ePHa/ny5erp6YmuGah7sW3bNt10000KBoPyeDx66aWXYs6fzuPu6urSokWLNHLkSA0bNkw333yzPvzww3MbzCWhjRs3usGDB7u1a9e6PXv2uMWLF7thw4a5/fv3J3q0PnP99de7devWuffee881NTW5GTNmuLFjx7rDhw9H16xcudJlZGS4F1980e3evdvdfvvtbvTo0S4SiSRw8r61Y8cOd9FFF7nLL7/cLV68OHo8mfbiP//5jxs3bpy799573d///nfX0tLiXnvtNff+++9H1yTLfvz85z93I0aMcH/6059cS0uL+/3vf+++9rWvuaqqquiagboXL7/8sistLXUvvviik+Q2b94cc/50Hve8efPchRde6Gpra93OnTvdtdde66644gp39OjRs54rKSP1zW9+082bNy/m2IQJE9yjjz6aoInOv7a2NifJ1dXVOeec6+npcYFAwK1cuTK65rPPPnM+n889++yziRqzT3V0dLicnBxXW1vrCgoKopFKtr145JFH3NSpU095Ppn2Y8aMGe6+++6LOTZz5kx31113OeeSZy++HKnTedyffPKJGzx4sNu4cWN0zcGDB92gQYPcK6+8ctazJN0/93V3d6uxsVFFRUUxx4uKilRfX5+gqc6/cDgsSRo+fLgkqaWlRaFQKGZfvF6vCgoKBuy+LFiwQDNmzNC0adNijifbXmzZskWTJ0/WrbfeqlGjRmnixIlau3Zt9Hwy7cfUqVP1+uuva9++fZKkd955R9u3b9cNN9wgKbn24r+dzuNubGzU559/HrMmGAwqNzf3nPamX37A7Ln4+OOPdezYMfn9/pjjfr9foVAoQVOdX845LVmyRFOnTlVubq4kRR/7yfZl//79533GvrZx40bt3LlTDQ0Nvc4l21588MEHWr16tZYsWaKf/OQn2rFjhx544AF5vV7dc889SbUfjzzyiMLhsCZMmKCUlBQdO3ZMK1as0J133ikp+f5uHHc6jzsUCmnIkCG64IILeq05l+fWpIvUcV/+ig/n3Fl/7Ud/s3DhQr377rvavn17r3PJsC+tra1avHixtm7dqqFDh55yXTLshfTFV99MnjxZ5eXlkqSJEyequblZq1ev1j333BNdlwz78cILL2jDhg2qqanRpZdeqqamJhUXFysYDGrOnDnRdcmwFydzNo/7XPcm6f65b+TIkUpJSelV9ra2tl7/L2EgWrRokbZs2aI333wz5utOAoGAJCXFvjQ2NqqtrU15eXlKTU1Vamqq6urq9Otf/1qpqanRx5sMeyFJo0eP1iWXXBJz7OKLL9aBAwckJdffjYcffliPPvqo7rjjDl122WW6++679eCDD6qiokJScu3Ffzudxx0IBNTd3a329vZTrjkbSRepIUOGKC8vT7W1tTHHa2trlZ+fn6Cp+p5zTgsXLtSmTZv0xhtvKDs7O+Z8dna2AoFAzL50d3errq5uwO3Lddddp927d6upqSl6mzx5smbPnq2mpiaNHz8+afZCkq6++upe/znCvn37NG7cOEnJ9XfjyJEjvb6ALyUlJfoW9GTai/92Oo87Ly9PgwcPjllz6NAhvffee+e2N2f9lot+7Phb0H/zm9+4PXv2uOLiYjds2DD3r3/9K9Gj9Zkf/ehHzufzub/85S/u0KFD0duRI0eia1auXOl8Pp/btGmT2717t7vzzjsHxFtrT8d/v7vPueTaix07drjU1FS3YsUK989//tM9//zzLj093W3YsCG6Jln2Y86cOe7CCy+MvgV906ZNbuTIkW7p0qXRNQN1Lzo6OtyuXbvcrl27nCRXWVnpdu3aFf1Pc07ncc+bN8+NGTPGvfbaa27nzp3uO9/5Dm9BP1tPP/20GzdunBsyZIibNGlS9K3YA5Wkk97WrVsXXdPT0+Mef/xxFwgEnNfrdddcc43bvXt34oY+j74cqWTbiz/+8Y8uNzfXeb1eN2HCBLdmzZqY88myH5FIxC1evNiNHTvWDR061I0fP96Vlpa6rq6u6JqBuhdvvvnmSZ8j5syZ45w7vcfd2dnpFi5c6IYPH+7S0tLcjTfe6A4cOHBOc/FVHQAAs5LuNSkAQP9BpAAAZhEpAIBZRAoAYBaRAgCYRaQAAGYRKQCAWUQKAGAWkQIAmEWkAABmESkAgFlECgBg1v8DaLk7v8/1TOoAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"joiner.plot(alpha=.3)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "2eaa3f46-68fd-477a-9f1b-e1c60e78e6f9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id_left</th>\n",
" <th>geometry</th>\n",
" <th>index_right</th>\n",
" <th>id_right</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5</td>\n",
" <td>POLYGON ((60.000 60.000, 60.000 80.000, 80.000...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id_left geometry index_right \\\n",
"0 0 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 2 \n",
"2 2 POLYGON ((0.000 0.000, 0.000 50.000, 50.000 50... 0 \n",
"5 5 POLYGON ((60.000 60.000, 60.000 80.000, 80.000... 1 \n",
"\n",
" id_right \n",
"0 2 \n",
"2 0 \n",
"5 1 "
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joiner = polys3.sjoin(polys3, predicate=\"within\")\n",
"joiner = joiner[joiner.id_left != joiner.id_right].sort_values(by = [\"id_left\", \"id_right\"])\n",
"joiner"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "bdc3f788-f52d-40f0-a53a-0643a93a355b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: >"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"joiner.plot(alpha=.3)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b5b1afc7-861c-4025-a14d-8cb5df2957a6",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment