diff --git a/enrich-citygml-with-greenarea/data/Philip/Test/Change Shapefile CRS.ipynb b/enrich-citygml-with-greenarea/data/Philip/Test/Change Shapefile CRS.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..b44291da12bc3b9eb691749c8ef1f805aea6096e --- /dev/null +++ b/enrich-citygml-with-greenarea/data/Philip/Test/Change Shapefile CRS.ipynb @@ -0,0 +1,505 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "8f8408e6", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "d8461792", + "metadata": {}, + "outputs": [], + "source": [ + "import shapely" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6bbb8081", + "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>Bezeichnun</th>\n", + " <th>Baumart</th>\n", + " <th>Baumhöhe</th>\n", + " <th>Kronenbrei</th>\n", + " <th>Stammumfan</th>\n", + " <th>Durchmesse</th>\n", + " <th>Breitengra</th>\n", + " <th>Längengra</th>\n", + " <th>geometry</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>Tilia Cordata</td>\n", + " <td>Linde</td>\n", + " <td>15.7</td>\n", + " <td>5.3</td>\n", + " <td>1.6</td>\n", + " <td>0.0</td>\n", + " <td>9.929020</td>\n", + " <td>49.786065</td>\n", + " <td>POINT (4350885.205 5518545.260)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>Tilia Cordata</td>\n", + " <td>Linde</td>\n", + " <td>13.3</td>\n", + " <td>4.9</td>\n", + " <td>1.0</td>\n", + " <td>0.0</td>\n", + " <td>9.934286</td>\n", + " <td>49.794348</td>\n", + " <td>POINT (4351289.754 5519455.869)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>robinia pseudoacacia</td>\n", + " <td>Robinie</td>\n", + " <td>17.7</td>\n", + " <td>4.5</td>\n", + " <td>1.7</td>\n", + " <td>0.0</td>\n", + " <td>9.942568</td>\n", + " <td>49.795610</td>\n", + " <td>POINT (4351889.764 5519579.827)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>Tilia Cordata</td>\n", + " <td>Linde</td>\n", + " <td>15.2</td>\n", + " <td>5.0</td>\n", + " <td>1.1</td>\n", + " <td>0.0</td>\n", + " <td>9.941988</td>\n", + " <td>49.794548</td>\n", + " <td>POINT (4351844.785 5519462.881)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>robinia pseudoacacia</td>\n", + " <td>Robinie</td>\n", + " <td>12.8</td>\n", + " <td>4.2</td>\n", + " <td>1.1</td>\n", + " <td>0.0</td>\n", + " <td>9.948865</td>\n", + " <td>49.787736</td>\n", + " <td>POINT (4352319.118 5518691.817)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5</th>\n", + " <td>Tilia Cordata</td>\n", + " <td>Linde</td>\n", + " <td>13.8</td>\n", + " <td>4.0</td>\n", + " <td>1.3</td>\n", + " <td>0.0</td>\n", + " <td>9.950083</td>\n", + " <td>49.787398</td>\n", + " <td>POINT (4352405.769 5518651.799)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>6</th>\n", + " <td>Tilia Cordata</td>\n", + " <td>Linde</td>\n", + " <td>14.8</td>\n", + " <td>3.4</td>\n", + " <td>0.9</td>\n", + " <td>0.0</td>\n", + " <td>9.964250</td>\n", + " <td>49.791921</td>\n", + " <td>POINT (4353439.338 5519127.002)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>7</th>\n", + " <td>robinia pseudoacacia</td>\n", + " <td>Robinie</td>\n", + " <td>11.7</td>\n", + " <td>4.3</td>\n", + " <td>1.2</td>\n", + " <td>0.0</td>\n", + " <td>9.962506</td>\n", + " <td>49.792440</td>\n", + " <td>POINT (4353315.381 5519188.121)</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " Bezeichnun Baumart Baumhöhe Kronenbrei Stammumfan \\\n", + "0 Tilia Cordata Linde 15.7 5.3 1.6 \n", + "1 Tilia Cordata Linde 13.3 4.9 1.0 \n", + "2 robinia pseudoacacia Robinie 17.7 4.5 1.7 \n", + "3 Tilia Cordata Linde 15.2 5.0 1.1 \n", + "4 robinia pseudoacacia Robinie 12.8 4.2 1.1 \n", + "5 Tilia Cordata Linde 13.8 4.0 1.3 \n", + "6 Tilia Cordata Linde 14.8 3.4 0.9 \n", + "7 robinia pseudoacacia Robinie 11.7 4.3 1.2 \n", + "\n", + " Durchmesse Breitengra Längengra geometry \n", + "0 0.0 9.929020 49.786065 POINT (4350885.205 5518545.260) \n", + "1 0.0 9.934286 49.794348 POINT (4351289.754 5519455.869) \n", + "2 0.0 9.942568 49.795610 POINT (4351889.764 5519579.827) \n", + "3 0.0 9.941988 49.794548 POINT (4351844.785 5519462.881) \n", + "4 0.0 9.948865 49.787736 POINT (4352319.118 5518691.817) \n", + "5 0.0 9.950083 49.787398 POINT (4352405.769 5518651.799) \n", + "6 0.0 9.964250 49.791921 POINT (4353439.338 5519127.002) \n", + "7 0.0 9.962506 49.792440 POINT (4353315.381 5519188.121) " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = gpd.read_file('Klimabäume_SImStadtUTm.shp')\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e0ceeefa", + "metadata": {}, + "outputs": [], + "source": [ + "df = df.to_crs(25832)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "208df86b", + "metadata": {}, + "outputs": [], + "source": [ + "df = df.drop(columns=['Breitengra', 'Längengra'])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d72ccb64", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<Projected CRS: EPSG:25832>\n", + "Name: ETRS89 / UTM zone 32N\n", + "Axis Info [cartesian]:\n", + "- E[east]: Easting (metre)\n", + "- N[north]: Northing (metre)\n", + "Area of Use:\n", + "- name: Europe between 6°E and 12°E: Austria; Belgium; Denmark - onshore and offshore; Germany - onshore and offshore; Norway including - onshore and offshore; Spain - offshore.\n", + "- bounds: (6.0, 38.76, 12.01, 84.33)\n", + "Coordinate Operation:\n", + "- name: UTM zone 32N\n", + "- method: Transverse Mercator\n", + "Datum: European Terrestrial Reference System 1989 ensemble\n", + "- Ellipsoid: GRS 1980\n", + "- Prime Meridian: Greenwich" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.crs" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "8fbe258a", + "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>Bezeichnun</th>\n", + " <th>Baumart</th>\n", + " <th>Baumhöhe</th>\n", + " <th>Kronenbrei</th>\n", + " <th>Stammumfan</th>\n", + " <th>Durchmesse</th>\n", + " <th>geometry</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>Tilia Cordata</td>\n", + " <td>Linde</td>\n", + " <td>15.7</td>\n", + " <td>5.3</td>\n", + " <td>1.6</td>\n", + " <td>0.0</td>\n", + " <td>POINT (566791.332 5515133.591)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>Tilia Cordata</td>\n", + " <td>Linde</td>\n", + " <td>13.3</td>\n", + " <td>4.9</td>\n", + " <td>1.0</td>\n", + " <td>0.0</td>\n", + " <td>POINT (567158.925 5516059.074)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>robinia pseudoacacia</td>\n", + " <td>Robinie</td>\n", + " <td>17.7</td>\n", + " <td>4.5</td>\n", + " <td>1.7</td>\n", + " <td>0.0</td>\n", + " <td>POINT (567753.134 5516206.830)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>Tilia Cordata</td>\n", + " <td>Linde</td>\n", + " <td>15.2</td>\n", + " <td>5.0</td>\n", + " <td>1.1</td>\n", + " <td>0.0</td>\n", + " <td>POINT (567712.891 5516088.252)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>robinia pseudoacacia</td>\n", + " <td>Robinie</td>\n", + " <td>12.8</td>\n", + " <td>4.2</td>\n", + " <td>1.1</td>\n", + " <td>0.0</td>\n", + " <td>POINT (568217.362 5515337.228)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5</th>\n", + " <td>Tilia Cordata</td>\n", + " <td>Linde</td>\n", + " <td>13.8</td>\n", + " <td>4.0</td>\n", + " <td>1.3</td>\n", + " <td>0.0</td>\n", + " <td>POINT (568305.490 5515300.728)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>6</th>\n", + " <td>Tilia Cordata</td>\n", + " <td>Linde</td>\n", + " <td>14.8</td>\n", + " <td>3.4</td>\n", + " <td>0.9</td>\n", + " <td>0.0</td>\n", + " <td>POINT (569318.620 5515816.558)</td>\n", + " </tr>\n", + " <tr>\n", + " <th>7</th>\n", + " <td>robinia pseudoacacia</td>\n", + " <td>Robinie</td>\n", + " <td>11.7</td>\n", + " <td>4.3</td>\n", + " <td>1.2</td>\n", + " <td>0.0</td>\n", + " <td>POINT (569192.394 5515872.638)</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " Bezeichnun Baumart Baumhöhe Kronenbrei Stammumfan \\\n", + "0 Tilia Cordata Linde 15.7 5.3 1.6 \n", + "1 Tilia Cordata Linde 13.3 4.9 1.0 \n", + "2 robinia pseudoacacia Robinie 17.7 4.5 1.7 \n", + "3 Tilia Cordata Linde 15.2 5.0 1.1 \n", + "4 robinia pseudoacacia Robinie 12.8 4.2 1.1 \n", + "5 Tilia Cordata Linde 13.8 4.0 1.3 \n", + "6 Tilia Cordata Linde 14.8 3.4 0.9 \n", + "7 robinia pseudoacacia Robinie 11.7 4.3 1.2 \n", + "\n", + " Durchmesse geometry \n", + "0 0.0 POINT (566791.332 5515133.591) \n", + "1 0.0 POINT (567158.925 5516059.074) \n", + "2 0.0 POINT (567753.134 5516206.830) \n", + "3 0.0 POINT (567712.891 5516088.252) \n", + "4 0.0 POINT (568217.362 5515337.228) \n", + "5 0.0 POINT (568305.490 5515300.728) \n", + "6 0.0 POINT (569318.620 5515816.558) \n", + "7 0.0 POINT (569192.394 5515872.638) " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "38000721", + "metadata": {}, + "outputs": [], + "source": [ + "df.to_file(\"Klimabäume_SImStadt.shp\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "c26ecc76", + "metadata": {}, + "outputs": [], + "source": [ + "poly = df.geometry[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "43d36ff6", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100.0\" height=\"100.0\" viewBox=\"566790.3315698793 5515132.590795662 2.0 2.0\" preserveAspectRatio=\"xMinYMin meet\"><g transform=\"matrix(1,0,0,-1,0,11030267.181591325)\"><circle cx=\"566791.3315698793\" cy=\"5515133.590795662\" r=\"0.06\" stroke=\"#555555\" stroke-width=\"0.02\" fill=\"#66cc99\" opacity=\"0.6\" /></g></svg>" + ], + "text/plain": [ + "<POINT (566791.332 5515133.591)>" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "poly" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "67377424", + "metadata": {}, + "outputs": [], + "source": [ + "poly2d = shapely.ops.transform(lambda *args: args[:2], poly)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "9bab724b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'POINT (566791.3315698793 5515133.590795662)'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "poly2d.wkt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29537f36", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}