diff --git a/examples/Assignment1_duckravel.ipynb b/examples/Assignment1_duckravel.ipynb
new file mode 100644
index 0000000..9a09321
--- /dev/null
+++ b/examples/Assignment1_duckravel.ipynb
@@ -0,0 +1,1429 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Package loading and basic configurations"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%load_ext autoreload\n",
+ "%autoreload 2\n",
+ "\n",
+ "# load dependencies'\n",
+ "import pandas as pd\n",
+ "import geopandas as gpd\n",
+ "\n",
+ "from envirocar import TrackAPI, DownloadClient, BboxSelector, ECConfig\n",
+ "\n",
+ "# create an initial but optional config and an api client\n",
+ "config = ECConfig()\n",
+ "track_api = TrackAPI(api_client=DownloadClient(config=config))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Querying enviroCar Tracks"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following cell queries tracks from the enviroCar API. It defines a bbox for the area of Münster (Germany) and requests 50 tracks. The result is a GeoDataFrame, which is a geo-extended Pandas dataframe from the GeoPandas library. It contains all information of the track in a flat dataframe format including a specific geometry column. \n",
+ "## Select data from dataframe\n",
+ "* https://geopandas.org/indexing.html\n",
+ "* https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " time | \n",
+ " geometry | \n",
+ " GPS Altitude.value | \n",
+ " GPS Altitude.unit | \n",
+ " GPS Bearing.value | \n",
+ " GPS Bearing.unit | \n",
+ " Throttle Position.value | \n",
+ " Throttle Position.unit | \n",
+ " Speed.value | \n",
+ " ... | \n",
+ " sensor.constructionYear | \n",
+ " sensor.manufacturer | \n",
+ " track.appVersion | \n",
+ " track.touVersion | \n",
+ " O2 Lambda Voltage ER.value | \n",
+ " O2 Lambda Voltage ER.unit | \n",
+ " MAF.value | \n",
+ " MAF.unit | \n",
+ " O2 Lambda Voltage.value | \n",
+ " O2 Lambda Voltage.unit | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 5e8baea465b80c5d6b4dbfbf | \n",
+ " 2020-04-06T20:43:35 | \n",
+ " POINT (7.65079 51.95400) | \n",
+ " 100.237808 | \n",
+ " m | \n",
+ " 337.001680 | \n",
+ " deg | \n",
+ " 16.283688 | \n",
+ " % | \n",
+ " 6.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 5e8baea465b80c5d6b4dbfc1 | \n",
+ " 2020-04-06T20:43:40 | \n",
+ " POINT (7.65079 51.95412) | \n",
+ " 102.772222 | \n",
+ " m | \n",
+ " 11.636667 | \n",
+ " deg | \n",
+ " 17.920277 | \n",
+ " % | \n",
+ " 14.260606 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 5e8baea465b80c5d6b4dbfc2 | \n",
+ " 2020-04-06T20:43:45 | \n",
+ " POINT (7.65083 51.95435) | \n",
+ " 104.020541 | \n",
+ " m | \n",
+ " 6.089730 | \n",
+ " deg | \n",
+ " 16.000000 | \n",
+ " % | \n",
+ " 23.999999 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 5e8baea465b80c5d6b4dbfc3 | \n",
+ " 2020-04-06T20:43:50 | \n",
+ " POINT (7.65086 51.95463) | \n",
+ " 103.999999 | \n",
+ " m | \n",
+ " 4.503939 | \n",
+ " deg | \n",
+ " 16.000000 | \n",
+ " % | \n",
+ " 21.000001 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 5e8baea465b80c5d6b4dbfc4 | \n",
+ " 2020-04-06T20:43:55 | \n",
+ " POINT (7.65090 51.95480) | \n",
+ " 104.000001 | \n",
+ " m | \n",
+ " 7.967200 | \n",
+ " deg | \n",
+ " 16.000000 | \n",
+ " % | \n",
+ " 3.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 185 | \n",
+ " 5e10ec089115b85a12319742 | \n",
+ " 2020-01-04T15:40:26 | \n",
+ " POINT (7.61381 52.00054) | \n",
+ " 96.000000 | \n",
+ " m | \n",
+ " 325.882644 | \n",
+ " deg | \n",
+ " 15.000000 | \n",
+ " % | \n",
+ " 6.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 186 | \n",
+ " 5e10ec089115b85a12319743 | \n",
+ " 2020-01-04T15:40:31 | \n",
+ " POINT (7.61374 52.00060) | \n",
+ " 96.000000 | \n",
+ " m | \n",
+ " 330.004187 | \n",
+ " deg | \n",
+ " 15.000000 | \n",
+ " % | \n",
+ " 5.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 187 | \n",
+ " 5e10ec089115b85a12319744 | \n",
+ " 2020-01-04T15:40:36 | \n",
+ " POINT (7.61366 52.00063) | \n",
+ " 96.000000 | \n",
+ " m | \n",
+ " 0.000000 | \n",
+ " deg | \n",
+ " 15.000000 | \n",
+ " % | \n",
+ " 2.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 188 | \n",
+ " 5e10ec089115b85a12319745 | \n",
+ " 2020-01-04T15:40:40 | \n",
+ " POINT (7.61366 52.00063) | \n",
+ " 95.999998 | \n",
+ " m | \n",
+ " 0.000000 | \n",
+ " deg | \n",
+ " 14.000000 | \n",
+ " % | \n",
+ " 0.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 189 | \n",
+ " 5e10ec089115b85a12319746 | \n",
+ " 2020-01-04T15:40:45 | \n",
+ " POINT (7.61366 52.00063) | \n",
+ " 96.000001 | \n",
+ " m | \n",
+ " 0.000000 | \n",
+ " deg | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
6637 rows × 54 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id time geometry \\\n",
+ "0 5e8baea465b80c5d6b4dbfbf 2020-04-06T20:43:35 POINT (7.65079 51.95400) \n",
+ "1 5e8baea465b80c5d6b4dbfc1 2020-04-06T20:43:40 POINT (7.65079 51.95412) \n",
+ "2 5e8baea465b80c5d6b4dbfc2 2020-04-06T20:43:45 POINT (7.65083 51.95435) \n",
+ "3 5e8baea465b80c5d6b4dbfc3 2020-04-06T20:43:50 POINT (7.65086 51.95463) \n",
+ "4 5e8baea465b80c5d6b4dbfc4 2020-04-06T20:43:55 POINT (7.65090 51.95480) \n",
+ ".. ... ... ... \n",
+ "185 5e10ec089115b85a12319742 2020-01-04T15:40:26 POINT (7.61381 52.00054) \n",
+ "186 5e10ec089115b85a12319743 2020-01-04T15:40:31 POINT (7.61374 52.00060) \n",
+ "187 5e10ec089115b85a12319744 2020-01-04T15:40:36 POINT (7.61366 52.00063) \n",
+ "188 5e10ec089115b85a12319745 2020-01-04T15:40:40 POINT (7.61366 52.00063) \n",
+ "189 5e10ec089115b85a12319746 2020-01-04T15:40:45 POINT (7.61366 52.00063) \n",
+ "\n",
+ " GPS Altitude.value GPS Altitude.unit GPS Bearing.value GPS Bearing.unit \\\n",
+ "0 100.237808 m 337.001680 deg \n",
+ "1 102.772222 m 11.636667 deg \n",
+ "2 104.020541 m 6.089730 deg \n",
+ "3 103.999999 m 4.503939 deg \n",
+ "4 104.000001 m 7.967200 deg \n",
+ ".. ... ... ... ... \n",
+ "185 96.000000 m 325.882644 deg \n",
+ "186 96.000000 m 330.004187 deg \n",
+ "187 96.000000 m 0.000000 deg \n",
+ "188 95.999998 m 0.000000 deg \n",
+ "189 96.000001 m 0.000000 deg \n",
+ "\n",
+ " Throttle Position.value Throttle Position.unit Speed.value ... \\\n",
+ "0 16.283688 % 6.000000 ... \n",
+ "1 17.920277 % 14.260606 ... \n",
+ "2 16.000000 % 23.999999 ... \n",
+ "3 16.000000 % 21.000001 ... \n",
+ "4 16.000000 % 3.000000 ... \n",
+ ".. ... ... ... ... \n",
+ "185 15.000000 % 6.000000 ... \n",
+ "186 15.000000 % 5.000000 ... \n",
+ "187 15.000000 % 2.000000 ... \n",
+ "188 14.000000 % 0.000000 ... \n",
+ "189 NaN NaN NaN ... \n",
+ "\n",
+ " sensor.constructionYear sensor.manufacturer track.appVersion \\\n",
+ "0 2007 Dodge NaN \n",
+ "1 2007 Dodge NaN \n",
+ "2 2007 Dodge NaN \n",
+ "3 2007 Dodge NaN \n",
+ "4 2007 Dodge NaN \n",
+ ".. ... ... ... \n",
+ "185 2007 Dodge NaN \n",
+ "186 2007 Dodge NaN \n",
+ "187 2007 Dodge NaN \n",
+ "188 2007 Dodge NaN \n",
+ "189 2007 Dodge NaN \n",
+ "\n",
+ " track.touVersion O2 Lambda Voltage ER.value O2 Lambda Voltage ER.unit \\\n",
+ "0 NaN NaN NaN \n",
+ "1 NaN NaN NaN \n",
+ "2 NaN NaN NaN \n",
+ "3 NaN NaN NaN \n",
+ "4 NaN NaN NaN \n",
+ ".. ... ... ... \n",
+ "185 NaN NaN NaN \n",
+ "186 NaN NaN NaN \n",
+ "187 NaN NaN NaN \n",
+ "188 NaN NaN NaN \n",
+ "189 NaN NaN NaN \n",
+ "\n",
+ " MAF.value MAF.unit O2 Lambda Voltage.value O2 Lambda Voltage.unit \n",
+ "0 NaN NaN NaN NaN \n",
+ "1 NaN NaN NaN NaN \n",
+ "2 NaN NaN NaN NaN \n",
+ "3 NaN NaN NaN NaN \n",
+ "4 NaN NaN NaN NaN \n",
+ ".. ... ... ... ... \n",
+ "185 NaN NaN NaN NaN \n",
+ "186 NaN NaN NaN NaN \n",
+ "187 NaN NaN NaN NaN \n",
+ "188 NaN NaN NaN NaN \n",
+ "189 NaN NaN NaN NaN \n",
+ "\n",
+ "[6637 rows x 54 columns]"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# set boundary\n",
+ "bbox = BboxSelector([ \n",
+ " 7.5777467, # min_x\n",
+ " 51.9514909, # min_y\n",
+ " 7.6544357, # max_x\n",
+ " 51.9693827 # max_y\n",
+ "])\n",
+ "# issue a query\n",
+ "track_df = track_api.get_tracks(bbox=bbox,num_results=50) # requesting 50 tracks inside the bbox\n",
+ "# retrieve data in a temporal period\n",
+ "track_df20 = track_df.loc[lambda track_df:track_df['time']>'2020-01-01-T00:00:00,:']\n",
+ "track_df20"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "track_df20.plot(figsize=(8, 10))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Generating single tracks"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " time | \n",
+ " geometry | \n",
+ " GPS Altitude.value | \n",
+ " GPS Altitude.unit | \n",
+ " GPS Bearing.value | \n",
+ " GPS Bearing.unit | \n",
+ " Throttle Position.value | \n",
+ " Throttle Position.unit | \n",
+ " Speed.value | \n",
+ " ... | \n",
+ " sensor.constructionYear | \n",
+ " sensor.manufacturer | \n",
+ " track.appVersion | \n",
+ " track.touVersion | \n",
+ " O2 Lambda Voltage ER.value | \n",
+ " O2 Lambda Voltage ER.unit | \n",
+ " MAF.value | \n",
+ " MAF.unit | \n",
+ " O2 Lambda Voltage.value | \n",
+ " O2 Lambda Voltage.unit | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 5e8baea465b80c5d6b4dbfbf | \n",
+ " 2020-04-06T20:43:35 | \n",
+ " POINT (7.65079 51.95400) | \n",
+ " 100.237808 | \n",
+ " m | \n",
+ " 337.001680 | \n",
+ " deg | \n",
+ " 16.283688 | \n",
+ " % | \n",
+ " 6.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 5e8baea465b80c5d6b4dbfc1 | \n",
+ " 2020-04-06T20:43:40 | \n",
+ " POINT (7.65079 51.95412) | \n",
+ " 102.772222 | \n",
+ " m | \n",
+ " 11.636667 | \n",
+ " deg | \n",
+ " 17.920277 | \n",
+ " % | \n",
+ " 14.260606 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 5e8baea465b80c5d6b4dbfc2 | \n",
+ " 2020-04-06T20:43:45 | \n",
+ " POINT (7.65083 51.95435) | \n",
+ " 104.020541 | \n",
+ " m | \n",
+ " 6.089730 | \n",
+ " deg | \n",
+ " 16.000000 | \n",
+ " % | \n",
+ " 23.999999 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 5e8baea465b80c5d6b4dbfc3 | \n",
+ " 2020-04-06T20:43:50 | \n",
+ " POINT (7.65086 51.95463) | \n",
+ " 103.999999 | \n",
+ " m | \n",
+ " 4.503939 | \n",
+ " deg | \n",
+ " 16.000000 | \n",
+ " % | \n",
+ " 21.000001 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 5e8baea465b80c5d6b4dbfc4 | \n",
+ " 2020-04-06T20:43:55 | \n",
+ " POINT (7.65090 51.95480) | \n",
+ " 104.000001 | \n",
+ " m | \n",
+ " 7.967200 | \n",
+ " deg | \n",
+ " 16.000000 | \n",
+ " % | \n",
+ " 3.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 1283 | \n",
+ " 5e8baea465b80c5d6b4dc4c3 | \n",
+ " 2020-04-06T22:31:25 | \n",
+ " POINT (8.79894 53.07385) | \n",
+ " 54.000001 | \n",
+ " m | \n",
+ " 0.000000 | \n",
+ " deg | \n",
+ " 15.000000 | \n",
+ " % | \n",
+ " 0.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1284 | \n",
+ " 5e8baea465b80c5d6b4dc4c4 | \n",
+ " 2020-04-06T22:31:30 | \n",
+ " POINT (8.79894 53.07385) | \n",
+ " 54.000000 | \n",
+ " m | \n",
+ " 0.000000 | \n",
+ " deg | \n",
+ " 16.090625 | \n",
+ " % | \n",
+ " 0.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1285 | \n",
+ " 5e8baea465b80c5d6b4dc4c5 | \n",
+ " 2020-04-06T22:31:35 | \n",
+ " POINT (8.79894 53.07385) | \n",
+ " 54.000001 | \n",
+ " m | \n",
+ " 0.000000 | \n",
+ " deg | \n",
+ " 15.000000 | \n",
+ " % | \n",
+ " 0.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1286 | \n",
+ " 5e8baea465b80c5d6b4dc4c6 | \n",
+ " 2020-04-06T22:31:40 | \n",
+ " POINT (8.79893 53.07385) | \n",
+ " 54.999999 | \n",
+ " m | \n",
+ " 136.499998 | \n",
+ " deg | \n",
+ " 15.000000 | \n",
+ " % | \n",
+ " 0.000000 | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1287 | \n",
+ " 5e8baea465b80c5d6b4dc4c7 | \n",
+ " 2020-04-06T22:31:45 | \n",
+ " POINT (8.79892 53.07385) | \n",
+ " 57.000001 | \n",
+ " m | \n",
+ " 0.408683 | \n",
+ " deg | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1288 rows × 54 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " id time geometry \\\n",
+ "0 5e8baea465b80c5d6b4dbfbf 2020-04-06T20:43:35 POINT (7.65079 51.95400) \n",
+ "1 5e8baea465b80c5d6b4dbfc1 2020-04-06T20:43:40 POINT (7.65079 51.95412) \n",
+ "2 5e8baea465b80c5d6b4dbfc2 2020-04-06T20:43:45 POINT (7.65083 51.95435) \n",
+ "3 5e8baea465b80c5d6b4dbfc3 2020-04-06T20:43:50 POINT (7.65086 51.95463) \n",
+ "4 5e8baea465b80c5d6b4dbfc4 2020-04-06T20:43:55 POINT (7.65090 51.95480) \n",
+ "... ... ... ... \n",
+ "1283 5e8baea465b80c5d6b4dc4c3 2020-04-06T22:31:25 POINT (8.79894 53.07385) \n",
+ "1284 5e8baea465b80c5d6b4dc4c4 2020-04-06T22:31:30 POINT (8.79894 53.07385) \n",
+ "1285 5e8baea465b80c5d6b4dc4c5 2020-04-06T22:31:35 POINT (8.79894 53.07385) \n",
+ "1286 5e8baea465b80c5d6b4dc4c6 2020-04-06T22:31:40 POINT (8.79893 53.07385) \n",
+ "1287 5e8baea465b80c5d6b4dc4c7 2020-04-06T22:31:45 POINT (8.79892 53.07385) \n",
+ "\n",
+ " GPS Altitude.value GPS Altitude.unit GPS Bearing.value \\\n",
+ "0 100.237808 m 337.001680 \n",
+ "1 102.772222 m 11.636667 \n",
+ "2 104.020541 m 6.089730 \n",
+ "3 103.999999 m 4.503939 \n",
+ "4 104.000001 m 7.967200 \n",
+ "... ... ... ... \n",
+ "1283 54.000001 m 0.000000 \n",
+ "1284 54.000000 m 0.000000 \n",
+ "1285 54.000001 m 0.000000 \n",
+ "1286 54.999999 m 136.499998 \n",
+ "1287 57.000001 m 0.408683 \n",
+ "\n",
+ " GPS Bearing.unit Throttle Position.value Throttle Position.unit \\\n",
+ "0 deg 16.283688 % \n",
+ "1 deg 17.920277 % \n",
+ "2 deg 16.000000 % \n",
+ "3 deg 16.000000 % \n",
+ "4 deg 16.000000 % \n",
+ "... ... ... ... \n",
+ "1283 deg 15.000000 % \n",
+ "1284 deg 16.090625 % \n",
+ "1285 deg 15.000000 % \n",
+ "1286 deg 15.000000 % \n",
+ "1287 deg NaN NaN \n",
+ "\n",
+ " Speed.value ... sensor.constructionYear sensor.manufacturer \\\n",
+ "0 6.000000 ... 2007 Dodge \n",
+ "1 14.260606 ... 2007 Dodge \n",
+ "2 23.999999 ... 2007 Dodge \n",
+ "3 21.000001 ... 2007 Dodge \n",
+ "4 3.000000 ... 2007 Dodge \n",
+ "... ... ... ... ... \n",
+ "1283 0.000000 ... 2007 Dodge \n",
+ "1284 0.000000 ... 2007 Dodge \n",
+ "1285 0.000000 ... 2007 Dodge \n",
+ "1286 0.000000 ... 2007 Dodge \n",
+ "1287 NaN ... 2007 Dodge \n",
+ "\n",
+ " track.appVersion track.touVersion O2 Lambda Voltage ER.value \\\n",
+ "0 NaN NaN NaN \n",
+ "1 NaN NaN NaN \n",
+ "2 NaN NaN NaN \n",
+ "3 NaN NaN NaN \n",
+ "4 NaN NaN NaN \n",
+ "... ... ... ... \n",
+ "1283 NaN NaN NaN \n",
+ "1284 NaN NaN NaN \n",
+ "1285 NaN NaN NaN \n",
+ "1286 NaN NaN NaN \n",
+ "1287 NaN NaN NaN \n",
+ "\n",
+ " O2 Lambda Voltage ER.unit MAF.value MAF.unit O2 Lambda Voltage.value \\\n",
+ "0 NaN NaN NaN NaN \n",
+ "1 NaN NaN NaN NaN \n",
+ "2 NaN NaN NaN NaN \n",
+ "3 NaN NaN NaN NaN \n",
+ "4 NaN NaN NaN NaN \n",
+ "... ... ... ... ... \n",
+ "1283 NaN NaN NaN NaN \n",
+ "1284 NaN NaN NaN NaN \n",
+ "1285 NaN NaN NaN NaN \n",
+ "1286 NaN NaN NaN NaN \n",
+ "1287 NaN NaN NaN NaN \n",
+ "\n",
+ " O2 Lambda Voltage.unit \n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "2 NaN \n",
+ "3 NaN \n",
+ "4 NaN \n",
+ "... ... \n",
+ "1283 NaN \n",
+ "1284 NaN \n",
+ "1285 NaN \n",
+ "1286 NaN \n",
+ "1287 NaN \n",
+ "\n",
+ "[1288 rows x 54 columns]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# filter out unique track id\n",
+ "track_id = track_df20['track.id'].unique()\n",
+ "tracks = []\n",
+ "# store single tracks\n",
+ "for i in track_id:\n",
+ " some_track=track_df20[track_df20['track.id']==i]\n",
+ " tracks.extend([some_track])\n",
+ "tracks[0]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Generate data for pathlayer"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " track.id | \n",
+ " track.begin | \n",
+ " track.end | \n",
+ " track.length | \n",
+ " sensor.fuelType | \n",
+ " sensor.constructionYear | \n",
+ " sensor.manufacturer | \n",
+ " path | \n",
+ " color | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 5e8baea465b80c5d6b4dbfbd | \n",
+ " 2020-04-06T20:43:35Z | \n",
+ " 2020-04-06T22:31:45Z | \n",
+ " 169.237435 | \n",
+ " gasoline | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " [[7.650794616923975, 51.954004035200796], [7.6... | \n",
+ " (5, 19, 28) | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 5e8baea365b80c5d6b4db395 | \n",
+ " 2020-04-06T13:22:10Z | \n",
+ " 2020-04-06T14:49:10Z | \n",
+ " 142.209935 | \n",
+ " gasoline | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " [[8.547851458544846, 52.951931982446574], [8.5... | \n",
+ " (22, 153, 139) | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 5e6b28e377e02d42aa7d0fdf | \n",
+ " 2020-03-12T17:43:10Z | \n",
+ " 2020-03-12T17:54:29Z | \n",
+ " 4.821775 | \n",
+ " diesel | \n",
+ " 2012 | \n",
+ " BMW | \n",
+ " [[7.651782336187098, 51.93495048766459], [7.65... | \n",
+ " (166, 21, 241) | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 5e6a934f77e02d42aa7972ee | \n",
+ " 2020-03-12T09:04:50Z | \n",
+ " 2020-03-12T09:19:31Z | \n",
+ " 8.872236 | \n",
+ " diesel | \n",
+ " 2012 | \n",
+ " BMW | \n",
+ " [[7.652008193297737, 51.953823353214716], [7.6... | \n",
+ " (11, 45, 35) | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 5e8b930965b80c5d6b4d7ccf | \n",
+ " 2020-03-07T12:33:15Z | \n",
+ " 2020-03-07T12:50:00Z | \n",
+ " 11.969578 | \n",
+ " gasoline | \n",
+ " 2018 | \n",
+ " Volkswagen | \n",
+ " [[7.64068925342399, 51.95732784163833], [7.641... | \n",
+ " (125, 138, 17) | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 5e8b930a65b80c5d6b4d7f2b | \n",
+ " 2020-03-07T08:45:25Z | \n",
+ " 2020-03-07T09:00:33Z | \n",
+ " 10.938464 | \n",
+ " gasoline | \n",
+ " 2018 | \n",
+ " Volkswagen | \n",
+ " [[7.777017871693869, 51.98788788463152], [7.77... | \n",
+ " (182, 162, 132) | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 5e42ccb63965f3689459b871 | \n",
+ " 2020-02-03T17:11:48Z | \n",
+ " 2020-02-03T17:29:25Z | \n",
+ " 9.308336 | \n",
+ " gasoline | \n",
+ " 2019 | \n",
+ " Ford | \n",
+ " [[7.656319815305157, 51.93630087949337], [7.65... | \n",
+ " (132, 199, 87) | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 5e24ca2a63c90936dc7b4312 | \n",
+ " 2020-01-19T18:15:23Z | \n",
+ " 2020-01-19T19:50:01Z | \n",
+ " 161.712887 | \n",
+ " gasoline | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " [[7.652897245590533, 51.95421742650057], [7.65... | \n",
+ " (247, 163, 199) | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 5e24ca2463c90936dc7b2d94 | \n",
+ " 2020-01-17T15:58:38Z | \n",
+ " 2020-01-17T16:06:21Z | \n",
+ " 1.152504 | \n",
+ " gasoline | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " [[7.6463266040035, 51.95539490559379], [7.6463... | \n",
+ " (167, 139, 236) | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 5e24ca2563c90936dc7b32bb | \n",
+ " 2020-01-17T15:10:14Z | \n",
+ " 2020-01-17T15:25:12Z | \n",
+ " 6.931139 | \n",
+ " gasoline | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " [[7.674832880184066, 52.00732622926195], [7.67... | \n",
+ " (220, 193, 147) | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 5e5e5ecd77e02d42aa94ee1c | \n",
+ " 2020-01-09T12:12:53Z | \n",
+ " 2020-01-09T12:23:16Z | \n",
+ " 2.986634 | \n",
+ " gasoline | \n",
+ " 2000 | \n",
+ " VW | \n",
+ " [[7.65026072181028, 51.94107696873941], [7.650... | \n",
+ " (167, 208, 252) | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 5e4a353b3965f368945da831 | \n",
+ " 2020-01-08T09:16:45Z | \n",
+ " 2020-01-08T09:30:37Z | \n",
+ " 9.129420 | \n",
+ " diesel | \n",
+ " 2012 | \n",
+ " BMW | \n",
+ " [[7.6020395805890315, 51.96762650870718], [7.6... | \n",
+ " (225, 135, 42) | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 5e1ecec31126d80318bfac5a | \n",
+ " 2020-01-05T16:07:13Z | \n",
+ " 2020-01-05T18:05:50Z | \n",
+ " 171.928734 | \n",
+ " gasoline | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " [[7.653771777296277, 51.972339185734185], [7.6... | \n",
+ " (211, 224, 218) | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 5e1eceab1126d80318bf9f7f | \n",
+ " 2020-01-05T15:52:01Z | \n",
+ " 2020-01-05T16:00:01Z | \n",
+ " 2.341898 | \n",
+ " gasoline | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " [[7.652863232019939, 51.957484114542815], [7.6... | \n",
+ " (253, 56, 41) | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 5e10ec059115b85a123190d0 | \n",
+ " 2020-01-04T19:36:04Z | \n",
+ " 2020-01-04T19:40:06Z | \n",
+ " 1.050231 | \n",
+ " gasoline | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " [[7.645364547902668, 51.955026043641425], [7.6... | \n",
+ " (164, 175, 244) | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 5e10ec089115b85a12319686 | \n",
+ " 2020-01-04T15:24:53Z | \n",
+ " 2020-01-04T15:40:45Z | \n",
+ " 7.494835 | \n",
+ " gasoline | \n",
+ " 2007 | \n",
+ " Dodge | \n",
+ " [[7.652154746679927, 51.953997225623596], [7.6... | \n",
+ " (182, 84, 63) | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " track.id track.begin track.end \\\n",
+ "0 5e8baea465b80c5d6b4dbfbd 2020-04-06T20:43:35Z 2020-04-06T22:31:45Z \n",
+ "1 5e8baea365b80c5d6b4db395 2020-04-06T13:22:10Z 2020-04-06T14:49:10Z \n",
+ "2 5e6b28e377e02d42aa7d0fdf 2020-03-12T17:43:10Z 2020-03-12T17:54:29Z \n",
+ "3 5e6a934f77e02d42aa7972ee 2020-03-12T09:04:50Z 2020-03-12T09:19:31Z \n",
+ "4 5e8b930965b80c5d6b4d7ccf 2020-03-07T12:33:15Z 2020-03-07T12:50:00Z \n",
+ "5 5e8b930a65b80c5d6b4d7f2b 2020-03-07T08:45:25Z 2020-03-07T09:00:33Z \n",
+ "6 5e42ccb63965f3689459b871 2020-02-03T17:11:48Z 2020-02-03T17:29:25Z \n",
+ "7 5e24ca2a63c90936dc7b4312 2020-01-19T18:15:23Z 2020-01-19T19:50:01Z \n",
+ "8 5e24ca2463c90936dc7b2d94 2020-01-17T15:58:38Z 2020-01-17T16:06:21Z \n",
+ "9 5e24ca2563c90936dc7b32bb 2020-01-17T15:10:14Z 2020-01-17T15:25:12Z \n",
+ "10 5e5e5ecd77e02d42aa94ee1c 2020-01-09T12:12:53Z 2020-01-09T12:23:16Z \n",
+ "11 5e4a353b3965f368945da831 2020-01-08T09:16:45Z 2020-01-08T09:30:37Z \n",
+ "12 5e1ecec31126d80318bfac5a 2020-01-05T16:07:13Z 2020-01-05T18:05:50Z \n",
+ "13 5e1eceab1126d80318bf9f7f 2020-01-05T15:52:01Z 2020-01-05T16:00:01Z \n",
+ "14 5e10ec059115b85a123190d0 2020-01-04T19:36:04Z 2020-01-04T19:40:06Z \n",
+ "15 5e10ec089115b85a12319686 2020-01-04T15:24:53Z 2020-01-04T15:40:45Z \n",
+ "\n",
+ " track.length sensor.fuelType sensor.constructionYear sensor.manufacturer \\\n",
+ "0 169.237435 gasoline 2007 Dodge \n",
+ "1 142.209935 gasoline 2007 Dodge \n",
+ "2 4.821775 diesel 2012 BMW \n",
+ "3 8.872236 diesel 2012 BMW \n",
+ "4 11.969578 gasoline 2018 Volkswagen \n",
+ "5 10.938464 gasoline 2018 Volkswagen \n",
+ "6 9.308336 gasoline 2019 Ford \n",
+ "7 161.712887 gasoline 2007 Dodge \n",
+ "8 1.152504 gasoline 2007 Dodge \n",
+ "9 6.931139 gasoline 2007 Dodge \n",
+ "10 2.986634 gasoline 2000 VW \n",
+ "11 9.129420 diesel 2012 BMW \n",
+ "12 171.928734 gasoline 2007 Dodge \n",
+ "13 2.341898 gasoline 2007 Dodge \n",
+ "14 1.050231 gasoline 2007 Dodge \n",
+ "15 7.494835 gasoline 2007 Dodge \n",
+ "\n",
+ " path color \n",
+ "0 [[7.650794616923975, 51.954004035200796], [7.6... (5, 19, 28) \n",
+ "1 [[8.547851458544846, 52.951931982446574], [8.5... (22, 153, 139) \n",
+ "2 [[7.651782336187098, 51.93495048766459], [7.65... (166, 21, 241) \n",
+ "3 [[7.652008193297737, 51.953823353214716], [7.6... (11, 45, 35) \n",
+ "4 [[7.64068925342399, 51.95732784163833], [7.641... (125, 138, 17) \n",
+ "5 [[7.777017871693869, 51.98788788463152], [7.77... (182, 162, 132) \n",
+ "6 [[7.656319815305157, 51.93630087949337], [7.65... (132, 199, 87) \n",
+ "7 [[7.652897245590533, 51.95421742650057], [7.65... (247, 163, 199) \n",
+ "8 [[7.6463266040035, 51.95539490559379], [7.6463... (167, 139, 236) \n",
+ "9 [[7.674832880184066, 52.00732622926195], [7.67... (220, 193, 147) \n",
+ "10 [[7.65026072181028, 51.94107696873941], [7.650... (167, 208, 252) \n",
+ "11 [[7.6020395805890315, 51.96762650870718], [7.6... (225, 135, 42) \n",
+ "12 [[7.653771777296277, 51.972339185734185], [7.6... (211, 224, 218) \n",
+ "13 [[7.652863232019939, 51.957484114542815], [7.6... (253, 56, 41) \n",
+ "14 [[7.645364547902668, 51.955026043641425], [7.6... (164, 175, 244) \n",
+ "15 [[7.652154746679927, 51.953997225623596], [7.6... (182, 84, 63) "
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import random\n",
+ "def color(arr):\n",
+ " colorlist = []\n",
+ " n = arr.size\n",
+ " for i in range(n):\n",
+ " colorlist.append(tuple([random.randint(0,255),random.randint(0,255),random.randint(0,255)]))\n",
+ " return colorlist\n",
+ "# generate data for pathlayer\n",
+ "unitrack={'track.id':[],'track.begin':[],'track.end':[],'track.length':[],'sensor.fuelType':[],'sensor.constructionYear':[],'sensor.manufacturer':[],'path':[]}\n",
+ "for i in tracks:\n",
+ " unitrack['track.id'].extend(i[0:1]['track.id'])\n",
+ " unitrack['track.begin'].extend(i[0:1]['track.begin'])\n",
+ " unitrack['track.end'].extend(i[0:1]['track.end'])\n",
+ " unitrack['track.length'].extend(i[0:1]['track.length'])\n",
+ " unitrack['sensor.fuelType'].extend(i[0:1]['sensor.fuelType'])\n",
+ " unitrack['sensor.constructionYear'].extend(i[0:1]['sensor.constructionYear'])\n",
+ " unitrack['sensor.manufacturer'].extend(i[0:1]['sensor.manufacturer'])\n",
+ " # convert points in path formate [[x,y]]\n",
+ " coords = i['geometry'].apply(lambda coord:[coord.x,coord.y])\n",
+ " path = [] \n",
+ " for j in coords:\n",
+ " path.append(j)\n",
+ " unitrack['path'].append(path)\n",
+ "pathdata = pd.DataFrame(unitrack)\n",
+ "# add color column for visualization\n",
+ "pathdata['color']=pd.Series(color(track_id))\n",
+ "pathdata"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Visualization with pydeck pathlayer\n",
+ "* https://github.com/uber/deck.gl/tree/master/bindings/pydeck/examples"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "'D:\\\\出國\\\\Erasmus Degree\\\\One Drive\\\\OneDrive - Universitat Jaume I\\\\Semester2\\\\Flaoting Car Project\\\\Assignment1\\\\envirocar-py\\\\examples\\\\path_layer.html'"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import pydeck as pdk\n",
+ "# set view parameters\n",
+ "view_state = pdk.ViewState(\n",
+ " longitude=7.5963592529296875,\n",
+ " latitude=51.96246168188569,\n",
+ " zoom=10,\n",
+ " min_zoom=5,\n",
+ " max_zoom=15,\n",
+ " pitch=40.5,\n",
+ " bearing=-27.36)\n",
+ "# use pathlayer\n",
+ "pathlayer = pdk.Layer(\n",
+ " type=\"PathLayer\",\n",
+ " data=pathdata,\n",
+ " pickable=True,\n",
+ " get_color='color',\n",
+ " width_scale=10,\n",
+ " width_min_pixels=2,\n",
+ " get_path=\"path\",\n",
+ " get_width=0.5,\n",
+ ")\n",
+ "# add layer, view parameters on map panels\n",
+ "r = pdk.Deck(layers=[pathlayer], initial_view_state=view_state,mapbox_key=\"pk.eyJ1Ijoic3lkbmV5bGFpIiwiYSI6ImNrM2FyODdlcTBldGszZWszMjg2czA2eDEifQ.4LfuP0PEmRPMt37x8Xpx5Q\")\n",
+ "# layout \n",
+ "r.to_html(\"path_layer.html\", iframe_width=900)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Summary Statistics"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Track number 16\n",
+ "Survey time 2020-01-04T15:24:53Z to 2020-04-06T22:31:45Z\n",
+ "Length \n",
+ " min: 1.0502307779995348 \n",
+ " max: 171.92873411934082 \n",
+ " mean 45.13037754770366\n",
+ "Car number by Manufacturer\n",
+ " Dodge 9\n",
+ " BMW 3\n",
+ " Volkswagen 2\n",
+ " Ford 1\n",
+ " VW 1\n",
+ "Car number by production year\n",
+ " 2007 9\n",
+ " 2012 3\n",
+ " 2018 2\n",
+ " 2019 1\n",
+ " 2000 1\n",
+ "Car number by fueltype\n",
+ " gasoline 13\n",
+ " diesel 3\n"
+ ]
+ }
+ ],
+ "source": [
+ "arr=pathdata['sensor.manufacturer']\n",
+ "arr.unique()\n",
+ "tol=[]\n",
+ "for i in arr.unique():\n",
+ " ta=sum(arr.str.count(i))\n",
+ " tol.append(ta)\n",
+ "print('Track number',pathdata['track.id'].size)\n",
+ "print('Survey time',pathdata['track.begin'].min(),'to',pathdata['track.end'].max())\n",
+ "print('Length','\\n','min:',pathdata['track.length'].min(),'\\n', 'max:',pathdata['track.length'].max(),'\\n','mean',pathdata['track.length'].mean())\n",
+ "print('Car number by Manufacturer')\n",
+ "for i in pathdata['sensor.manufacturer'].unique():\n",
+ " print(' ',i,sum(pathdata['sensor.manufacturer'].str.count(i)))\n",
+ "print('Car number by production year')\n",
+ "for i in pathdata['sensor.constructionYear'].unique(): \n",
+ " print(' ',i,list(pathdata['sensor.constructionYear']).count(i))\n",
+ "print('Car number by fueltype')\n",
+ "for i in pathdata['sensor.fuelType'].unique():\n",
+ " print(' ',i,sum(pathdata['sensor.fuelType'].str.count(i)))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "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.8.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}