Created
August 24, 2019 15:18
-
-
Save martinfleis/ae58340afff65ffeb825665b21786b2d to your computer and use it in GitHub Desktop.
Overlay tests for geometry types
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import geopandas as gpd\n", | |
"from shapely.geometry import *" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"'0.6.0rc1+14.g7ad8490.dirty'" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.__version__" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Polygon + Polygon" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"polys1 = gpd.GeoSeries([Polygon([(1, 1), (3, 1), (3, 3), (1, 3)]),\n", | |
" Polygon([(3, 3), (5, 3), (5, 5), (3, 5)])])\n", | |
"df1 = gpd.GeoDataFrame({'col1': [1, 2], 'geometry': polys1})\n", | |
"\n", | |
"polys2 = gpd.GeoSeries([Polygon([(1, 1), (3, 1), (3, 3), (1, 3)]),\n", | |
" Polygon([(-1, 1), (1, 1), (1, 3), (-1, 3)]),\n", | |
" Polygon([(3, 3), (5, 3), (5, 5), (3, 5)])])\n", | |
"df2 = gpd.GeoDataFrame({'geometry': polys2, 'col2': [1, 2, 3]})" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x11666e7b8>" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"ax = df1.plot(alpha=0.5)\n", | |
"df2.plot(ax=ax, alpha=.5, color=\"red\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"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>col1</th>\n", | |
" <th>col2</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>3</td>\n", | |
" <td>POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col2 geometry\n", | |
"0 1 1 POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))\n", | |
"1 2 3 POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df2)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"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>col2</th>\n", | |
" <th>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>3</td>\n", | |
" <td>2</td>\n", | |
" <td>POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col2 col1 geometry\n", | |
"0 1 1 POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))\n", | |
"1 3 2 POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df2, df1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"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>col1</th>\n", | |
" <th>col2</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>LINESTRING (1 1, 1 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>2</td>\n", | |
" <td>1</td>\n", | |
" <td>POINT (3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>1</td>\n", | |
" <td>3</td>\n", | |
" <td>POINT (3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>4</td>\n", | |
" <td>2</td>\n", | |
" <td>3</td>\n", | |
" <td>POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col2 geometry\n", | |
"0 1 2 LINESTRING (1 1, 1 3)\n", | |
"1 1 1 POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))\n", | |
"2 2 1 POINT (3 3)\n", | |
"3 1 3 POINT (3 3)\n", | |
"4 2 3 POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df2, strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"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>col2</th>\n", | |
" <th>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>1</td>\n", | |
" <td>LINESTRING (1 3, 1 1)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>3</td>\n", | |
" <td>1</td>\n", | |
" <td>POINT (3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>POINT (3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>4</td>\n", | |
" <td>3</td>\n", | |
" <td>2</td>\n", | |
" <td>POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col2 col1 geometry\n", | |
"0 1 1 POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))\n", | |
"1 2 1 LINESTRING (1 3, 1 1)\n", | |
"2 3 1 POINT (3 3)\n", | |
"3 1 2 POINT (3 3)\n", | |
"4 3 2 POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df2, df1, strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"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>col1</th>\n", | |
" <th>col2</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>3</td>\n", | |
" <td>POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>NaN</td>\n", | |
" <td>2</td>\n", | |
" <td>POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col2 geometry\n", | |
"0 1.0 1 POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))\n", | |
"1 2.0 3 POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))\n", | |
"2 NaN 2 POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))" | |
] | |
}, | |
"execution_count": 18, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df2, how='union')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"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>col1</th>\n", | |
" <th>col2</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>2</td>\n", | |
" <td>LINESTRING (1 1, 1 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>1.0</td>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>2.0</td>\n", | |
" <td>1</td>\n", | |
" <td>POINT (3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>1.0</td>\n", | |
" <td>3</td>\n", | |
" <td>POINT (3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>4</td>\n", | |
" <td>2.0</td>\n", | |
" <td>3</td>\n", | |
" <td>POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>5</td>\n", | |
" <td>NaN</td>\n", | |
" <td>2</td>\n", | |
" <td>POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col2 geometry\n", | |
"0 1.0 2 LINESTRING (1 1, 1 3)\n", | |
"1 1.0 1 POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))\n", | |
"2 2.0 1 POINT (3 3)\n", | |
"3 1.0 3 POINT (3 3)\n", | |
"4 2.0 3 POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))\n", | |
"5 NaN 2 POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))" | |
] | |
}, | |
"execution_count": 19, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df2, how='union', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 24, | |
"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>col1</th>\n", | |
" <th>col2</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>3</td>\n", | |
" <td>POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col2 geometry\n", | |
"0 1.0 1 POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))\n", | |
"1 2.0 3 POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 24, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df2, how='identity')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 25, | |
"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>col1</th>\n", | |
" <th>col2</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>2</td>\n", | |
" <td>LINESTRING (1 1, 1 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>1.0</td>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>2.0</td>\n", | |
" <td>1</td>\n", | |
" <td>POINT (3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>1.0</td>\n", | |
" <td>3</td>\n", | |
" <td>POINT (3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>4</td>\n", | |
" <td>2.0</td>\n", | |
" <td>3</td>\n", | |
" <td>POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col2 geometry\n", | |
"0 1.0 2 LINESTRING (1 1, 1 3)\n", | |
"1 1.0 1 POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))\n", | |
"2 2.0 1 POINT (3 3)\n", | |
"3 1.0 3 POINT (3 3)\n", | |
"4 2.0 3 POLYGON ((3 3, 3 5, 5 5, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 25, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df2, how='identity', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 27, | |
"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>col1</th>\n", | |
" <th>col2</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>2</td>\n", | |
" <td>POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col2 geometry\n", | |
"0 NaN 2 POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))" | |
] | |
}, | |
"execution_count": 27, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df2, how='symmetric_difference')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 28, | |
"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>col1</th>\n", | |
" <th>col2</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>2</td>\n", | |
" <td>POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col2 geometry\n", | |
"0 NaN 2 POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))" | |
] | |
}, | |
"execution_count": 28, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df2, how='symmetric_difference', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 33, | |
"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>col2</th>\n", | |
" <th>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>2</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col2 col1 geometry\n", | |
"0 2 NaN POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))" | |
] | |
}, | |
"execution_count": 33, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df2, df1, how='symmetric_difference')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 29, | |
"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>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
"Empty GeoDataFrame\n", | |
"Columns: [col1, geometry]\n", | |
"Index: []" | |
] | |
}, | |
"execution_count": 29, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df2, how='difference')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 30, | |
"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>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
"Empty GeoDataFrame\n", | |
"Columns: [col1, geometry]\n", | |
"Index: []" | |
] | |
}, | |
"execution_count": 30, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df2, how='difference', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 31, | |
"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>geometry</th>\n", | |
" <th>col2</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))</td>\n", | |
" <td>2</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" geometry col2\n", | |
"1 POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1)) 2" | |
] | |
}, | |
"execution_count": 31, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df2, df1, how='difference')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 32, | |
"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>geometry</th>\n", | |
" <th>col2</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1))</td>\n", | |
" <td>2</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" geometry col2\n", | |
"1 POLYGON ((-1 1, -1 3, 1 3, 1 1, -1 1)) 2" | |
] | |
}, | |
"execution_count": 32, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df2, df1, how='difference', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Polygon + LineString" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 34, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"lines1 = gpd.GeoSeries([LineString([(2, 0), (2, 4), (6, 4)]),\n", | |
" LineString([(0, 3), (6, 3)])])\n", | |
"df3 = gpd.GeoDataFrame({'col3': [1, 2], 'geometry': lines1})" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 53, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x1166689b0>" | |
] | |
}, | |
"execution_count": 53, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAASAAAAD4CAYAAABMmTt2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAK5klEQVR4nO3dS4hdhR3H8d/PJEUbFRcZjDVOp6VVSIWqXCwlINYaH1Vs6UpBIaUwG1t8FKR2U1x0a91I6WCsFl+IGihi1YCKDdTHjI/mZUVEMT5IRKymi4r662KuEiePe5K5Z/5n5n4/MGRmcjn8kMw3555zvXESAUCFo6oHABhdBAhAGQIEoAwBAlCGAAEos7yNg65atSoTExNtHBrAIjQzM/N+krG5328lQBMTE5qenm7j0AAWIdtvHuj7PAUDUIYAAShDgACUIUAAyhAgAGUa3QWz/YakjyV9JunTJL02RwEYDYdzG/5HSd5vbQmAkcNTMABlmp4BRdLjtiPpz0mm5j7A9qSkSUkaHx8f3kIsWn/c/Gr1hEXruvWnVk9YEE3PgNYlOUvSxZKutn3O3AckmUrSS9IbG9vvFdcAsJ9GAUryTv/X3ZI2STq7zVEARsPAANleafu4Lz6XdIGkbW0PA7D0NbkGdKKkTba/ePw9SR5tdRWAkTAwQElel/T9BdgCYMRwGx5AGQIEoAwBAlCGAAEoQ4AAlCFAAMoQIABlCBCAMgQIQBkCBKAMAQJQhgABKEOAAJQhQADKECAAZQgQgDIECEAZAgSgDAECUIYAAShDgACUIUAAyhAgAGUIEIAyBAhAGQIEoAwBAlCGAAEoQ4AAlCFAAMoQIABlGgfI9jLbL9p+uM1BAEbH4ZwBXSNpZ1tDAIye5U0eZHuNpEsk/UHS9a0uQnMzM9LWrdUrDmrt9veqJyxeb6+uXnBoGzYM5TBNz4BukXSDpM8P9gDbk7anbU/v2bNnKOMwwNat0nv8kGPxGngGZPtSSbuTzNg+92CPSzIlaUqSer1ehrYQh7Z69dD+Nhq2HZtfrZ6waF24/tTqCQuiyRnQOkmX2X5D0n2SzrN9V6urAIyEgQFKcmOSNUkmJF0u6YkkV7a+DMCSx+uAAJRpdBfsC0mekvRUK0sAjBzOgACUIUAAyhAgAGUIEIAyBAhAGQIEoAwBAlCGAAEoQ4AAlCFAAMoQIABlCBCAMgQIQBkCBKAMAQJQhgABKEOAAJQhQADKECAAZQgQgDIECEAZAgSgDAECUIYAAShDgACUIUAAyhAgAGUIEIAyBAhAGQIEoMzAANk+2vZztl+2vd32TQsxDMDSt7zBY/4n6bwke22vkLTF9t+TPNPyNgBL3MAAJYmkvf0vV/Q/MrQFd9wxtEONnC1bqhcc0trt71VPWLzeXl294NA2bBjKYZqcAcn2Mkkzkr4j6dYkzx7gMZOSJiVpfHx8KOO64LEO/xB94+3/SJLe6ejGC7/X8R8ilGsUoCSfSTrD9gmSNtk+Pcm2OY+ZkjQlSb1er/kZ0pBK2pYdm1+tnjDQjgt+Xj3hgC5cf2r1BHTcYd0FS/KhpKckXdTKGgAjpcldsLH+mY9sHyPpfEmvtD0MwNLX5CnYSZLu7F8HOkrS/UkebncWgFHQ5C7YvySduQBbAIwYXgkNoAwBAlCGAAEoQ4AAlCFAAMoQIABlCBCAMgQIQBkCBKAMAQJQhgABKEOAAJQhQADKECAAZQgQgDIECEAZAgSgDAECUIYAAShDgACUIUAAyhAgAGUIEIAyBAhAGQIEoAwBAlCGAAEoQ4AAlCFAAMoQIABlCBCAMgMDZPsU20/a3ml7u+1rFmIYgKVveYPHfCrpN0lesH2cpBnbm5PsaHkbgCVu4BlQkneTvND//GNJOyWd3PYwAEvfYV0Dsj0h6UxJzx7g9yZtT9ue3rNnz3DWAVjSGgfI9rGSHpR0bZKP5v5+kqkkvSS9sbGxYW4EsEQ1CpDtFZqNz91JHmp3EoBR0eQumCVtlLQzyc3tTwIwKpqcAa2TdJWk82y/1P/4Scu7AIyAgbfhk2yR5AXYAmDE8EpoAGUIEIAyBAhAGQIEoAwBAlCGAAEoQ4AAlCFAAMoQIABlCBCAMgQIQBkCBKAMAQJQhgABKEOAAJQhQADKECAAZQgQgDIECEAZAgSgDAECUIYAAShDgACUIUAAyhAgAGUIEIAyBAhAGQIEoAwBAlCGAAEoMzBAtm+3vdv2toUYBGB0NDkDukPSRS3vADCCBgYoydOSPliALQBGzPJhHcj2pKRJSRofHx/WYctdt/7U6gkH9/ZqSdKFXd4IHMLQLkInmUrSS9IbGxsb1mEBLGHcBQNQhgABKNPkNvy9kv4p6TTbu2z/sv1ZAEbBwIvQSa5YiCEARg9PwQCUIUAAyhAgAGUIEIAyBAhAGQIEoAwBAlCGAAEoQ4AAlCFAAMoQIABlCBCAMgQIQBkCBKAMAQJQhgABKEOAAJQhQADKECAAZQgQgDIECEAZAgSgDAECUIYAAShDgACUIUAAyhAgAGUIEIAyBAhAGQIEoAwBAlCmUYBsX2T737Zfs/3btkcBGA0DA2R7maRbJV0saa2kK2yvbXsYgKWvyRnQ2ZJeS/J6kk8k3Sfpp+3OAjAKljd4zMmS3trn612SfjD3QbYnJU1K0vj4+FDGYYANG6oXAPPS5AzIB/he9vtGMpWkl6Q3NjY2/2UAlrwmAdol6ZR9vl4j6Z125gAYJU0C9Lyk79r+lu2vSbpc0t/anQVgFAy8BpTkU9u/kvSYpGWSbk+yvfVlAJa8JhehleQRSY+0vAXAiOGV0ADKECAAZQgQgDIECEAZJ/u9pnD+B7X3SHqz4cNXSXp/6COGh31HrsvbpG7v6/I26fD3fTPJfq9QbiVAh8P2dJJe6YhDYN+R6/I2qdv7urxNGt4+noIBKEOAAJTpQoCmqgcMwL4j1+VtUrf3dXmbNKR95deAAIyuLpwBARhRBAhAmdIAdfnN7m3fbnu37W3VW+ayfYrtJ23vtL3d9jXVm/Zl+2jbz9l+ub/vpupNc9leZvtF2w9Xb5nL9hu2t9p+yfZ09Z592T7B9gO2X+n/+fvhvI5XdQ2o/2b3r0par9k3PXte0hVJdpQMmsP2OZL2SvprktOr9+zL9kmSTkrygu3jJM1I+lmH/ttZ0soke22vkLRF0jVJnime9iXb10vqSTo+yaXVe/Zl+w1JvSSdeyGi7Tsl/SPJbf33B/t6kg+P9HiVZ0CdfrP7JE9L+qB6x4EkeTfJC/3PP5a0U7Pv3d0JmbW3/+WK/kdn7nbYXiPpEkm3VW9ZTGwfL+kcSRslKckn84mPVBugA73ZfWd+iBYL2xOSzpT0bO2Sr+o/xXlJ0m5Jm5N0ad8tkm6Q9Hn1kIOIpMdtz/T/sYeu+LakPZL+0n/6epvtlfM5YGWAGr3ZPQ7O9rGSHpR0bZKPqvfsK8lnSc7Q7HuIn227E09jbV8qaXeSmeoth7AuyVma/bf4ru5fDuiC5ZLOkvSnJGdK+q+keV27rQwQb3Y/D/1rKw9KujvJQ9V7DqZ/iv6UpIuKp3xhnaTL+tdZ7pN0nu27aid9VZJ3+r/ulrRJs5crumCXpF37nM0+oNkgHbHKAPFm90eof5F3o6SdSW6u3jOX7THbJ/Q/P0bS+ZJeqV01K8mNSdYkmdDsn7knklxZPOtLtlf2byyo//TmAkmduBOb5D1Jb9k+rf+tH0ua142PRu8J3Yauv9m97XslnStple1dkn6fZGPtqi+tk3SVpK396yyS9Lv+e3d3wUmS7uzf6TxK0v1JOne7u6NOlLRp9u8YLZd0T5JHayd9xa8l3d0/aXhd0i/mczD+VwwAZXglNIAyBAhAGQIEoAwBAlCGAAEoQ4AAlCFAAMr8H0B9kgdqLThFAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"ax = df1.plot(alpha=0.5)\n", | |
"df3.plot(ax=ax, alpha=.5, edgecolor=\"red\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 54, | |
"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>col1</th>\n", | |
" <th>col3</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
"Empty GeoDataFrame\n", | |
"Columns: [col1, col3, geometry]\n", | |
"Index: []" | |
] | |
}, | |
"execution_count": 54, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df3)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 55, | |
"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>col1</th>\n", | |
" <th>col3</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>LINESTRING (1 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>2</td>\n", | |
" <td>LINESTRING (5 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>LINESTRING (2 1, 2 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>2</td>\n", | |
" <td>1</td>\n", | |
" <td>LINESTRING (3 4, 5 4)</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col3 geometry\n", | |
"0 1 2 LINESTRING (1 3, 3 3)\n", | |
"1 2 2 LINESTRING (5 3, 3 3)\n", | |
"2 1 1 LINESTRING (2 1, 2 3)\n", | |
"3 2 1 LINESTRING (3 4, 5 4)" | |
] | |
}, | |
"execution_count": 55, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df3, strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 57, | |
"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>col3</th>\n", | |
" <th>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>LINESTRING (2 1, 2 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>1</td>\n", | |
" <td>LINESTRING (1 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>LINESTRING (3 4, 5 4)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>2</td>\n", | |
" <td>2</td>\n", | |
" <td>LINESTRING (3 3, 5 3)</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col3 col1 geometry\n", | |
"0 1 1 LINESTRING (2 1, 2 3)\n", | |
"1 2 1 LINESTRING (1 3, 3 3)\n", | |
"2 1 2 LINESTRING (3 4, 5 4)\n", | |
"3 2 2 LINESTRING (3 3, 5 3)" | |
] | |
}, | |
"execution_count": 57, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df3, df1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 86, | |
"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>col3</th>\n", | |
" <th>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>1</td>\n", | |
" <td>LINESTRING (2 1, 2 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>1</td>\n", | |
" <td>LINESTRING (1 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>LINESTRING (3 4, 5 4)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>2</td>\n", | |
" <td>2</td>\n", | |
" <td>LINESTRING (3 3, 5 3)</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col3 col1 geometry\n", | |
"0 1 1 LINESTRING (2 1, 2 3)\n", | |
"1 2 1 LINESTRING (1 3, 3 3)\n", | |
"2 1 2 LINESTRING (3 4, 5 4)\n", | |
"3 2 2 LINESTRING (3 3, 5 3)" | |
] | |
}, | |
"execution_count": 86, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df3, df1, strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 59, | |
"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>col1</th>\n", | |
" <th>col3</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col3 geometry\n", | |
"0 1.0 NaN POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))\n", | |
"1 2.0 NaN POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 59, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df3, how='union')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 60, | |
"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>col3</th>\n", | |
" <th>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>LINESTRING (2 1, 2 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>LINESTRING (1 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>1.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>LINESTRING (3 4, 5 4)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>2.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>LINESTRING (3 3, 5 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>4</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>5</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col3 col1 geometry\n", | |
"0 1.0 1.0 LINESTRING (2 1, 2 3)\n", | |
"1 2.0 1.0 LINESTRING (1 3, 3 3)\n", | |
"2 1.0 2.0 LINESTRING (3 4, 5 4)\n", | |
"3 2.0 2.0 LINESTRING (3 3, 5 3)\n", | |
"4 1.0 NaN MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...\n", | |
"5 2.0 NaN MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))" | |
] | |
}, | |
"execution_count": 60, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df3, df1, how='union')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 62, | |
"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>col1</th>\n", | |
" <th>col3</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>LINESTRING (1 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>LINESTRING (5 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>1.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>LINESTRING (2 1, 2 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>2.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>LINESTRING (3 4, 5 4)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>4</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>5</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>6</td>\n", | |
" <td>NaN</td>\n", | |
" <td>1.0</td>\n", | |
" <td>MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>7</td>\n", | |
" <td>NaN</td>\n", | |
" <td>2.0</td>\n", | |
" <td>MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col3 geometry\n", | |
"0 1.0 2.0 LINESTRING (1 3, 3 3)\n", | |
"1 2.0 2.0 LINESTRING (5 3, 3 3)\n", | |
"2 1.0 1.0 LINESTRING (2 1, 2 3)\n", | |
"3 2.0 1.0 LINESTRING (3 4, 5 4)\n", | |
"4 1.0 NaN POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))\n", | |
"5 2.0 NaN POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))\n", | |
"6 NaN 1.0 MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...\n", | |
"7 NaN 2.0 MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))" | |
] | |
}, | |
"execution_count": 62, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df3, how='union', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Note that LineString does not cut Polygon, while Polygon does cut LineString." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 64, | |
"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>col1</th>\n", | |
" <th>col3</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col3 geometry\n", | |
"0 1.0 NaN POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))\n", | |
"1 2.0 NaN POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 64, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df3, how='identity')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 65, | |
"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>col3</th>\n", | |
" <th>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>LINESTRING (2 1, 2 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>LINESTRING (1 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>1.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>LINESTRING (3 4, 5 4)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>2.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>LINESTRING (3 3, 5 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>4</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>5</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col3 col1 geometry\n", | |
"0 1.0 1.0 LINESTRING (2 1, 2 3)\n", | |
"1 2.0 1.0 LINESTRING (1 3, 3 3)\n", | |
"2 1.0 2.0 LINESTRING (3 4, 5 4)\n", | |
"3 2.0 2.0 LINESTRING (3 3, 5 3)\n", | |
"4 1.0 NaN MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...\n", | |
"5 2.0 NaN MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))" | |
] | |
}, | |
"execution_count": 65, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df3, df1, how='identity')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 66, | |
"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>col1</th>\n", | |
" <th>col3</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>LINESTRING (1 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>LINESTRING (5 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>1.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>LINESTRING (2 1, 2 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>2.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>LINESTRING (3 4, 5 4)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>4</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>5</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col3 geometry\n", | |
"0 1.0 2.0 LINESTRING (1 3, 3 3)\n", | |
"1 2.0 2.0 LINESTRING (5 3, 3 3)\n", | |
"2 1.0 1.0 LINESTRING (2 1, 2 3)\n", | |
"3 2.0 1.0 LINESTRING (3 4, 5 4)\n", | |
"4 1.0 NaN POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))\n", | |
"5 2.0 NaN POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 66, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df3, how='identity', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 68, | |
"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>col3</th>\n", | |
" <th>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>LINESTRING (2 1, 2 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>LINESTRING (1 3, 3 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>1.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>LINESTRING (3 4, 5 4)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>2.0</td>\n", | |
" <td>2.0</td>\n", | |
" <td>LINESTRING (3 3, 5 3)</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>4</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>5</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col3 col1 geometry\n", | |
"0 1.0 1.0 LINESTRING (2 1, 2 3)\n", | |
"1 2.0 1.0 LINESTRING (1 3, 3 3)\n", | |
"2 1.0 2.0 LINESTRING (3 4, 5 4)\n", | |
"3 2.0 2.0 LINESTRING (3 3, 5 3)\n", | |
"4 1.0 NaN MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...\n", | |
"5 2.0 NaN MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))" | |
] | |
}, | |
"execution_count": 68, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df3, df1, how='identity', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 69, | |
"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>col1</th>\n", | |
" <th>col3</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col3 geometry\n", | |
"0 1.0 NaN POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))\n", | |
"1 2.0 NaN POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 69, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df3, how='symmetric_difference')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 70, | |
"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>col3</th>\n", | |
" <th>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col3 col1 geometry\n", | |
"0 1.0 NaN MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...\n", | |
"1 2.0 NaN MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))" | |
] | |
}, | |
"execution_count": 70, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df3, df1, how='symmetric_difference')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 71, | |
"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>col1</th>\n", | |
" <th>col3</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>NaN</td>\n", | |
" <td>1.0</td>\n", | |
" <td>MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>NaN</td>\n", | |
" <td>2.0</td>\n", | |
" <td>MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 col3 geometry\n", | |
"0 1.0 NaN POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))\n", | |
"1 2.0 NaN POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))\n", | |
"2 NaN 1.0 MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...\n", | |
"3 NaN 2.0 MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))" | |
] | |
}, | |
"execution_count": 71, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df3, how='symmetric_difference', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 72, | |
"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>col3</th>\n", | |
" <th>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>2</td>\n", | |
" <td>NaN</td>\n", | |
" <td>1.0</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>3</td>\n", | |
" <td>NaN</td>\n", | |
" <td>2.0</td>\n", | |
" <td>POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col3 col1 geometry\n", | |
"0 1.0 NaN MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...\n", | |
"1 2.0 NaN MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))\n", | |
"2 NaN 1.0 POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))\n", | |
"3 NaN 2.0 POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 72, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df3, df1, how='symmetric_difference', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 73, | |
"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>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 geometry\n", | |
"0 1 POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))\n", | |
"1 2 POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 73, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df3, how='difference')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 74, | |
"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>col3</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col3 geometry\n", | |
"0 1 MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...\n", | |
"1 2 MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))" | |
] | |
}, | |
"execution_count": 74, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df3, df1, how='difference')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 75, | |
"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>col1</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col1 geometry\n", | |
"0 1 POLYGON ((1 1, 1 3, 2 3, 3 3, 3 1, 2 1, 1 1))\n", | |
"1 2 POLYGON ((3 3, 3 4, 3 5, 5 5, 5 4, 5 3, 3 3))" | |
] | |
}, | |
"execution_count": 75, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df1, df3, how='difference', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 76, | |
"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>col3</th>\n", | |
" <th>geometry</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0</td>\n", | |
" <td>1</td>\n", | |
" <td>MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>1</td>\n", | |
" <td>2</td>\n", | |
" <td>MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" col3 geometry\n", | |
"0 1 MULTILINESTRING ((2 0, 2 1), (2 3, 2 4, 3 4), ...\n", | |
"1 2 MULTILINESTRING ((0 3, 1 3), (5 3, 6 3))" | |
] | |
}, | |
"execution_count": 76, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"gpd.overlay(df3, df1, how='difference', strict=False)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"LineString generally does not affect Polygon geometry in a substantial way. It only adds vertices where LineString crosses Polygon boundary. Does not cut in half. It matches a behaviour of shapely's `difference`. Polygon affect Linestring geometry always.\n", | |
"\n", | |
"> Shapely can not represent the difference between an object and a lower dimensional object (such as the difference between a polygon and a line or point) as a single object, and in these cases the difference method returns a copy of the object named self. (https://shapely.readthedocs.io/en/latest/manual.html#object.difference)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 77, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"poly = Polygon([(1, 1), (3, 1), (3, 3), (1, 3)])\n", | |
"line = LineString([(0, 2), (6, 2)])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 88, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"'POLYGON ((3 2, 3 1, 1 1, 1 2, 1 3, 3 3, 3 2))'" | |
] | |
}, | |
"execution_count": 88, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"poly.difference(line).wkt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "geo_dev", | |
"language": "python", | |
"name": "geo_dev" | |
}, | |
"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.7.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment