{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 40 Working with GPX Data in GemGIS\n", "\n", "GPX, or GPS Exchange Format, is an XML schema designed as a common GPS data format for software applications. It can be used to describe waypoints, tracks, and routes. The format is open and can be used without the need to pay license fees. Location data (and optionally elevation, time, and other information) is stored in tags and can be interchanged between GPS devices and software. Common software applications for the data include viewing tracks projected onto various map sources, annotating maps, and geotagging photographs based on the time they were taken.\n", "\n", "\n", "\n", "Source: https://en.wikipedia.org/wiki/GPS_Exchange_Format" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Set File Paths and download Tutorial Data\n", "\n", "If you downloaded the latest `GemGIS` version from the Github repository, append the path so that the package can be imported successfully. Otherwise, it is recommended to install `GemGIS` via `pip install gemgis` and import `GemGIS` using `import gemgis as gg`. In addition, the file path to the folder where the data is being stored is set. The tutorial data is downloaded using Pooch (https://www.fatiando.org/pooch/latest/index.html) and stored in the specified folder. Use `pip install pooch` if Pooch is not installed on your system yet." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2021-03-17T12:03:13.671689Z", "start_time": "2021-03-17T12:03:11.349579Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\ale93371\\Anaconda3\\envs\\gemgis\\lib\\site-packages\\gemgis\\gemgis.py:27: UserWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas will still use PyGEOS by default for now. To force to use and test Shapely 2.0, you have to set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", "\n", "import os\n", "os.environ['USE_PYGEOS'] = '0'\n", "import geopandas\n", "\n", "In a future release, GeoPandas will switch to using Shapely by default. If you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html).\n", " import geopandas as gpd\n" ] } ], "source": [ "import gemgis as gg\n", "\n", "file_path ='data/40_working_with_gpx_data_in_gemgis/'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2021-03-17T12:03:14.093507Z", "start_time": "2021-03-17T12:03:13.704939Z" } }, "outputs": [], "source": [ "gg.download_gemgis_data.download_tutorial_data(filename=\"40_working_with_gpx_data_in_gemgis.zip\", dirpath=file_path)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load Data\n", "\n", "Data from a running practice in northern Germany is used for demonstration purposes." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:44.943487Z", "start_time": "2021-01-04T08:23:42.139586Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import geopandas as gpd\n", "\n", "gpx = gg.vector.load_gpx(path=file_path+'Run.gpx', layer='tracks') \n", "gpx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inspecting the data\n", "\n", "The driver used to open the data was ``GPX``" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:44.959583Z", "start_time": "2021-01-04T08:23:44.945482Z" } }, "outputs": [ { "data": { "text/plain": [ "'GPX'" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx.driver" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The CRS of the data is ``EPGS:4326``." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:44.974844Z", "start_time": "2021-01-04T08:23:44.961561Z" } }, "outputs": [ { "data": { "text/plain": [ "{'init': 'epsg:4326'}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx.crs" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:44.989999Z", "start_time": "2021-01-04T08:23:44.976868Z" } }, "outputs": [ { "data": { "text/plain": [ "'GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx.crs_wkt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The extent of the data is defining the bounds of the gpx." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.022014Z", "start_time": "2021-01-04T08:23:44.992008Z" } }, "outputs": [ { "data": { "text/plain": [ "(8.460906, 52.694879, 8.501507, 52.732331)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx.bounds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the track has different start and end points, the track is not closed." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.037965Z", "start_time": "2021-01-04T08:23:45.024022Z" } }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx.closed" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Accessing the meta data." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.052960Z", "start_time": "2021-01-04T08:23:45.038967Z" } }, "outputs": [ { "data": { "text/plain": [ "{'driver': 'GPX',\n", " 'schema': {'properties': OrderedDict([('name', 'str'),\n", " ('cmt', 'str'),\n", " ('desc', 'str'),\n", " ('src', 'str'),\n", " ('link1_href', 'str'),\n", " ('link1_text', 'str'),\n", " ('link1_type', 'str'),\n", " ('link2_href', 'str'),\n", " ('link2_text', 'str'),\n", " ('link2_type', 'str'),\n", " ('number', 'int'),\n", " ('type', 'str')]),\n", " 'geometry': 'MultiLineString'},\n", " 'crs': {'init': 'epsg:4326'},\n", " 'crs_wkt': 'GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]'}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx.meta" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2021-01-04T07:44:55.388142Z", "start_time": "2021-01-04T07:44:55.379618Z" } }, "source": [ "Name of the Track." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.068971Z", "start_time": "2021-01-04T08:23:45.054962Z" } }, "outputs": [ { "data": { "text/plain": [ "'tracks'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx.name" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.084150Z", "start_time": "2021-01-04T08:23:45.070971Z" } }, "outputs": [ { "data": { "text/plain": [ "{'driver': 'GPX',\n", " 'schema': {'properties': OrderedDict([('name', 'str'),\n", " ('cmt', 'str'),\n", " ('desc', 'str'),\n", " ('src', 'str'),\n", " ('link1_href', 'str'),\n", " ('link1_text', 'str'),\n", " ('link1_type', 'str'),\n", " ('link2_href', 'str'),\n", " ('link2_text', 'str'),\n", " ('link2_type', 'str'),\n", " ('number', 'int'),\n", " ('type', 'str')]),\n", " 'geometry': 'MultiLineString'},\n", " 'crs': {'init': 'epsg:4326'},\n", " 'crs_wkt': 'GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]'}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx.profile" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2021-01-04T07:44:43.067887Z", "start_time": "2021-01-04T07:44:43.050881Z" } }, "source": [ "## Loading GPX as dict\n", "\n", "The GPX can also be loaded as dict for further processing of the contents of the GPX file using ``load_gpx_as_dict(..)``. This dict contains the properties, the geometry including the coordinates of the data, the ID and the type of the data" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.147166Z", "start_time": "2021-01-04T08:23:45.086155Z" } }, "outputs": [ { "data": { "text/plain": [ "[(8.496285, 52.705566),\n", " (8.49627, 52.705593),\n", " (8.496234, 52.705629),\n", " (8.496205, 52.705664),\n", " (8.496181, 52.705705)]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx_dict = gg.vector.load_gpx_as_dict(path=file_path+'Run.gpx', layer='tracks')\n", "gpx_dict['geometry']['coordinates'][0][:5]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.163172Z", "start_time": "2021-01-04T08:23:45.149166Z" } }, "outputs": [ { "data": { "text/plain": [ "dict_keys(['type', 'id', 'properties', 'geometry'])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx_dict.keys()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.210182Z", "start_time": "2021-01-04T08:23:45.196179Z" } }, "outputs": [ { "data": { "text/plain": [ "('Feature',\n", " '0',\n", " OrderedDict([('name', 'First half marathon distance of the year'),\n", " ('cmt', None),\n", " ('desc', None),\n", " ('src', None),\n", " ('link1_href', None),\n", " ('link1_text', None),\n", " ('link1_type', None),\n", " ('link2_href', None),\n", " ('link2_text', None),\n", " ('link2_type', None),\n", " ('number', None),\n", " ('type', '9')]))" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx_dict['type'], gpx_dict['id'], gpx_dict['properties']" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.258193Z", "start_time": "2021-01-04T08:23:45.244189Z" } }, "outputs": [ { "data": { "text/plain": [ "'MultiLineString'" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpx_dict['geometry']['type']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating Shapely Base Geometry from GPX\n", "\n", "In order to work with GPX data, a Shapely BaseGeometry can be created using ``load_gpx_as_geometry(...)``.\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.352951Z", "start_time": "2021-01-04T08:23:45.307204Z" } }, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "shape = gg.vector.load_gpx_as_geometry(path=file_path+'Run.gpx', layer='tracks')\n", "shape" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.384968Z", "start_time": "2021-01-04T08:23:45.354950Z" } }, "outputs": [ { "data": { "text/plain": [ "'MULTILINESTRING ((8.496285 52.705566, 8.49627 52.705593, 8.496234 52.705629, 8.496205 52.705664, 8.4'" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "shape.wkt[:100]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating GeoData from Geometry\n", "\n", "A GeoDataFrame containing the created geometry can easily be created. Notice that the CRS attribute of the GPX collection was provided. " ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.448442Z", "start_time": "2021-01-04T08:23:45.386957Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
geometry
0MULTILINESTRING ((8.49629 52.70557, 8.49627 52...
\n", "
" ], "text/plain": [ " geometry\n", "0 MULTILINESTRING ((8.49629 52.70557, 8.49627 52..." ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import geopandas as gpd\n", "\n", "gdf = gpd.GeoDataFrame(geometry=[shape], crs=gpx.crs)\n", "gdf" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.479430Z", "start_time": "2021-01-04T08:23:45.450433Z" } }, "outputs": [ { "data": { "text/plain": [ "\n", "Name: WGS 84\n", "Axis Info [ellipsoidal]:\n", "- lon[east]: Longitude (degree)\n", "- lat[north]: Latitude (degree)\n", "Area of Use:\n", "- name: World.\n", "- bounds: (-180.0, -90.0, 180.0, 90.0)\n", "Datum: World Geodetic System 1984 ensemble\n", "- Ellipsoid: WGS 84\n", "- Prime Meridian: Greenwich" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf.crs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the data can be plotted." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.636062Z", "start_time": "2021-01-04T08:23:45.483433Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "gdf.plot()\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The length of the track is approximately 21139 m and therefore slightly longer than a half marathon distance (21097 m)." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2021-01-04T08:23:45.730333Z", "start_time": "2021-01-04T08:23:45.639073Z" } }, "outputs": [ { "data": { "text/plain": [ "21139.875974842187" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf.to_crs(4647).loc[0].geometry.length" ] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.8" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }