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": "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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", | |
| "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