{ "cells": [ { "cell_type": "markdown", "id": "72f5b746-c9ca-4b91-b876-8d27be948491", "metadata": {}, "source": [ "# Applying a band-stop Fourier filter to a geometry\n", "\n", "Sometimes, a track contains small “jagged” or “hook-shaped” sections that we want to remove. To achieve this, we apply a small band-stop filter using a Fourier transform.\n", "\n", "Two parameters must be chosen: wl_inf and wl_sup, corresponding to the lower and upper wavelength bounds (in meters) of the stop band. For example, this can be used to remove all components with wavelengths between 1 m and 5 m. The idea is to select these two parameters according to the characteristic size of the small “wavelets” or irregular patterns present in the track." ] }, { "cell_type": "markdown", "id": "72b05d20-4ddf-4054-9722-aa588884f4e1", "metadata": {}, "source": [ "## Import tracklib and matplotlib libraries" ] }, { "cell_type": "code", "execution_count": 1, "id": "2cece1e1-52a6-4127-a8bc-9b9611209442", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Code running in a no shapely environment\n" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "import matplotlib.patches as mpatches\n", "\n", "import tracklib as tkl" ] }, { "cell_type": "markdown", "id": "693cc0bb-89f7-4eaf-8d68-c4b56767f9d6", "metadata": {}, "source": [ "## Loading a track" ] }, { "cell_type": "code", "execution_count": 2, "id": "2f6ccf24-3a11-4523-8a10-55fea6582364", "metadata": {}, "outputs": [ { "data": { "image/png": "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NBti4DMIKgAA/+JySW3bSh9/LG3ebDvZVqggbdok9etnm4VGjrQrQsPrEVQAAP6rTh3pxRdtKJk8WYqNtRPRTZgg1aol9ehh1y6C1yKoAAD8X0iInR3311+lTz6xaxVlZkoffGCHNv/tb3b7Qiehg8d4LKiMGzdOrVu3Vrly5VTx9CmTT7Njxw7dcMMNKleunMLCwjR06FCdOnXKUyUBAEq6gACpSxe7+vOaNbZPS2CgtGKFvbpSu7a92nLggNOV4v94LKicPHlSt9xyi/r375/v45mZmbrhhht08uRJff/995oxY4amT5+uMWPGeKokAAByXX65HSW0Y4f05JNSeLj0+++2/0p0tO3P8vPPTldZ4nl8wrfp06dr4MCBOnz4cJ79X331lf7xj39o9+7dCg8PlyRNnTpVw4cP1/79+xUYGJjv66Wnpys9PT3nfmpqqqKjo5nwDQBwcdLT7XT/L74orV2bu79TJ9ts1KmTne4fRcLrJ3xLSEhQkyZNckKKJHXq1EmpqanauHHjWZ83fvx4hYaG5tyio6OLo1wAgL9zu6U775RWr7bT8998sx1BNH++9Pe/S40a2blZjh51utISxbGgsnfv3jwhRVLO/b179571eSNHjlRKSkrObefOnR6tEwBQwrhc0jXXSHPnSsnJ0qBBtjNuUpKd7bZGDTv7bfaq0PCo8woqI0aMkMvlOuftFw9PV+x2uxUSEpLnBgCAR8TGSi+8YIc3v/SSHe58+LD03HP2sdtukxISmPXWg84rqDz66KPatGnTOW+xsbGFeq2IiAjt27cvz77s+xEREedTFgAAnlWhgvTQQ/aqymefSe3b2+HN//mP1Lq1FBcnvf9+7uKIKDLntRZ2tWrVVK1atSJ541atWmncuHH6448/FBYWJkn6+uuvFRISokaNGhXJewAAUKQCAqQbb7S39evt6s2zZkmrVkm9eklDh0oDBkj33y9Vrep0tX7BY31UduzYobVr12rHjh3KzMzU2rVrtXbtWqWlpUmSOnbsqEaNGql3795at26d5s+fr1GjRmnAgAFyu92eKgsAgKJx2WXSW2/ZvipPPWUXR9y9W3r8cTu8+f77pT//dLpKn+ex4cl9+vTRjBkzzti/ZMkStWvXTpL022+/qX///lq6dKmCg4N11113acKECSpduvAXego7vAkAAI9KT7dNQZMn25FD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bNkys3nzZjN27FgTEhJidu3aZYzxjc+txAeVpk2b5vvY4cOHTZkyZcyHH36Ys2/Tpk1GkklISCimCi/cuc7NGPs/mo888kix1VOUhg8fbtq0aXPWx7OyskxERISZNGlSzr7Dhw8bt9ttZs+eXRwlXrCCzs0Y+z+aXbp0KZ6CPOiRRx4xderUMVlZWT7/fcvP6ednjG9/52644QZzzz335NnXrVs306tXL2OMb3/nCjo3Y3z3O3fs2DETEBBgPv/88zz7mzdvbh5//HGf+dxKdNOPJG3evFlRUVGKjY1Vr169tGPHDknSjz/+qIyMDHXo0CHn2AYNGqhmzZpKSEhwqtzzcrZzyzZr1ixVrVpVl156qUaOHKljx445VOn5+eyzz3TFFVfolltuUVhYmJo1a6Y33ngj5/Ft27Zp7969eT670NBQxcXFef1nV9C5ZVu6dKnCwsJUv3599e/fXwcOHHCg2gt38uRJvffee7rnnnvkcrn84vt2ur+eXzZf/c61bt1aixYt0q+//ipJWrdunb777jt17txZkm9/5wo6t2y++J07deqUMjMzVbZs2Tz7g4KC9N133/nM5+bzixJejLi4OE2fPl3169fXnj179OSTT+rqq6/Whg0btHfvXgUGBqpixYp5nhMeHq69e/c6U/B5ONe5VahQQT179lRMTIyioqK0fv16DR8+XElJSZo7d67TpRdo69ateu211zR48GA99thjWrVqlR5++GEFBgbqrrvuyvl8wsPD8zzPFz67gs5NkuLj49WtWzfVrl1bW7Zs0WOPPabOnTsrISFBAQEBDp9B4XzyySc6fPiw+vTpI0k+/337q7+enySf/s6NGDFCqampatCggQICApSZmalx48apV69ekuTT37mCzk3y3e9chQoV1KpVKz399NNq2LChwsPDNXv2bCUkJKhu3bq+87k5fUnHmxw6dMiEhISYN99808yaNcsEBgaecUzLli3NsGHDHKju4px+bvlZtGiRkZSnL4S3KlOmjGnVqlWefQ899JD529/+ZowxZvny5UaS2b17d55jbrnlFnPrrbcWW50XoqBzy8+WLVuMJLNw4UJPl1dkOnbsaP7xj3/k3Pe379tfzy8/vvSdmz17tqlRo4aZPXu2Wb9+vZk5c6apXLmymT59ujHGt79zBZ1bfnzpO5ecnGyuueYaI8kEBASYli1bml69epkGDRr4zOdW4pt+TlexYkXVq1dPycnJioiI0MmTJ3X48OE8x+zbt08RERHOFHgRTj+3/MTFxUnSWR/3JpGRkWrUqFGefQ0bNsxp2sr+fP46YsQXPruCzi0/sbGxqlq1qk98dpL022+/aeHChbrvvvty9vnT9y2/88uPL33nhg4dqhEjRuj2229XkyZN1Lt3bw0aNEjjx4+X5NvfuYLOLT++9J2rU6eOli1bprS0NO3cuVMrV65URkaGYmNjfeZzI6icJi0tTVu2bFFkZKRatGihMmXKaNGiRTmPJyUlaceOHWrVqpWDVV6Y088tP2vXrpWksz7uTa666iolJSXl2ffrr78qJiZGklS7dm1FRETk+exSU1O1YsUKr//sCjq3/OzatUsHDhzwic9Okt555x2FhYXphhtuyNnnT9+3/M4vP770nTt27JhKlcr7cxEQEKCsrCxJvv2dK+jc8uNr3zlJCg4OVmRkpA4dOqT58+erS5cuvvO5OX1Jx0mPPvqoWbp0qdm2bZtZvny56dChg6latar5448/jDF2uGTNmjXN4sWLTWJiomnVqtUZl+W91bnOLTk52Tz11FMmMTHRbNu2zXz66acmNjbWXHPNNU6XXSgrV640pUuXNuPGjTObN282s2bNMuXKlTPvvfdezjETJkwwFStWNJ9++qlZv3696dKli9cNuctPQed25MgRM2TIEJOQkGC2bdtmFi5caJo3b24uueQSc+LECYerL1hmZqapWbOmGT58+BmP+fL3LdvZzs/Xv3N33XWXqV69es4Q3rlz55qqVavmaZbz1e9cQefm69+5efPmma+++sps3brVLFiwwDRt2tTExcWZkydPGmN843Mr0UHltttuM5GRkSYwMNBUr17d3HbbbXnai48fP27+9a9/mUqVKply5cqZm2++2ezZs8fBigvvXOe2Y8cOc80115jKlSsbt9tt6tata4YOHeozczoYY8z//vc/c+mllxq3220aNGhgXn/99TyPZ2VlmdGjR5vw8HDjdrvNddddZ5KSkhyq9vyc69yOHTtmOnbsaKpVq2bKlCljYmJiTN++fc3evXsdrLjw5s+fbyTl+1n48vct29nOz9e/c6mpqeaRRx4xNWvWNGXLljWxsbHm8ccfN+np6TnH+Op3rqBz8/Xv3Jw5c0xsbKwJDAw0ERERZsCAAebw4cM5j/vC5+Yy5rTp9wAAALwIfVQAAIDXIqgAAACvRVABAABei6ACAAC8FkEFAAB4LYIKAADwWgQVAADgtQgqAADAaxFUAADwUqtXr9b111+vihUrqkqVKrr//vuVlpZ2zufs27dPffr0UVRUlMqVK6f4+Hht3rz5jOMSEhLUvn17BQcHKyQkRNdcc42OHz+e55gvvvhCcXFxCgoKUqVKldS1a9fzqv+JJ56Qy+XKc2vQoMF5vQZBBQAAB7Vr107Tp08/Y//u3bvVoUMH1a1bVytWrNC8efO0ceNG9enT56yvZYxR165dtXXrVn366adas2aNYmJi1KFDBx09ejTnuISEBMXHx6tjx45auXKlVq1apQcffDDPAo0fffSRevfurbvvvlvr1q3T8uXL1bNnz/M+v8aNG2vPnj05t+++++78XsDhKfwBACjR2rZta955550z9k+bNs2EhYWZzMzMnH3r1683kszmzZvzfa2kpCQjyWzYsCFnX2ZmpqlWrZp54403cvbFxcWZUaNGnbWmjIwMU716dfPmm2+es/affvrJxMfHm+DgYBMWFmbuuOMOs3///pzHx44da5o2bXrO1ygIV1QAAPBC6enpCgwMzHOVIygoSJLOelUiPT1dklS2bNmcfaVKlZLb7c55zh9//KEVK1YoLCxMrVu3Vnh4uNq2bZvnNVevXq3ff/9dpUqVUrNmzRQZGanOnTtrw4YNOcccPnxY7du3V7NmzZSYmKh58+Zp3759uvXWW/PUtHnzZkVFRSk2Nla9evXSjh07zuvfgaACAIAXat++vfbu3atJkybp5MmTOnTokEaMGCFJ2rNnT77PadCggWrWrKmRI0fq0KFDOnnypCZOnKhdu3blPGfr1q2SbP+Rvn37at68eWrevLmuu+66nL4spx8zatQoff7556pUqZLatWungwcPSpJeeeUVNWvWTM8++6waNGigZs2a6e2339aSJUv066+/SpLi4uI0ffp0zZs3T6+99pq2bdumq6++WkeOHCn8P8RFXY8BAADnZdy4cSY4ODjnVqpUKeN2u/Ps++2334wxxsyaNcuEh4ebgIAAExgYaIYMGWLCw8PNhAkTzvr6iYmJpmnTpkaSCQgIMJ06dTKdO3c28fHxxhhjli9fbiSZkSNH5nlekyZNzIgRI3LeV5KZNm1azuMnTpwwVatWNVOnTjXGGPPPf/7TlClTJk/dwcHBRpL58ssv863t0KFDJiQkpMAmpdOVPr98BwAALka/fv3yNI/06tVL3bt3V7du3XL2RUVFSZJ69uypnj17at++fQoODpbL5dILL7yg2NjYs75+ixYttHbtWqWkpOjkyZOqVq2a4uLidMUVV0iSIiMjJUmNGjXK87yGDRvmNMvkd4zb7VZsbGzOMWlpabrxxhs1ceLEM2rIfv5fVaxYUfXq1VNycvJZ6/8rggoAAMWocuXKqly5cs79oKAghYWFqW7dumd9Tnh4uCTp7bffVtmyZXX99dcX+D6hoaGSbB+RxMREPf3005KkWrVqKSoqSklJSXmO//XXX9W5c2dJNuy43W4lJSWpTZs2kqSMjAxt375dMTExkqTmzZvro48+Uq1atVS6dOHiRFpamrZs2aLevXsX6niJPioAAHitV155RatXr9avv/6qV199VQ8++KDGjx+vihUr5hzToEEDffzxxzn3P/zwQy1dujRniPL111+vrl27qmPHjpIkl8uloUOH6qWXXtJ///tfJScna/To0frll1907733SpJCQkLUr18/jR07VgsWLFBSUpL69+8vSbrlllskSQMGDNDBgwfVo0cPrVq1Slu2bNH8+fN19913KzMzU5I0ZMgQLVu2TNu3b9f333+vm2++WQEBAerRo0eh/w24ogIAgJdauXKlxo4dq7S0NDVo0EDTpk0742pEUlKSUlJScu7v2bNHgwcP1r59+xQZGak777xTo0ePzvOcgQMH6sSJExo0aJAOHjyopk2b6uuvv1adOnVyjpk0aZJKly6t3r176/jx44qLi9PixYtVqVIlSbZ5avny5Ro+fLg6duyo9PR0xcTEKD4+Pmek0q5du9SjRw8dOHBA1apVU5s2bfTDDz+oWrVqhf43cBljzHn/ywEAABQDmn4AAIDXIqgAAACvRVABAABei6ACAAC8FkEFAAB4LYIKAADwWgQVAADgtQgqAADAaxFUAACA1yKoAAAAr0VQAQAAXuv/A1OVYebeYHLQAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# The data are loaded, for example here as a MULTILINESTRING geometry.\n", "\n", "wkt = \"MULTILINESTRING((996650.116470902 6543000.302135976,996650.4178357278 6543001.6226440435,996651.9156040812 6543003.657303663,996652.4423765505 6543005.957021008,996655.7158302434 6543010.013807501,996655.9126520777 6543010.737483848,996658.861220837 6543014.477134332), (996690.9653817471 6542986.803184385,996689.3779384803 6542988.211877296,996686.663678412 6542989.299158129,996686.4368865794 6542989.504746181,996682.4986422878 6542991.069878142,996681.0169590351 6542991.013633349,996677.8785852245 6542992.338899864,996675.4910166311 6542992.089205852,996672.9643218932 6542993.294309987,996670.1372578226 6542992.801641864,996667.8920573386 6542994.059546746,996664.9329563477 6542993.336987803,996662.6910195594 6542994.80311256,996659.9024016755 6542994.016245508,996656.9491789015 6542996.084911368,996655.1794429084 6542995.911134065,996651.0192229722 6542998.678920098,996650.116470902 6543000.302135976))\"\n", "collection = tkl.TrackReader.parsMultiWkt(wkt)\n", "\n", "collection.plot('r-')" ] }, { "cell_type": "markdown", "id": "5dea83cb-05f9-47d4-87e6-aac6327f97e3", "metadata": {}, "source": [ "## A function to filter a geometry using a band-stop Fourier filter " ] }, { "cell_type": "code", "execution_count": 3, "id": "3bc6d50d-c219-4697-b1f2-8249c3153938", "metadata": {}, "outputs": [], "source": [ "def smooth_with_Fourier_filter(geom, wl_inf, wl_sup):\n", " \n", " N = len(geom)\n", " \n", " # Signal centering\n", " geom = geom.copy()\n", " c0 = geom.getCentroid(); \n", " cx = c0.E\n", " cy = c0.N\n", " geom.translate(-cx, -cy)\n", " \n", " # Preserving endpoints\n", " ci = geom[0]\n", " cf = geom[-1]\n", " \n", " # Signal periodic extension\n", " geom_in = geom.reverse() + geom + geom.reverse()\n", "\n", " if geom_in.length() <= 0:\n", " return geom.copy()\n", " \n", " # band-stop filter\n", " signal_low_freq = tkl.filter_freq(geom_in, (1.0/wl_sup), mode=tkl.FILTER_SPATIAL, type=tkl.FILTER_LOW_PASS , dim=tkl.FILTER_XY)[N:2*N]\n", " signal_hgh_freq = tkl.filter_freq(geom_in, (1.0/wl_inf), mode=tkl.FILTER_SPATIAL, type=tkl.FILTER_HIGH_PASS, dim=tkl.FILTER_XY)[N:2*N]\n", " \n", " # High-pass / low-pass sum\n", " out = geom.copy()\n", " for i in range(N):\n", " out[i, \"x\"] = signal_low_freq[i, \"x\"] + signal_hgh_freq[i, \"x\"]\n", " out[i, \"y\"] = signal_low_freq[i, \"y\"] + signal_hgh_freq[i, \"y\"] \n", " \n", " # Endpoint recovery\n", " out[0] = ci\n", " out[-1] = cf \n", " \n", " # Recentering the signal\n", " out.translate(cx, cy)\n", " \n", " return out" ] }, { "cell_type": "markdown", "id": "eeb882d9-4e47-4e76-ae23-eca8dc409fb9", "metadata": {}, "source": [ "## Track Example Result" ] }, { "cell_type": "code", "execution_count": 4, "id": "9b4c1b08-8e73-49a4-a6f5-f4e8a4ee9392", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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wPXrMo17WFiKj8ewIiIivYtZtLFxY+BNiBlahm/DTYeKMleTpycQHZ2y4xmmmURElNVZWwNbt8riwk9eWKC50zE8sXADfvkFmDQpRcdiWBERkcE4OsoYLHd34MYDO7QucA6vYQ/MmCFdr2RiWBERkUG5usosFzlzAidv58JHxc4gAhaxVRjJwLAiIiKDK1kS2LkTsLUF9twojoFFD0Kl4L4Vw4qIiNJFzZpyu8rMDFh5sx6+LvBjst/LsCIionTTpg3www/yePa9rsl+H8OKiIjS1SefAFOnpuw9DCsiIkp3U6YAffsmf3+GFRERpTuNJmWrhzCsiIjIKCwskr8vw4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEyehTFOqpQCALx69coYpyciIhMQkwExmZAYo4RVcHAwAKBAgQLGOD0REZmQ4OBgODk5JbqPRiUn0vQsOjoaDx8+RLZs2aDRaNL79EREZAKUUggODoabmxvMzBK/K2WUsCIiIkoJFlgQEZHJY1gREZHJY1gREZHJY1gREZHJY1gRpaPw8HAUK1YMx44dS9Nxxo8fj+HDh+upVUSmj2FFlAqenp7QaDRxvpo3b57o+5YtW4bChQujdu3aaTr/559/jlWrVuHWrVtpOg5RRsGwIkql5s2b49GjRzpfGzZsSHB/pRQWLVqE/v37p/ncuXLlgoeHB5YuXZrmYxFlBAwrolSytrZG3rx5db6cnZ0T3P/UqVO4efMmWrVqpd0WEBAAjUaDTZs2oV69erC1tUX16tVx7do1nDx5EtWqVYODgwNatGiBp0+f6hyvTZs22Lhxo8E+H5EpYVgRpZPDhw+jRIkSyJYtW5zXvLy8MHnyZJw+fRoWFhbo0aMHxo0bh/nz5+Pw4cO4ceMGpkyZovOeGjVq4P79+wgICEinT0BkPAwrolTauXMnHBwcdL6mT5+e4P537tyBm5tbvK99/vnn8PDwQOnSpTFy5EicOnUKX375JerUqYPKlSujf//+8PPz03lPzLHu3Lmjvw9FZKKMMpEtUWbQqFGjOPeMcuTIkeD+oaGhsLGxife1ChUqaB/nyZMHAFC+fHmdbU+ePNF5j62tLQAgJCQkZQ0nyoAYVkSpZG9vj2LFiiV7/1y5cuHChQvxvmZpaal9HDO58/vboqOjdd7z4sULAICLi0uy20CUUfEyIFE6qVy5Mq5cuZKstXuS459//oGlpSXKli2rl+MRmTL2rIhS6e3bt/j33391tllYWCBXrlzx7t+oUSO8fv0aFy9eRLly5dJ8/sOHD2srCIkyO/asiFJp7969cHV11fmqW7dugvvnzJkTHTp0wLp16/Ry/o0bN2LAgAF6ORaRqeN6VkTp6Pz582jWrBlu3rwJBweHVB9nz549GDNmDM6fPw8LC14gocyPPSuidFShQgXMnDkTt2/fTtNx3rx5Ax8fHwYVZRnsWRERkcljz4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEwew4qIiEze/wFcfuAav34evQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5, 5))\n", "collection.plot('r-')\n", "\n", "for track in collection:\n", " s = smooth_with_Fourier_filter(track, 1, 5)\n", " s.plot('b-')\n", "\n", "plt.xlim([996650, 996685])\n", "plt.xticks([])\n", "plt.ylim([6542988, 6543000])\n", "plt.yticks([])\n", "\n", "plt.title('Band-Stop Fourier Filtering of a Track')\n", "\n", "red_patch = mpatches.Patch(color='red', label='Raw Track')\n", "blue_patch = mpatches.Patch(color='blue', label='Filtered Track')\n", "\n", "plt.legend(handles=[red_patch, blue_patch])" ] } ], "metadata": { "kernelspec": { "display_name": "Python (mon_env)", "language": "python", "name": "tracklibenv" }, "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 }