{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Add stratigraphy from GeoTOP to CPT data\n", "\n", "This example shows how stratigraphic layer boundaries from GeoTOP can easily be added to CPT data. This way, CPT parameters can easily be aggregated to get averages for geological units. For this example we are going to use a selection of CPTs in the area of the Utrecht Science Park (USP).\n", "\n", "We will first import the relevant modules and plot the locations of the CPTs in the `CptCollection`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pathlib import Path\n", "\n", "import seaborn as sns\n", "from matplotlib import pyplot as plt\n", "\n", "import geost\n", "from geost.analysis.combine import add_voxelmodel_variable\n", "from geost.bro import GeoTop\n", "\n", "cpts = geost.read_cpt_table(r'c:\\Users\\knaake\\OneDrive - Stichting Deltares\\Documents\\data\\cpt_data_usp.parquet')\n", "cpts.header.gdf.explore(style_kwds=dict(color=\"red\", weight=6))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding information from a voxelmodel\n", "Any information from voxelmodels can be added. For this example we show how to add the stratigraphy from GeoTOP to the CPTs. First we read GeoTOP directly from the OpenDaP server for the USP area." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GeoTop\n", "Data variables:\n", " strat (y, x, z) float32 240kB ...\n", "Dimensions: {'y': 12, 'x': 16, 'z': 313}\n", "Resolution (y, x, z): (100.0, 100.0, 0.5)\n" ] } ], "source": [ "geotop = GeoTop.from_opendap(data_vars=['strat'], bbox=cpts.header.gdf.total_bounds)\n", "print(geotop)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, this prints a `GeoTop` instance along with the dimensions and resolution of GeoTOP. We can use this GeoTop instance to add the variable \"strat\" to the CPT data. This adds a column \"strat\" to the data object of the `CptCollection`. Below we add the variable and print the resulting column:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 1000.0\n", "1 1000.0\n", "2 2010.0\n", "3 2010.0\n", "4 3030.0\n", " ... \n", "74725 NaN\n", "74726 NaN\n", "74727 NaN\n", "74728 NaN\n", "74729 NaN\n", "Name: strat, Length: 74632, dtype: float32\n" ] } ], "source": [ "result = add_voxelmodel_variable(cpts, geotop, \"strat\")\n", "print(result.data['strat'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that some of the resulting values are \"NaN\" (Not a Number) which occurs when a CPT falls outside of the 3D model extent. In this case, some CPTs are deeper than the maximum depth of GeoTOP. Now we could easily aggregate any CPT parameter according to the new \"strat\" variable. For example, make a boxplot of the average cone resistance (\"qc\"):" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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7LGPPvrIPv74Y9u9e3eA055x/Phxu+eee+yhhx4qUGaff/55a9OmTaH5gyHz2Sgz/1+nTp28t7fO/4113759Nnz4cLvxxhvtrbfe8s67d+9eO3z4cIFh40Dbs2ePXX311TZr1iwzKzia8frrr9u1115rc+bM8U47evSo9/bkTrrQer7pppts7ty5ZnYm78yZM+3mm2/2XnobaHl5efbRRx9Z3759bc2aNbZ69WqLjo6+4Jvpnj17HN82UlNTS922EYz7oNmFM7do0cLefPNN77zHjh2z7Oxs75C9U4q6D+bLzMx07PBB/j74m9/8psj74MMPP2yhoaGOX369ePFie++998zszN/jl7/85TkLjdNX3uXLzc21hx56yP7whz8UmP7JJ59YnTp17PDhw96TrIPtikczyoydPn3acnJy7L777rOePXtaVlaW5eXlef+xUlJSrGvXrta9e3fv9wTLFSl33HGHXX/99d7jyGd/aPXu3dtatmxpZsGTNzs72+677z678847i7Sec3JyHP+wOnDggC1dutT79cqVK71vpmdnc/r5Lvv27StwiOj22293xbaR/0Z+8uRJ1+yDZA6M/MxpaWlF2gfz59+zZ4+joxvne/L2qVOnvCM0+TcjPHXqlC1evNh7ONgJx48f956kfHbRzv+3X7ZsmSUkJBQoXXv27Am6QlNmy8zP2/CyZcusXLly9tJLL3mn5f9jrVmzxjwej61bty6QEQs4duyYZWZmFvht5NChQ1avXj3r1KlTgctVzczeeOMNu+mmmwpND7T09HTbtm2b9+m1K1euvOh6dvJus2ZnMm/durXQU3Tzt5lVq1YV+O0wJyfHXnvtNVu0aJETcW3Pnj1WrVo169mzp/cqsEOHDtkVV1wR1NvGl19+aW3btrVjx46ZWfDvg2ZkDpT8zEePHi0wPT/nufbBV1991f773/86EdfMztzFvHv37vbpp5+esxSYnfkFLb/QLF261B566CG7+uqrHRv5Ol/ms4vKsmXLrEGDBt6/x6hRo6xDhw6F7u3ktDJZZrZv327PPfdcoWPAzz33nIWEhHjP3M+3detWS0pKcuwR8Vu2bLHOnTtbkyZNLDY21ubOnevd2FauXGl169a19u3b29dff+1t2A8++KB16tTpvL8lBMKmTZusSZMm1rhxYytfvrz36o0//OEPFhISYsnJyQXmd3o9mxXMHBYWZr///e8LPNI+X/5w91133WX33XeflS9f3rGTUJcsWWKhoaF2880324ABA7znCaxcudJq1aplrVu3DrptY/369VahQgUbMWKEmf30hj99+nQLCQmx119/vcD8wbBtkDkwfp45X/57Xv7f4Vz7YP7J7YG2efNmq1q1qg0ePNj27NlT6PWzy8GpU6fsV7/6lXk8HqtYsaJj56pdLHP+el6xYoXFxsbaqVOn7IknnrDIyEhbtWpVoONeVJkrM99++61FR0ebx+OxsWPH2qFDh7yvHT9+3CZOnGgej8fGjRtnX3zxhR06dMgef/xxq1+/foHb6gfKli1brFq1avboo4/avHnzbMSIEVa+fPkCoxebNm2yxo0bW4MGDaxZs2Z2xx13WKVKlRw7yfDs3KNGjbItW7bYc889Zx6Px1JTU+3UqVM2YcIE779BMKzni2U+W/4b02effea9nNnJM/nT09Ote/fu9vrrr9sNN9xgffv29V4ps2HDBmvTpo3Vr18/aLaNDRs2WIUKFQrcht7sp/txTJs2zUJCQoJq2yBzYFwsc778D9pg2AePHTtmnTt3tt/97nfeadu2bbP169cXeO/If984ffq0DRw40KKjox27erComc3OrOPrrrvOHn30UQsLC3P8qqXzKVNl5tixY3b//ffbvffeazNmzDCPx2OjR48ucPJjbm6uvfnmm1azZk2LjY21q6++2mrXru3IoY/09HTr3LmzPfzwwwWmd+zY0Tvt7BGDGTNm2OOPP24TJ060r7/+OqBZz3bo0CFr166dPfLII95peXl51qVLF1uxYoWtX7/eUlJS7MMPP7RatWpZzZo1HV3PF8p822232YoVK2zdunUFdvKTJ0/aoEGDrFKlSo5eznz69Gk7ePCgNWzY0Pbs2WPvv/++NW/e3B544AFr1aqVDRgwwMzMXn755aDYNvbv3281a9a0Ll26ePMPGzbMunTpYvXr17ff//739sUXX9gHH3xgtWrVslq1ajm+bZDZ+cz16tWzZ555pkC27OzsoNgHT548aW3atLGvvvrKTp8+bV26dLHmzZtbpUqV7KabbvLe6dnszOfLX//6V/N4PI7ez+lSMuffg6patWpBW2TMzEJL/rncwSMkJERNmzZVtWrV9Otf/1rVq1dXnz59JEmjR49W9erVFRISov79+6tt27ZKTU1VVlaWGjVqpNq1awc876lTp3TkyBH17t1bkpSXl6eQkBDVr19f6enpkiSPx6Pc3FyVK1dOQ4YMCXjGc/F4PLrtttu8uSVp0qRJWrRokdLS0vTjjz/qmmuu0cyZM/Xll1/q22+/VXZ2thITEx1ZzxfK/PHHHystLU0//PCDkpKSNH78eLVp00YbN27U559/rk8++USJiYmOZJbObNPVq1dX8+bNtXnzZvXs2VPh4eG65557dPLkSd13332SpGHDhjmW8edatmyp3bt365///Kf+9Kc/6fTp07rxxhvVqFEjLViwQBs2bNBf//pXrVq1Srt27XJ82yCz85kbN26sBQsWaPPmzXrmmWd01VVXacOGDUGxDx45ckTbt2/XDz/8oNGjR0uS3njjDe3fv19LlizR+PHjFRUVpd69eyskJETXXXedvv/+e11xxRWuyHzjjTeqc+fOmj59uq699lrHMl+U020q0PJPgss3f/5883g8NmrUKO8hp1OnThV46KGT8k+cNfvp2SNPPfWU9e/fv8B8mZmZ3v93+goVs4J53n77bfN4PDZ//nxLT0+3ZcuWWbNmzeypp55yMGFhF8q8fPlyu/HGG73n/WRkZDh6BcLPDRgwwB5//HEzM/vtb39rVatWtcTERLv//vsLPBoiGLaNffv22YABAywiIsI6depk6enp3tf+8Y9/WPXq1e3tt992MGFhZA6Mi2WOiYmxd955x8zO7K/BsA/m5eVZnz59bOjQoXb77bfbwoULva/t3r3b+vXrZ4MGDXL8isezFTVz/kUC+Z89wazMlZl8p0+f9r6x539wjR492vbu3WuPPvqo9erVy44dOxYUb/5mBU8gGzdunHXu3Nn79ZQpU+z5558Pqp3lbLt27So0PHnHHXfYHXfc4VCii3NL5vztc/bs2fbUU0/Z7373O6tVq5Z9//339v7771uDBg1s0KBBjp7sey579+61J554wnvJ7dnbd2Jiog0ZMsShZOdH5sBwY+a1a9dahQoVzOPxFHiekZnZyJEjrV27dkHzWZLvYpnbtm0bdJdfX0iZOsx0tnLlysnMlJeXpz59+sjj8ah///768MMPtWPHDq1du1YVKlRwOqZXSEiIzEwej0cej0flypWTJD311FOaNGmS1q1bp9DQ4PznjI+PV3x8vCTJzJSTk6OKFSuqUaNGDic7P7dk9ng8kqR69erpvvvuU0xMjP7973+rXr16qlevnjwej6677jqFh4c7nLSg2NhYjRkzRpGRkZJ+2r6PHDmiatWqqWnTpg4nLIzMgeHGzM2aNdNHH32k9u3bKzk5WfXr11dSUpKkM6cLNGzYUKdPn1b58uUdTvqTi2W+6qqrlJubq5CQEIeTFpFzPSo45OXleRvzzTffbNHR0bZx40aHU51bfkt++umnbeDAgfaHP/zB8ceu++LJJ5+0uLi4AofQgl2wZ87JybG//OUvtmHDBjMLjsNJvnjyySftyiuvdOw5XL4gc2C4IfPy5cstNjbWbrzxRvvtb39r/fv3t6ioKMfuYl4Ubsx8LmW+zJidOeT06KOPmsfj8X4YBLNJkyaZx+OxqKgoR5+nc6n+/ve/25AhQ6xatWqO3xivqNyU2U1Dwj/39ttv20MPPWRVq1YN+vWcj8yB4bbMX3/9tY0fP95uvfVW+93vfueKUuDGzD9HmbEzZebPf/6z43e9LKq1a9eax+Nx9HJEX2zevNnuuusuV+V2Y2Y32rBhg/3iF79w/Hk6l4LMgeHGzGZnfrlw2y8Ybsycz2Nm5vShrmBg//98FLc4fvx4UJ3TU1SnTp0KquPGReHGzG6Uk5OjsLAwp2NcEjIHhhszI7AoMwAAwNVccpoyAADAuVFmAACAq1FmAACAq1FmAACAq1FmAACAq1FmAACAq1FmAAS1e++9V3feeaffltehQwcNHz7cb8sD4DzKDIBS4dSpU05HAOAQygyAoPDuu++qcePGioyMVLVq1XTrrbdq9OjRmjNnjv75z396nxi/bNky7dq1Sx6PRwsWLFCHDh0UERGhuXPnKj09XXfffbfq1Kmjyy67TI0bN9bbb7/t/Rn33nuvli9frpdeesm7vF27djn3lwbgF9wBGIDj9u/fr7i4OE2fPl09e/bU0aNH9b///U8DBgzQb3/7W2VmZmrWrFmSpOjoaO3bt0/16tXTFVdcoeeff15NmjRReHi4zExvv/22br31VlWuXFn/93//p0cffVSff/65WrRooYyMDHXt2lWNGjXSM888I0mqXr26ypUr5+RfH0AxhTodAAD279+v06dPq1evXoqPj5ckNW7cWJIUGRmp7Oxs1axZs9D3DR8+XL169SowbdSoUd7/HzZsmBYuXKi///3vatGihaKiohQWFqbLLrvsnMsD4E6UGQCOu+6663TLLbeocePG6tKlizp37qzevXuratWqF/y+Zs2aFfg6NzdX06ZN0zvvvKO9e/cqOztb2dnZrnwoK4Ci45wZAI4rV66cFi9erI8++kiJiYl65ZVXdNVVV2nnzp0X/L6fl5Tnn39ef/zjHzVmzBgtWbJE69evV5cuXZSTk1OS8QE4jJEZAEHB4/GodevWat26tZ566inFx8frH//4h8LCwpSbm1ukZfzvf/9Tjx491K9fP0lSXl6evv32W11zzTXeeS5leQDcgTIDwHGrV6/WJ598os6dO6tGjRpavXq1Dh06pGuuuUYnT57Uxx9/rO3bt6tatWqKioo673KuvPJKvffee1qxYoWqVq2qF154QWlpaQXKzBVXXKHVq1dr165dqlixoqKjoxUSwiA14GbswQAcV7lyZX366afq1q2bGjZsqPHjx+v5559X165d9eCDD+qqq65Ss2bNVL16dX3++efnXc6TTz6pG264QV26dFGHDh1Us2bNQjfcGzVqlMqVK6fExERVr15dqampJfy3A1DSuDQbAAC4GiMzAADA1SgzAADA1SgzAADA1SgzAADA1SgzAADA1SgzAADA1SgzAADA1SgzAADA1SgzAADA1SgzAADA1SgzAADA1SgzAADA1f4fC2RE5eMfprUAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "sns.boxplot(ax=ax, data=result.data.df, x=\"strat\", y=\"cone_resistance\", showfliers=False)\n", "ax.tick_params(axis='x', rotation=45)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each number on the x-axis represents a geological unit. These can be grouped in any way off course a user would like for further analyses. These however will not be shown in this tutorial." ] } ], "metadata": { "kernelspec": { "display_name": "default", "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.12.7" } }, "nbformat": 4, "nbformat_minor": 2 }