3.3 Prostorové operace v GeoPandas¶
Podívejme se na chráněné krajinné oblasti v Česku.
Budeme pracovat s otevřenými daty Data250 z ČÚZK.
import geopandas as gpd
chko = gpd.read_file("ParkA.shp")
Podívejme se na informace o datech a na data samotná.
chko.crs
<Projected CRS: EPSG:5514> Name: S-JTSK / Krovak East North Axis Info [cartesian]: - X[east]: Easting (metre) - Y[north]: Northing (metre) Area of Use: - name: Czechia; Slovakia. - bounds: (12.09, 47.73, 22.56, 51.06) Coordinate Operation: - name: Krovak East North (Greenwich) - method: Krovak (North Orientated) Datum: System of the Unified Trigonometrical Cadastral Network - Ellipsoid: Bessel 1841 - Prime Meridian: Greenwich
chko.head(10)
| FCSUBTYPE | F_CODE | ICC | NAMN1 | NA3 | NAMN2 | NLN1 | NLN2 | SHAPE_Leng | SHAPE_Area | SND | ANND | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2 | FA081 | CZ | Broumovsko | CAT V | UNK | cze | UNK | 111219.544184 | 4.322066e+08 | 5220000 | 7120200 | POLYGON ((-615978.682 -994555.085, -615911.986... |
| 1 | 2 | FA081 | CZ | Krkonošský národní park | CAT V | UNK | cze | UNK | 232089.726966 | 3.635709e+08 | 5220000 | 7120100 | POLYGON ((-658647.89 -974380.8, -658489.293 -9... |
| 2 | 2 | FA081 | CZ | Šumava | CAT V | UNK | cze | UNK | 270558.358423 | 7.798763e+08 | 5220000 | 7120200 | POLYGON ((-830609 -1131423, -830377.17 -113154... |
| 3 | 2 | FA081 | CZ | Labské pískovce | CAT V | UNK | cze | UNK | 118644.238375 | 2.117074e+08 | 5220000 | 7120200 | POLYGON ((-743441.203 -964003.613, -743685.943... |
| 4 | 1 | FA080 | CZ | Podyjí | CAT II | Nationalpark Thayatal | cze | ger | 91087.186742 | 6.290955e+07 | 5220000 | 7120100 | POLYGON ((-656724.478 -1186419.132, -656719.97... |
| 5 | 1 | FA080 | CZ | České Švýcarsko | CAT II | UNK | cze | UNK | 86984.825493 | 7.929017e+07 | 5220000 | 7120100 | POLYGON ((-731155.429 -948303.529, -731078.389... |
| 6 | 2 | FA081 | CZ | Litovelské Pomoraví | CAT V | UNK | cze | UNK | 92265.320185 | 9.341963e+07 | 5220000 | 7120200 | POLYGON ((-565060.82 -1098311.049, -565127.185... |
| 7 | 2 | FA081 | CZ | Lužické hory | CAT V | UNK | cze | UNK | 101099.973960 | 2.701039e+08 | 5220000 | 7120200 | POLYGON ((-725187.7 -952220.884, -725063.805 -... |
| 8 | 2 | FA081 | CZ | Jeseníky | CAT V | UNK | cze | UNK | 158223.761975 | 7.413212e+08 | 5220000 | 7120200 | POLYGON ((-533661.262 -1043992.184, -533522.93... |
| 9 | 2 | FA081 | CZ | Pálava | CAT V | UNK | cze | UNK | 46540.392623 | 8.563956e+07 | 5220000 | 7120200 | POLYGON ((-604169.176 -1206220.629, -603841.60... |
chko.describe()
| FCSUBTYPE | SHAPE_Leng | SHAPE_Area | SND | ANND | |
|---|---|---|---|---|---|
| count | 38.000000 | 38.000000 | 3.800000e+01 | 38.0 | 3.800000e+01 |
| mean | 1.921053 | 114782.125816 | 3.308689e+08 | 5220000.0 | 7.120189e+06 |
| std | 0.273276 | 66910.722711 | 3.107750e+08 | 0.0 | 3.110117e+01 |
| min | 1.000000 | 2918.156777 | 2.924004e+05 | 5220000.0 | 7.120100e+06 |
| 25% | 2.000000 | 81325.480132 | 8.758458e+07 | 5220000.0 | 7.120200e+06 |
| 50% | 2.000000 | 104258.214662 | 2.267546e+08 | 5220000.0 | 7.120200e+06 |
| 75% | 2.000000 | 138095.101720 | 5.657614e+08 | 5220000.0 | 7.120200e+06 |
| max | 2.000000 | 270558.358423 | 1.203346e+09 | 5220000.0 | 7.120200e+06 |
chko.explore()
Spočítejme rozlohu jednotlivých oblastí¶
Vytvořme sloupec pro rozlohu v S-JTSK
chko['area_5514'] = chko.area / 1e4
chko.head()
| FCSUBTYPE | F_CODE | ICC | NAMN1 | NA3 | NAMN2 | NLN1 | NLN2 | SHAPE_Leng | SHAPE_Area | SND | ANND | geometry | area_5514 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2 | FA081 | CZ | Broumovsko | CAT V | UNK | cze | UNK | 111219.544184 | 4.322066e+08 | 5220000 | 7120200 | POLYGON ((-615978.682 -994555.085, -615911.986... | 43220.659681 |
| 1 | 2 | FA081 | CZ | Krkonošský národní park | CAT V | UNK | cze | UNK | 232089.726966 | 3.635709e+08 | 5220000 | 7120100 | POLYGON ((-658647.89 -974380.8, -658489.293 -9... | 36357.093598 |
| 2 | 2 | FA081 | CZ | Šumava | CAT V | UNK | cze | UNK | 270558.358423 | 7.798763e+08 | 5220000 | 7120200 | POLYGON ((-830609 -1131423, -830377.17 -113154... | 77987.633810 |
| 3 | 2 | FA081 | CZ | Labské pískovce | CAT V | UNK | cze | UNK | 118644.238375 | 2.117074e+08 | 5220000 | 7120200 | POLYGON ((-743441.203 -964003.613, -743685.943... | 21170.739642 |
| 4 | 1 | FA080 | CZ | Podyjí | CAT II | Nationalpark Thayatal | cze | ger | 91087.186742 | 6.290955e+07 | 5220000 | 7120100 | POLYGON ((-656724.478 -1186419.132, -656719.97... | 6290.955403 |
Vytvořme sloupec pro rozlohu v WGS-84:
chko_4326 = chko.to_crs(epsg=4326)
chko['area_4326'] = chko_4326.area
chko.head()
/tmp/ipykernel_53553/2777375460.py:1: UserWarning: Geometry is in a geographic CRS. Results from 'area' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation. chko['area_4326'] = chko_4326.area
| FCSUBTYPE | F_CODE | ICC | NAMN1 | NA3 | NAMN2 | NLN1 | NLN2 | SHAPE_Leng | SHAPE_Area | SND | ANND | geometry | area_5514 | area_4326 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2 | FA081 | CZ | Broumovsko | CAT V | UNK | cze | UNK | 111219.544184 | 4.322066e+08 | 5220000 | 7120200 | POLYGON ((-615978.682 -994555.085, -615911.986... | 43220.659681 | 0.054836 |
| 1 | 2 | FA081 | CZ | Krkonošský národní park | CAT V | UNK | cze | UNK | 232089.726966 | 3.635709e+08 | 5220000 | 7120100 | POLYGON ((-658647.89 -974380.8, -658489.293 -9... | 36357.093598 | 0.046259 |
| 2 | 2 | FA081 | CZ | Šumava | CAT V | UNK | cze | UNK | 270558.358423 | 7.798763e+08 | 5220000 | 7120200 | POLYGON ((-830609 -1131423, -830377.17 -113154... | 77987.633810 | 0.095613 |
| 3 | 2 | FA081 | CZ | Labské pískovce | CAT V | UNK | cze | UNK | 118644.238375 | 2.117074e+08 | 5220000 | 7120200 | POLYGON ((-743441.203 -964003.613, -743685.943... | 21170.739642 | 0.027004 |
| 4 | 1 | FA080 | CZ | Podyjí | CAT II | Nationalpark Thayatal | cze | ger | 91087.186742 | 6.290955e+07 | 5220000 | 7120100 | POLYGON ((-656724.478 -1186419.132, -656719.97... | 6290.955403 | 0.007709 |
O1: Proč se rozlohy v různých souřadnicových systémech tak liší?
O2: Vytvořte sloupec pro rozlohu v ETRS-89
chko_3035 = chko.to_crs(epsg=3035)
chko['area_3035'] = chko_3035['geometry'].area / 1e4
chko.head()
| FCSUBTYPE | F_CODE | ICC | NAMN1 | NA3 | NAMN2 | NLN1 | NLN2 | SHAPE_Leng | SHAPE_Area | SND | ANND | geometry | area_5514 | area_4326 | area_3035 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2 | FA081 | CZ | Broumovsko | CAT V | UNK | cze | UNK | 111219.544184 | 4.322066e+08 | 5220000 | 7120200 | POLYGON ((-615978.682 -994555.085, -615911.986... | 43220.659681 | 0.054836 | 43212.374494 |
| 1 | 2 | FA081 | CZ | Krkonošský národní park | CAT V | UNK | cze | UNK | 232089.726966 | 3.635709e+08 | 5220000 | 7120100 | POLYGON ((-658647.89 -974380.8, -658489.293 -9... | 36357.093598 | 0.046259 | 36351.195547 |
| 2 | 2 | FA081 | CZ | Šumava | CAT V | UNK | cze | UNK | 270558.358423 | 7.798763e+08 | 5220000 | 7120200 | POLYGON ((-830609 -1131423, -830377.17 -113154... | 77987.633810 | 0.095613 | 77976.247526 |
| 3 | 2 | FA081 | CZ | Labské pískovce | CAT V | UNK | cze | UNK | 118644.238375 | 2.117074e+08 | 5220000 | 7120200 | POLYGON ((-743441.203 -964003.613, -743685.943... | 21170.739642 | 0.027004 | 21171.269037 |
| 4 | 1 | FA080 | CZ | Podyjí | CAT II | Nationalpark Thayatal | cze | ger | 91087.186742 | 6.290955e+07 | 5220000 | 7120100 | POLYGON ((-656724.478 -1186419.132, -656719.97... | 6290.955403 | 0.007709 | 6291.592166 |
O3: Vytvořte sloupec udávající o kolik procent se rozloha každého z CHKO liší v EPSG:5514 a EPSG:3035
chko['area_diff'] = (chko['area_5514'] - chko['area_3035']) / chko['area_3035'] * 100
chko.describe()
| FCSUBTYPE | SHAPE_Leng | SHAPE_Area | SND | ANND | area_5514 | area_4326 | area_3035 | area_diff | |
|---|---|---|---|---|---|---|---|---|---|
| count | 38.000000 | 38.000000 | 3.800000e+01 | 38.0 | 3.800000e+01 | 38.000000 | 38.000000 | 38.000000 | 38.000000 |
| mean | 1.921053 | 114782.125816 | 3.308689e+08 | 5220000.0 | 7.120189e+06 | 33086.890701 | 0.041332 | 33088.078213 | -0.002834 |
| std | 0.273276 | 66910.722711 | 3.107750e+08 | 0.0 | 3.110117e+01 | 31077.504812 | 0.038707 | 31079.619370 | 0.011551 |
| min | 1.000000 | 2918.156777 | 2.924004e+05 | 5220000.0 | 7.120100e+06 | 29.240043 | 0.000037 | 29.239091 | -0.020871 |
| 25% | 2.000000 | 81325.480132 | 8.758458e+07 | 5220000.0 | 7.120200e+06 | 8758.457541 | 0.010780 | 8759.226549 | -0.011305 |
| 50% | 2.000000 | 104258.214662 | 2.267546e+08 | 5220000.0 | 7.120200e+06 | 22675.463407 | 0.028240 | 22674.206485 | -0.002111 |
| 75% | 2.000000 | 138095.101720 | 5.657614e+08 | 5220000.0 | 7.120200e+06 | 56576.142076 | 0.071197 | 56580.822427 | 0.004312 |
| max | 2.000000 | 270558.358423 | 1.203346e+09 | 5220000.0 | 7.120200e+06 | 120334.581481 | 0.149223 | 120348.549190 | 0.019173 |
Délka, obvod¶
chko['perimeter'] = chko.length
chko.tail()
| FCSUBTYPE | F_CODE | ICC | NAMN1 | NA3 | NAMN2 | NLN1 | NLN2 | SHAPE_Leng | SHAPE_Area | SND | ANND | geometry | area_5514 | area_4326 | area_3035 | area_diff | perimeter | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 33 | 2 | FA081 | CZ | Kokořínsko-Máchův kraj | CAT V | UNK | cze | UNK | 107416.455364 | 2.745840e+08 | 5220000 | 7120200 | POLYGON ((-735048.286 -983123.143, -734931.553... | 27458.395736 | 0.034792 | 27461.097844 | -0.009840 | 107416.455364 |
| 34 | 2 | FA081 | CZ | Žďárské vrchy | CAT V | UNK | cze | UNK | 133006.101708 | 7.090082e+08 | 5220000 | 7120200 | POLYGON ((-645336.001 -1091107, -645187.466 -1... | 70900.824077 | 0.088300 | 70913.507636 | -0.017886 | 133006.101708 |
| 35 | 2 | FA081 | CZ | Kokořínsko-Máchův kraj | CAT V | UNK | cze | UNK | 83059.715481 | 1.361833e+08 | 5220000 | 7120200 | POLYGON ((-719344.476 -982219.594, -719380.221... | 13618.326121 | 0.017292 | 13618.954073 | -0.004611 | 83059.715481 |
| 36 | 2 | FA081 | CZ | Brdy | CAT V | UNK | cze | UNK | 180326.987644 | 3.449984e+08 | 5220000 | 7120200 | POLYGON ((-794344.235 -1075225.561, -794192.86... | 34499.843006 | 0.042984 | 34504.875677 | -0.014585 | 180326.987644 |
| 37 | 2 | FA081 | CZ | Slavkovský les | CAT V | UNK | cze | UNK | 149619.964072 | 6.102797e+08 | 5220000 | 7120200 | POLYGON ((-853285.324 -1012924.861, -853142.67... | 61027.969541 | 0.076650 | 61036.971738 | -0.014749 | 149619.964072 |
Pojďme spočítat minimální obvod polygonu se stejným obsahem.
Takovým tvarem bude kruh. Využijeme fakt, že obsah kruhu $S = \pi r^2$. Z toho nám vyjde, že poloměr kružnice $r = \sqrt{\frac{S}{\pi} }$. Uvědomíme-li si, že obvod kružnice $o = 2\pi r$, máme vše, co potřebujeme.
import math
chko['min_perimeter'] = 2 * math.pi * ((chko['geometry'].area / math.pi) ** 0.5)
chko.head()
| FCSUBTYPE | F_CODE | ICC | NAMN1 | NA3 | NAMN2 | NLN1 | NLN2 | SHAPE_Leng | SHAPE_Area | SND | ANND | geometry | area_5514 | area_4326 | area_3035 | area_diff | perimeter | min_perimeter | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2 | FA081 | CZ | Broumovsko | CAT V | UNK | cze | UNK | 111219.544184 | 4.322066e+08 | 5220000 | 7120200 | POLYGON ((-615978.682 -994555.085, -615911.986... | 43220.659681 | 0.054836 | 43212.374494 | 0.019173 | 111219.544184 | 73697.138869 |
| 1 | 2 | FA081 | CZ | Krkonošský národní park | CAT V | UNK | cze | UNK | 232089.726966 | 3.635709e+08 | 5220000 | 7120100 | POLYGON ((-658647.89 -974380.8, -658489.293 -9... | 36357.093598 | 0.046259 | 36351.195547 | 0.016225 | 232089.726966 | 67592.655859 |
| 2 | 2 | FA081 | CZ | Šumava | CAT V | UNK | cze | UNK | 270558.358423 | 7.798763e+08 | 5220000 | 7120200 | POLYGON ((-830609 -1131423, -830377.17 -113154... | 77987.633810 | 0.095613 | 77976.247526 | 0.014602 | 270558.358423 | 98996.035769 |
| 3 | 2 | FA081 | CZ | Labské pískovce | CAT V | UNK | cze | UNK | 118644.238375 | 2.117074e+08 | 5220000 | 7120200 | POLYGON ((-743441.203 -964003.613, -743685.943... | 21170.739642 | 0.027004 | 21171.269037 | -0.002501 | 118644.238375 | 51579.003530 |
| 4 | 1 | FA080 | CZ | Podyjí | CAT II | Nationalpark Thayatal | cze | ger | 91087.186742 | 6.290955e+07 | 5220000 | 7120100 | POLYGON ((-656724.478 -1186419.132, -656719.97... | 6290.955403 | 0.007709 | 6291.592166 | -0.010121 | 91087.186742 | 28116.628018 |
O4: Jaký je poměr současného obvodu polygonu a jeho nejmenšího možného obvodu se zachováním stejného obsah?
chko["perimeter_ratio"] = chko['perimeter'] / chko['min_perimeter']
chko.head()
| FCSUBTYPE | F_CODE | ICC | NAMN1 | NA3 | NAMN2 | NLN1 | NLN2 | SHAPE_Leng | SHAPE_Area | SND | ANND | geometry | area_5514 | area_4326 | area_3035 | area_diff | perimeter | min_perimeter | perimeter_ratio | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2 | FA081 | CZ | Broumovsko | CAT V | UNK | cze | UNK | 111219.544184 | 4.322066e+08 | 5220000 | 7120200 | POLYGON ((-615978.682 -994555.085, -615911.986... | 43220.659681 | 0.054836 | 43212.374494 | 0.019173 | 111219.544184 | 73697.138869 | 1.509143 |
| 1 | 2 | FA081 | CZ | Krkonošský národní park | CAT V | UNK | cze | UNK | 232089.726966 | 3.635709e+08 | 5220000 | 7120100 | POLYGON ((-658647.89 -974380.8, -658489.293 -9... | 36357.093598 | 0.046259 | 36351.195547 | 0.016225 | 232089.726966 | 67592.655859 | 3.433653 |
| 2 | 2 | FA081 | CZ | Šumava | CAT V | UNK | cze | UNK | 270558.358423 | 7.798763e+08 | 5220000 | 7120200 | POLYGON ((-830609 -1131423, -830377.17 -113154... | 77987.633810 | 0.095613 | 77976.247526 | 0.014602 | 270558.358423 | 98996.035769 | 2.733022 |
| 3 | 2 | FA081 | CZ | Labské pískovce | CAT V | UNK | cze | UNK | 118644.238375 | 2.117074e+08 | 5220000 | 7120200 | POLYGON ((-743441.203 -964003.613, -743685.943... | 21170.739642 | 0.027004 | 21171.269037 | -0.002501 | 118644.238375 | 51579.003530 | 2.300243 |
| 4 | 1 | FA080 | CZ | Podyjí | CAT II | Nationalpark Thayatal | cze | ger | 91087.186742 | 6.290955e+07 | 5220000 | 7120100 | POLYGON ((-656724.478 -1186419.132, -656719.97... | 6290.955403 | 0.007709 | 6291.592166 | -0.010121 | 91087.186742 | 28116.628018 | 3.239620 |
Srovnejme si CHKO podle komplexity jejich tvaru.
chko.sort_values('perimeter_ratio', ascending=False).head()
| FCSUBTYPE | F_CODE | ICC | NAMN1 | NA3 | NAMN2 | NLN1 | NLN2 | SHAPE_Leng | SHAPE_Area | SND | ANND | geometry | area_5514 | area_4326 | area_3035 | area_diff | perimeter | min_perimeter | perimeter_ratio | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | FA081 | CZ | Krkonošský národní park | CAT V | UNK | cze | UNK | 232089.726966 | 3.635709e+08 | 5220000 | 7120100 | POLYGON ((-658647.89 -974380.8, -658489.293 -9... | 36357.093598 | 0.046259 | 36351.195547 | 0.016225 | 232089.726966 | 67592.655859 | 3.433653 |
| 4 | 1 | FA080 | CZ | Podyjí | CAT II | Nationalpark Thayatal | cze | ger | 91087.186742 | 6.290955e+07 | 5220000 | 7120100 | POLYGON ((-656724.478 -1186419.132, -656719.97... | 6290.955403 | 0.007709 | 6291.592166 | -0.010121 | 91087.186742 | 28116.628018 | 3.239620 |
| 5 | 1 | FA080 | CZ | České Švýcarsko | CAT II | UNK | cze | UNK | 86984.825493 | 7.929017e+07 | 5220000 | 7120100 | POLYGON ((-731155.429 -948303.529, -731078.389... | 7929.016945 | 0.010128 | 7928.798759 | 0.002752 | 86984.825493 | 31565.640424 | 2.755681 |
| 36 | 2 | FA081 | CZ | Brdy | CAT V | UNK | cze | UNK | 180326.987644 | 3.449984e+08 | 5220000 | 7120200 | POLYGON ((-794344.235 -1075225.561, -794192.86... | 34499.843006 | 0.042984 | 34504.875677 | -0.014585 | 180326.987644 | 65843.588401 | 2.738717 |
| 2 | 2 | FA081 | CZ | Šumava | CAT V | UNK | cze | UNK | 270558.358423 | 7.798763e+08 | 5220000 | 7120200 | POLYGON ((-830609 -1131423, -830377.17 -113154... | 77987.633810 | 0.095613 | 77976.247526 | 0.014602 | 270558.358423 | 98996.035769 | 2.733022 |
Zobrazme CHKO s nejkomplexnějším tvarem.
Tvorba geometrie¶
Buffer
chko['buffer'] = chko.buffer(300)
chko.head(3)
| FCSUBTYPE | F_CODE | ICC | NAMN1 | NA3 | NAMN2 | NLN1 | NLN2 | SHAPE_Leng | SHAPE_Area | ... | ANND | geometry | area_5514 | area_4326 | area_3035 | area_diff | perimeter | min_perimeter | perimeter_ratio | buffer | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2 | FA081 | CZ | Broumovsko | CAT V | UNK | cze | UNK | 111219.544184 | 4.322066e+08 | ... | 7120200 | POLYGON ((-615978.682 -994555.085, -615911.986... | 43220.659681 | 0.054836 | 43212.374494 | 0.019173 | 111219.544184 | 73697.138869 | 1.509143 | POLYGON ((-622498.137 -1005854.747, -622614.46... |
| 1 | 2 | FA081 | CZ | Krkonošský národní park | CAT V | UNK | cze | UNK | 232089.726966 | 3.635709e+08 | ... | 7120100 | POLYGON ((-658647.89 -974380.8, -658489.293 -9... | 36357.093598 | 0.046259 | 36351.195547 | 0.016225 | 232089.726966 | 67592.655859 | 3.433653 | POLYGON ((-667301.348 -979347.05, -667316.393 ... |
| 2 | 2 | FA081 | CZ | Šumava | CAT V | UNK | cze | UNK | 270558.358423 | 7.798763e+08 | ... | 7120200 | POLYGON ((-830609 -1131423, -830377.17 -113154... | 77987.633810 | 0.095613 | 77976.247526 | 0.014602 | 270558.358423 | 98996.035769 | 2.733022 | POLYGON ((-832470.643 -1132147.507, -832479.87... |
3 rows × 21 columns
Protože máme nyní dva sloupce obsahující geometrii, musíme specifikovat ten, který chceme zobrazit.
Konvexní obal
Nejmenší ohraničující obdélník
Centroid
Centroid sám o sobě nám mnoho neříká. Zobrazme si centroid i původní polygon.
basemap = chko[chko['NAMN1'] == name].plot(color='darkgreen', alpha = 0.5)
chko[chko['NAMN1'] == name].set_geometry("centroid").plot(ax=basemap, color='darkblue', alpha = 0.5)
Překryvné operace¶
Vyberme pouze CHKO, ve kterých se nachází alespoň jedna rozhledna.
lookouts = gpd.read_file("TowerP.shp")
Zobrazme jen překryvné plochy.
lookouts['buffer'] = lookouts.buffer(10000)
lookouts_union = lookouts['buffer'].union_all()
lookouted['impacted_poly'] = lookouted.intersection(lookouts_union)
lookouted.set_geometry('impacted_poly', inplace=True)
basemap = lookouts['buffer'].plot(alpha=0.5)
lookouted['geometry'].plot(ax=basemap, color='darkgreen', alpha=0.5)
lookouted.plot(ax=basemap, color='darkred')