{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ca229644-63ec-4119-83a1-d9c85f0172a4",
   "metadata": {},
   "source": [
    "# Loading track or track collection from files\n",
    "\n",
    "*tracklib* permet de charger des données GPS depuis un ou plusieurs fichiers de type CSV, GPX et dont les géométries sont sous forme de coordonnées ou au format wkt. Le timestamp, s'il existe peut-être fourni en format texte ou en time unix, les *Analytic Features* (AF) peuvent être ou non chargées et on peut aussi filtrer les données à charger. Tout ceci en spécifiant les paramètres un à un ou en passant par un template.\n",
    "\n",
    "Toutes les méthodes sont dans la classe *TrackReader* et les méthodes statiques suivant le format des données:\n",
    "<br/>\n",
    "<div class=\"alert alert-block alert-info\" style=\"padding:1em\">\n",
    "    \n",
    "```python\n",
    "  tkl.TrackReader.readFromGpx(...)\n",
    "  tkl.TrackReader.readFromCsv(...)\n",
    "  tkl.TrackReader.readFromWkt(...)\n",
    "```\n",
    "</div>\n",
    "\n",
    "<br/>\n",
    "<b>Time field</b>\n",
    "Le format du champ time peut être défini de différentes façons dans les fichiers CSV:\n",
    "\n",
    "champ texte, on spécifie le format\n",
    "\n",
    "```python\n",
    "  ObsTime.setReadFormat(\"4Y-2M-2DT2h:2m:2sZ\")\n",
    "  ObsTime.setReadFormat(\"2D/2M/4Y 2h:2m:2s\")\n",
    "```\n",
    "\n",
    "<br/>\n",
    "<b>Crs field</b>\n",
    "\n",
    "Pour les 3 méthodes d'import, vous pouvez préciser le type de coordonnées\n",
    "\n",
    "geographic coordinates\n",
    "\n",
    "```python\n",
    "    srid=\"GeoCoords\"\n",
    "    # or\n",
    "    srid = \"GEO\" \n",
    "```\n",
    "    \n",
    "or local projection (ENU or ENUCoords) \n",
    "```python\n",
    "    srid=\"ENUCoords\"\n",
    "    # or\n",
    "    srid=\"ENU\"\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1fbe5d68-4229-4b8c-a692-9ad787dbd8b4",
   "metadata": {},
   "source": [
    "## As usual, let's start by defining our environment\n",
    "\n",
    "The first task is only useful for the online notebook and import the local tracklib code source. It's not necessary if tracklib is installed from PyPI."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "60b4df98-af28-4705-98e2-72f4c3cbf227",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import sys\n",
    "\n",
    "# Import de tracklib\n",
    "module_path = os.path.abspath(os.path.join('../../../..'))\n",
    "if module_path not in sys.path:\n",
    "    sys.path.append(module_path)\n",
    "\n",
    "# Import tracklib library\n",
    "import tracklib as tkl"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4ca16e00-456c-4579-add6-66807c83cb87",
   "metadata": {},
   "source": [
    "The following two imports are necessary for the tutorial:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ff4b6b37-bfab-4117-b3fe-f2657ba70e1d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c11d75e2-609b-4b4c-89b4-b77587405a6a",
   "metadata": {},
   "source": [
    "## Example for a GPX file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "a73e5705-0f69-4a90-9e46-aa0144a6fab2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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1q5dm2L3HCBPPvmknDp1KvMvIAuRXhFKy4wJuY0x9RN3rLneclu78WnwVzKInj178vzzzzv2T58+TfHixQH4/PPP6dq1q8u6RIqipI2KFSuyatUqRo4cyZo1a6hSpQojRoxIcVbthg0bcu3aNQYPHuzR5scff6RChQqMGjVKZ+j2RGoqBdTF/l7osJV2Yp8OJxfwcHoULzulrNgSEhE5ffp0sl9befLkcWw3aNDglvvlpSgZyd9//y3t2rVzPE979uxJ1Wfbtm3JPqVImmrWrCkbNmzwwhX4FjJrdBz2ed7ypefg2TllVRESEZk3b16Klb106dKya9cuX4epKNkWm80mEydOlIIFC0pgYKC89957cv369RR94uLi5JNPPknx2fTz85OZM2d66Sp8Q4aLEFAU+xQ48639SsCz6TlJdkxZWYRERCIjI6VOnToeK3uePHlkwYIFvg5TUbI1UVFR0rVrVwGkcuXKsn79+lR9IiIipHHjximK0Y8//uiF6H1DekUoLe+EJmCfAidx3Z6/gFfS4KdkIiVKlGD9+vW8++67bsuDg4Np3749o0eP9nJkinLzULhwYSZPnszs2bM5f/48DRs25NVXX+Xy5csefe68805WrFjBsGHDCA4Odmvz5JNPMmzYsMwKO3uRmkoBm6x/tznlbU+P0mXHlNVbQs6sXLky2S+tChUqSMuWLQWQPn36SHx8vK/DVJRszfnz56Vnz54CSJkyZWTRokWp+uzbt08aNmwogOTKlSvZc9q2bVsvRO5dyISW0GVjTEHrpmGMaYB9ElIli9CkSRPOnnVdIikiIoK8efPyyiuvMGLECDp16sTFixd9FKGiZH9CQ0MZPXo0K1euJCgoiNatW/PUU08RHR3t0adChQqsWrWKoUOHEh8fT+7cualRo4ajfMGCBRhjiImJ8cIVZE3SIkL9gN+BO4wxa4AfsU8cqmQhChYsiM1mo1atWo68mTNnkidPHsaMGcPChQtp3LgxR48e9WGUipL9adKkCTt27GDw4MFMmjSJihUr8ssvvyT2EiXD39+f/v37s337dipXrsz27dt56623aNasmcOmQIECLF682FuXkLVIS3MJ+yqnlbHPoh2YnqZWdk3ZqTsuKQMGDEj2EnTRokWSN29eKVq06C0xTFRRvMH27duldu3aAkjnzp0lMjIyRftr165J69atxc/P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/P3332nyeeWVV2jYsCENGzakZMmSt9QEmYmICPv27WPOnDnMmTOHNWvWkJCQAECJEiUoVaoUAOvWrcPf35/777+funXrsnHjRmbOnIm/vz9ly5alePHi7Nixg/PnzzuOnSdPHvbs2cNtt93m9ty3EipCGYSKkJLVuXLlCp988gmfffYZxhiKFSvGkSNHUvULCwujQYMGNGzYkAYNGlC7du2btrV0/fp1VqxYwZw5c/jtt984duxYivalSpXi6aefpmTJkvz000+sWLEiRfuQkBBGjRpF9+7db0lhd4eKUAahIqRkFw4ePEjfvn2ZO3fuf/IPCAigRo0aLsJUtmzZbPtH9eTJk/z000989NFHnDt3zq1NYGAgFStWpHr16o5UsWJFlixZwueff+72nVAiefPm5b777qNNmza0adOGAgUKZNKVZE9UhDIIFSElu3Hy5Ek2bdrExo0bWbt2LcuWLfvPxypSpAgNGjRwCFOdOnXInTt3BkabMSQkJBAREcGECRP4/PPPPdrdfffdNGjQgGrVqlG9enXuuusugoKCALh48SLfffcdAwcOdHTPJaVWrVp07dqVNm3aUKVKlWwr0N5ARSiDUBFSsjsiwt69e+nduzdLly69oWP5+flRtWpVR0upYcOGlC9f3qt/jGNiYti5cyc7duxg7dq1LrNRJ6Vbt25069aN6tWre1w64+TJk7zyyitMmzbNbXmXLl145plnaNq0KSEhIRlyDbcCKkIZhIqQcjMRFxfH6tWrWbx4MR999FG6fP38/AgMDCQgIICEhASuXbsGQIECBahfv75DmOrVq0fevHlvONaEhAQOHjzIjh07HGnnzp0cPXrUo0+/fv3o168fJUq4Xa/SQVxcHGPHjqV3795uywcMGECfPn10gMENoCKUQagIKTczCQkJfPbZZwwePDjdvnnz5iUkJITAwEAAx3BmYwyVKlVyebdUsWJF/Pw8fxN//vx5R+sm8d/du3dz5coVjz6hoaE899xzdOzYkcaNGzvi8MShQ4eYN2+eR+EZOXIkL774IgEBAWm4eiU1VIQyCBUh5VZARFi5ciWffPIJCxYs+M/HqVSpEkFBQQQEBHDw4EFiYmIAu2DUr1+fevXqkSdPHg4ePEhERAQRERGcPn3a5Rj+/v5UrFiR06dPc+bMGUd+YGAgTZs2pUOHDrRv357y5cuTEhcvXmT58uUsWLCA0aNHu7UZPXo0PXr0uKW/58ksVIQyCBUh5Vbj9OnTREZGcuLECU6ePMmRI0eYM2cOu3bt8noshQsXpn379nTo0IF77rmH0NBQj7Y2m43t27ezcOFCFi5c6HFYdXh4ONOnT6dgwYKZFbaCilCGoSKkKK6ICH/99Re///47M2bMYMOGDTd0vKCgIPLnz++SihUrxsMPP0yrVq1SbKWcOnWKRYsWOWJJiTFjxvDcc89pd5uXUBHKIFSEFCV1YmJiWL9+PWvWrGHNmjWsXLky1bntnPH393c7LDo4OJgiRYpQtGhRihQpQmxsrGOZ7LRQtWpVvvjiC1q1aqXDqb2MilAGoSKkKOknLi7OMYQ6UZiOHz/u0d6TCP1XunbtymuvvUbNmjUz7JhK+lARyiBUhBTlxhERjh07xpo1axzCtGPHjmStpWLFilGvXj3HoIWkBAcH89xzz9GpUydCQkI4efKkI504cYJChQrRq1cvypYt661LUzyQ5UTIGOMPbAaOi0gHY0wN4BsgGIgHXhKRjW78XgWew7407i7gaRG5Zoz5HOgIxAIHrfxzxpggYCxQB7ABfUVkuXWsrsBg61gngG4icjaluFWEFCVzuHTpEhs2bHAI07p167hw4YKjPDQ0lJYtW9KmTRtat26twpLNyIoi1A+7MIRaIrQI+FJE5htj7gUGikh4Ep8SwGqgkohcNcZMA+aJyARjTGtgqYjEG2M+BRCR140xvYA6IvK0MaYIMB+oi33hvhPWsc4aYz4DrojIeynFrSKkKN4hISGBP//8ky1btlC+fHnq16+vgwiyMekVoUz9nzbGlATaAx8C/axsARLHW+bFLhCeYstpjIkDQhLtRMR5reP1wEPWdiVgiWUTZYw5h138tgEGyGWM+cc694EbvTZFUTIGf39/qlatStWqVX0diuIDMnt57+HAQOzdY4m8AnxujDkGDAUGJXUSkeNW2VHgJHA+ifgk8gz2Fg/ADqCzMSbAGFMWqA3cJiJxQE/sXXonsIvVeHfBGmN6GGM2G2M2O38spyiKomQOmSZCxpgOQJSIbElS1BN4VURuA17FjSAYY/IDnYGyQBj2Vky3JDZvYn+nNMnK+h6IxP7+aTiwFog3xgRa56xpHWsnboQPQES+FZE6IlKncOHC6b5mRVEUJX1kZkuoMdDJGHMEmAq0MMb8BHQHZlo2vwD13Pi2Ag6LyBmrJTMTaJRYaIzpDnQAHhfrpZaIxIvIqyJSQ0Q6A/mA/UANq/ygZTvN+ViKoiiK78g0ERKRQSJSUkTKAI9iH0zQDXuXWDPLrAV2oUjKUaCBMSbE2L80awnsBTDGtAVeBzqJiGOWQ8s2l7V9DxAvIn8Cx4FKxpjEps09icdSFEVRfIsvhqA8D3xljAkArgE9AIwxYcA4EblXRDYYY6YDW7F3uW0DvrX8vwZyAH9YX0KvF5EXgSLAQmOMDbvwPAEgIieMMUOAldYgh7+Bp7xypYqiKEqK6MeqHtAh2oqiKOknvUO0M3t0nKIoiqJ4REVIURRF8RkqQoqiKIrPUBFSFEVRfIaKkKIoiuIzVIQURVEUn6EipCiKovgMFSFFURTFZ6gIKYqiKD5DRUhRFEXxGTptjweMMWewzzOXXgoBKS4d7iM0rvSRVeOCrBubxpU+bta4SotImtfCURHKYIwxm9Mzb5K30LjSR1aNC7JubBpX+tC47Gh3nKIoiuIzVIQURVEUn6EilPF8m7qJT9C40kdWjQuybmwaV/rQuNB3QoqiKIoP0ZaQoiiK4jNUhBRFURTfISK3dAJuA5YBe4E9QN8UbOsCCcBDTnlHgF3AdmCzU/57wHErfztwr5VfBrjqlP+Nk09t61gHgO+9HNfjTnnbARtQwypbDkRY+XuA1Rkdl1XW2zrPHuAzp/xB1j2JANp48355igu4B9hi+WwBWjjZO9+v7UANL8dWBh/WsRTi8mkdA352OvcRYHtWqGOe4iLtdcyr94u0168RWK98Uko+FwFfJ6A4UMvazgP8BVRyY+cPLAXmufkPLOTG/j1ggJv8MsBuD7FsBBoCxjrXy96KK4lNVeBQkgpfJ5PvV3NgMZDD2i9i/VsJ2AHkAMoCBwF/L94vT3HVBMKs7SrAcXf3y0f3zNd1zG1cvq5jSXy/AN7JCnUshbjSVMd8cL/SWr/mA+1SOq6IaHeciJwUka3W9kXsvyZKuDHtDcwAojIjDmNMcSBURNaJ/X/zO+wPqi/i6gpMcVeQiferJ/CJiFy3jp3o1xmYKiLXReQw9l9Y9bx4v9zGJSLbROSEZbMHCDbG5HB3AB/cM7f4+p4lwRd1DABjjAEedjq/r+uY27jSWsd8cL882SW9Xz8C96V2/FtehJwxxpTB/utjQ5L8EsD9wDdu3ARYZIzZYozpkaTsZWPMTmPM98aY/E75ZY0x24wxK4wxTay8EkCkk02klefNuBJ5hOQV7v+MMduNMW9blTKj47oTaGKM2WDdl7pWfgngmJNd4n3x1v3yFJczDwLbEv/oWiS7X16OzZd1LC33zBd1LJEmwGkR2W/t+7qOeYrLmTTVMS/Gla76lSKpNZVulQTkxt7v+oCbsl+ABtb2BFybsonN5SLYm/RNrf2i2Ju/fsCHwPdWfg6goLVdG3vlD8XeV7vY6bhNgNneisvJrz6wK0leCfm3qb8IeDIT4tqN1YcM1AMOW9ujgG5O/uOxP5Deul9u43Lyq4y9++aOlO5XJtUxT/fM13UstXvmkzrmVD4G6O+079M65imu9NYxL96vdNWvpLEkiy01g1shAYHAQqCfh/LD2PtNjwCXsDdn73Nj9x7pfw+0HKiDvV93n1N+V+zNf6/GBXwJDE7hXj0FjM7ouIAFQLhT2UGgMPYXxoOc8hdi73P2yv3yFJe1XRJ7/3vjVO7X15lRx1KKzZd1LLW4fFXHrP0A4DRQ0inPp3XMU1zprGNeu1/prF9jPfk57FIzuNkT9l9rPwLD02g/AetXBJALyOO0vRZoa+0Xd/J5FXufM9j/sCa+9Lwd+0i1Atb+JqAB/77UW+KtuKx9P+xN6NuTVMJC1nYgMB1YnwlxvQj8z9q+E/uvK4P9V6DzS+NDTvfPG/fLU1z5rLgeTHJcd/frxUyqY55i83UdcxuXr+uYldcWWJHE36d1LIW40lPHvHm/0lO/7k0tngCUxsATwC5jzHYrbzBQCkBE3PWhJlIU+NXqjg0AJovIAqvsM2NMDez9rUeAF6z8psD/jDHx2IdKvigi0VZZT+wVJCf2oY9tgcJeiisxtkgROeSUlwNYaIwJxN6N9yf27pSQDI7re+B7Y8xuIBboLvZavccYM806bzzQS0QSLB9v3C+3cRljXgbKAW8bY962bFsDl5Pcr8VW7GPI+DrmKTZf1zFP/5fg2zoG8ChJ3kWJiK/rmNu4gLTWMa/eL9L+N2y+lVJEp+1RFEVRfIaOjlMURVF8hoqQoiiK4jNUhBRFURSfoSKkKIqi+AwVIUVRFMVnqAgpSiZijLmUgccabg2/TpofboyZcwPHXexh+iZFyXRUhBQlG2CMKYB92pWVmXD4icBLmXBcRUkVFSFF8QLGzufGmN3GmF3GmEes/HBjzHJjzHRjzD5jzCTnCU+deAj7dDiJx2tr2a8GHnDKz2XsE9NusiaY7Gzlhxhjphn7xLU/W5OL1rHcfsc+xYqieB2dMUFRvMMD2Be3qw4UAjYZYxJbNTWxTx1zAliDfRaP1Un8G2OfngVjTDD2OcxaYF924GcnuzeBpSLyjDEmH7DRGLMY+5fsMSJSzRhTBfvX/wCISIwxJocxpqCI/JNhV6woaUBbQoriHe4GpohIgoicBlZgn3UYYKOIRIqIDbs4lHHjXxw4Y23fBRwWkf3WdDg/Odm1Bt6wpm9ZDgRjn77lbmAqgIjsBnYmOX4UEHYD16co/wltCSmKd3DXxZaI8xoxCbh/Lq9iF5REPM23ZbBPeBnhkum+i8+ZYOsciuJVtCWkKN5hJfCIMcbfGFMY+ySQG9Phvxf7ZJYA+7AvKnaHte/8Pmch0NtpkbOaVv5q7KtjYoyphLVCqLVvgGLYJ7RVFK+iIqQo3uFX7F1gO4ClwEAROZUO/7lAOICIXAN6AHOtgQl/O9m9j316/53WLNbvW/mjsc/+vBN43YrlvFVWG1gvIvH/4boU5YbQWbQVJZtgCU4HETn3H3z9gUARuWa1oJYAd4pIrDHmK+B3EVmSsRErSuroOyFFyT70xz7I4Nx/8A0Blllr0Bigp4jEWmW7VYAUX6EtIUVRFMVn6DshRVEUxWeoCCmKoig+Q0VIURRF8RkqQoqiKIrPUBFSFEVRfMb/AxHC7T/mhV5kAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "tkl.ObsTime.setReadFormat(\"4Y-2M-2DT2h:2m:2sZ\")\n",
    "resource_path = '../../../../data/gpx/'\n",
    "filepath = os.path.join(resource_path, 'activity_5807084803.gpx')\n",
    "tracks = tkl.TrackReader.readFromGpx(filepath)\n",
    "tracks[0].plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea34ad44-9501-4d5e-88d3-1b87e7a97de7",
   "metadata": {},
   "source": [
    "## Example for a CSV file\n",
    "\n",
    "- pas de champ time, -1 \n",
    "\n",
    "    idT = -1\n",
    "\n",
    "- Timestamp is in milliseconds\n",
    "\n",
    "```python\n",
    "    PATH = '/home/marie-dominique/DATA/GPX/MOPSI/0/'\n",
    "    dateInitiale = '1970-01-01 00:00:00'\n",
    "    collection = reader.readFromCsv(path=PATH, id_E=1, id_N=0, id_T=2, \n",
    "                                      srid=\"GeoCoords\",\n",
    "                                      DateIni = GPSTime.readTimestamp(dateInitiale),\n",
    "                                      selector = s,\n",
    "                                      separator = ' ', verbose = True)\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "7cdec5e2-f076-4b0a-be9d-9946342369da",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "tkl.ObsTime.setReadFormat(\"4Y-2M-2D 2h:2m:2s\")\n",
    "resource_path = '../../../../data'\n",
    "filepath = os.path.join(resource_path, 'trace10_mm.dat')\n",
    "track = tkl.TrackReader.readFromCsv(filepath, 2, 3, -1, 1, h=1)\n",
    "track.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "747397e5-6de0-4d0c-ac0c-f63b164cd629",
   "metadata": {},
   "source": [
    "## Example for a CSV file with a geometry structured in WKT \n",
    "\n",
    "track is associated with a linestring"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "dc4f65ec-7727-4f21-9c83-362e0c496e7a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "resource_path = '../../../../data/wkt'\n",
    "csvpath = os.path.join(resource_path, 'iti.wkt')\n",
    "TRACES = tkl.TrackReader.readFromWkt(csvpath, id_geom=0, separator=\"#\", h=1, doublequote=True)\n",
    "TRACES.plot('k-')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb0763bc-1077-47f0-be9c-1ffcd3ab974a",
   "metadata": {},
   "source": [
    "## If you have a list of CVS files in a folder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "79b60c5a-d9e8-400c-918d-b2b464ff42c0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2  CSV tracks loaded\n"
     ]
    }
   ],
   "source": [
    "tkl.ObsTime.setReadFormat(\"2D/2M/4Y 2h:2m:2s\")\n",
    "resource_path = '../../../../data/test/csv'\n",
    "collection = tkl.TrackReader.readFromCsv(resource_path, 1, 2, -1, -1)\n",
    "print (collection.size(), ' CSV tracks loaded')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5c26e7ad-a146-4580-9245-03d5abc21bae",
   "metadata": {},
   "source": [
    "## If you have a list of GPX files in a folder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "1231bc70-026d-4cac-9213-6177501232c0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2  GPX tracks loaded\n"
     ]
    }
   ],
   "source": [
    "resource_path = '../../../../data/gpx/geo'\n",
    "tkl.ObsTime.setReadFormat(\"4Y-2M-2DT2h:2m:2sZ\")\n",
    "tracks = tkl.TrackReader.readFromGpx(resource_path)\n",
    "print (collection.size(), ' GPX tracks loaded')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "240e62ce-fea0-4486-8cd8-311b7d6de668",
   "metadata": {},
   "source": [
    "## Loading tracks with Analytical Features\n",
    "\n",
    "If the CVS file contains AF, to load all of them \n",
    "\n",
    "    ObsTime.setReadFormat(\"2D/2M/4Y 2h:2m:2s\")\n",
    "    chemin = os.path.join(self.resource_path, 'data/test/ecrins_interpol4.csv')\n",
    "    track = TrackReader.readFromCsv(chemin, 0, 1, 2, 3, separator=\";\",read_all=True)\n",
    "\n",
    "\n",
    "* Select tracks inside a defined bounding box\n",
    "\n",
    "\n",
    "Load a track collection by specifying and a directory in the variable 'path'.\n",
    "Timestamp is in milliseconds. Select only tracks inside a defined bounding box \n",
    "   \n",
    "   \n",
    "    from tracklib.io.TrackReader import TrackReader as reader\n",
    "    from tracklib.core.GPSTime import GPSTime\n",
    "    from tracklib.core.Coords import ENUCoords\n",
    "    import tracklib.algo.Geometrics as Geometrics\n",
    "    from tracklib.algo.Selection import Constraint\n",
    "    from tracklib.algo.Selection import TYPE_CUT_AND_SELECT, MODE_INSIDE\n",
    "    from tracklib.algo.Selection import Selector   \n",
    "   \n",
    "    Xmin = 29.72\n",
    "    Xmax = 29.77\n",
    "    Ymin = 62.585\n",
    "    Ymax = 62.615\n",
    "\n",
    "    ll = ENUCoords(Xmin, Ymin)\n",
    "    ur = ENUCoords(Xmax, Ymax)\n",
    "    bbox = Geometrics.Rectangle(ll, ur)\n",
    "\n",
    "    constraintBBox = Constraint(shape = bbox, mode = MODE_INSIDE, type=TYPE_CUT_AND_SELECT)\n",
    "    s = Selector([constraintBBox])\n",
    "\n",
    "    PATH = '/home/marie-dominique/DATA/GPX/MOPSI/0/'\n",
    "    GPSTime.setReadFormat(\"4Y-2M-2D 2h:2m:2s\")\n",
    "    dateInitiale = '1970-01-01 00:00:00'\n",
    "    collection = reader.readFromCsv(path=PATH, id_E=1, id_N=0, id_T=2, \n",
    "                                    srid=\"GeoCoords\",\n",
    "                                    DateIni = GPSTime.readTimestamp(dateInitiale),\n",
    "                                    selector = s,\n",
    "                                    separator = ' ', verbose = True)\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf9aba4c-5075-4c72-b567-f3656773960b",
   "metadata": {},
   "source": [
    "## Template\n",
    "\n",
    "First, it is necessary to define the template in resources/track_file_format\n",
    "\n",
    "    RTKLIB    , pos, 2, 1, 3, 0, -1, bb, 1, %, -999999, GEO, 4Y/2M/2D 2h:2m:2s.3z, FALSE\n",
    "\n",
    "\n",
    "Then to load the file \n",
    "\n",
    "    resource_path = '/home/glagaffe/tracklib/data/'\n",
    "    csvpath = os.path.join(resource_path, 'raw_gps.pos')\n",
    "    gps = TrackReader.readFromCsv(csvpath, \"RTKLIB\") \n",
    "    print (gps.size())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "443d6aaf-5556-4d12-86f6-90fe1470d196",
   "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.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
