{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 26 Working with Well Data from the Geological Survey NRW\n", "\n", "This notebook presents the extraction of borehole data (location of wells and stratigraphy) from logs provided by the Geological Survey NRW. \n", "\n", "" ] }, { "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-17T11:21:58.167948Z", "start_time": "2021-03-17T11:21:55.976221Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING (theano.configdefaults): g++ not available, if using conda: `conda install m2w64-toolchain`\n", "C:\\Users\\ale93371\\Anaconda3\\envs\\test_gempy\\lib\\site-packages\\theano\\configdefaults.py:560: UserWarning: DeprecationWarning: there is no c++ compiler.This is deprecated and with Theano 0.11 a c++ compiler will be mandatory\n", " warnings.warn(\"DeprecationWarning: there is no c++ compiler.\"\n", "WARNING (theano.configdefaults): g++ not detected ! Theano will be unable to execute optimized C-implementations (for both CPU and GPU) and will default to Python implementations. Performance will be severely degraded. To remove this warning, set Theano flags cxx to an empty string.\n", "WARNING (theano.tensor.blas): Using NumPy C-API based implementation for BLAS functions.\n" ] } ], "source": [ "import gemgis as gg\n", "\n", "file_path ='data/26_working_with_well_data_from_GD_NRW/'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2021-03-17T11:21:58.230549Z", "start_time": "2021-03-17T11:21:58.218285Z" } }, "outputs": [], "source": [ "gg.download_gemgis_data.download_tutorial_data(filename=\"26_working_with_well_data_from_GD_NRW.zip\", dirpath=file_path)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading the Well Data\n", "\n", "The data used for GemGIS is obtained from the Geological Survey NRW. It will be used under Datenlizenz Deutschland – Namensnennung – Version 2.0 (https://www.govdata.de/dl-de/by-2-0).\n", "\n", "The PDF Files can be loaded as strings using PyPDF2. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2021-01-01T10:11:06.485271Z", "start_time": "2021-01-01T10:11:06.415431Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<00:00, 37.16it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "../../../../gemgis_data/data/26_working_with_well_data_from_GD_NRW/test_data.txt successfully saved\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/plain": [ "'Stammdaten - 2521/ 5631/ 1 - Bnum: 196747 . . Objekt / Name :B. 19 ESCHWEILER\\n\\n Bohrungs- / Aufschluß-Nr. :19\\n\\n Archiv-Nr. :\\n Endteufe [m] :70.30\\n\\n Stratigraphie der Endteufe :Karbon\\n . TK 25 :Eschweiler [TK 5103]\\n\\n Ort / Gemarkung :Eschweiler/Weißweiler\\n\\n GK Rechtswert/Hochwert [m] :2521370.00 / 5631910.00\\n\\n UTM East/North [m] :32310019.32 / 5633520.32\\n\\n Hoehe des Ansatzpunktes [mNN] :130.00\\n\\n Koordinatenbestimmung :ungeprüfte Angabe aus dem Bohrarch'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = gg.misc.load_pdf(path=file_path + 'test_data.pdf')\n", "data[:500]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Extracting Meta Data From the Well Data\n", "\n", "The meta data or 'Stammdaten' of the wells can be extracted using ``get_meta_data_df(...)``. Any duplicate wells will be removed automatically." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2020-12-17T10:07:42.149429Z", "start_time": "2020-12-17T10:07:42.105866Z" } }, "outputs": [ { "data": { "text/html": [ "
\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", " \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", " \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", "
IndexDABO No.NameNumberDepthXYZX_GKY_GK...KindProcedureConfidentialityRecord TypeLithlog VersionQualityDrilling PeriodRemarksAvailability Lithloggeometry
0GD0001DABO_196747B.19ESCHWEILER1970.3032310019.325633520.32130.002521370.005631910.00...Bohrungvertraulich, offen nach Einzelfallprüfung;Übertragung eines alten Archivbestandes1Schichtdaten von guter Qualität; genaue strati...Original-Schichtenverzeichnis liegt vorPOINT (32310019.320 5633520.320)
1GD0002DABO_196748B.16ESCHWEILER1637.6132310327.145632967.35122.002521700.005631370.00...Bohrungvertraulich, offen nach Einzelfallprüfung;Übertragung eines alten Archivbestandes1Schichtdaten von guter Qualität; genaue strati...Original-Schichtenverzeichnis liegt vorPOINT (32310327.140 5632967.350)
\n", "

2 rows × 26 columns

\n", "
" ], "text/plain": [ " Index DABO No. Name Number Depth X Y \\\n", "0 GD0001 DABO_196747 B.19ESCHWEILER 19 70.30 32310019.32 5633520.32 \n", "1 GD0002 DABO_196748 B.16ESCHWEILER 16 37.61 32310327.14 5632967.35 \n", "\n", " Z X_GK Y_GK ... Kind Procedure \\\n", "0 130.00 2521370.00 5631910.00 ... Bohrung \n", "1 122.00 2521700.00 5631370.00 ... Bohrung \n", "\n", " Confidentiality \\\n", "0 vertraulich, offen nach Einzelfallprüfung; \n", "1 vertraulich, offen nach Einzelfallprüfung; \n", "\n", " Record Type Lithlog Version \\\n", "0 Übertragung eines alten Archivbestandes 1 \n", "1 Übertragung eines alten Archivbestandes 1 \n", "\n", " Quality Drilling Period Remarks \\\n", "0 Schichtdaten von guter Qualität; genaue strati... \n", "1 Schichtdaten von guter Qualität; genaue strati... \n", "\n", " Availability Lithlog geometry \n", "0 Original-Schichtenverzeichnis liegt vor POINT (32310019.320 5633520.320) \n", "1 Original-Schichtenverzeichnis liegt vor POINT (32310327.140 5632967.350) \n", "\n", "[2 rows x 26 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = gg.misc.get_meta_data_df(data=data, \n", " name='GD')\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot Data\n", "\n", "The locations of the wells can easily be plotted using Matplotlib or the built-in GeoPandas functions." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2020-12-17T10:07:42.306548Z", "start_time": "2020-12-17T10:07:42.150423Z" } }, "outputs": [ { "data": { "image/png": "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169fr1mzZik/P7/E8e3bt+urr77Sa6+9poEDB0qSBg8erN69e2vBggXFQkHnzp0VGhpabt0HDhzQ5s2bS/yt/H333adnn31WS5cu1aRJk6zbZ82apd27d+vVV1/VQw89ZN0+dOhQ9erVSxMnTtT06dPLPWNRmnr16snf319JSUnFxvbv3697771XiYmJ2rdvn00oSE9PV3p6urU/RVq1alVsW1Xx9va+prlK23/QoEHq16+fFixYUKFQwJoCAACAG1TRl/Lyntj85JNP6oUXXlBoaKjatGlT4j4ff/yx/vSnP9l8gTSZTJoyZUq5gaMsBw8elCR16dKl2Fjfvn3VuHFjHTp0yLrtyJEjio2N1UMPPWQTCIr069dPXbp00a5du5Senl7pukJCQnT69GmbJzpfvnxZhw8fVmhoqIKCgrRv3z6b1xw4cECSKhSGbnReXl4KDg7WyZMndenSpXL3JxQAAADcoIq+FHt7e5e53+nTpzVjxgwtXbrU5rKX3zt27JjN2YCsrCxJUv/+/TV69OhK11g034YNG1RYWFhsPC4uTqtXr7b+vHXrVknS448/XuoxX375Ze3du1e33357pesKCgqSJJuzBV999ZXy8/PVqVMnhYaG6ocfftDPP/9sHT948KBcXV3VsWPHSs97Iym6hb/FYil3Xy4fAgAAuAFcuHBBv/32myQpPz9fJ0+eVHR0tNq0aWNdRFuazZs3q3bt2mXuU1BQoNtvv12LFy/W//zP/+jXX3+Vh4eH/va3v+nRRx8ttv/Fixet9fxRvXr1rPP16dNHb7zxhlauXKmdO3fqgQce0D333KOgoCCZzeZidR05ckSurq6lntGQpMaNG5e4PTs7u9SaCgsLVavW//2+OygoSE5OTkpKSrIuyN2/f78aNmyoVq1aWffbt2+f9YxF0XqCP64RKGtek8lk1+dn5eXllTpX7dq1bRZglyU7O1tfffWV7rjjjhIXev8RoQAAAOAG8PDDDxfbZjKZtGLFinK/8Jc3XmTt2rXKycnR+PHj1aBBA61bt07Tp0+Xk5OTBg8ebLPvuHHjSj3OggULdP/990uSGjVqpCVLlui5555TWlqali9fruXLl8vV1VVdu3bV2LFj1b59e+trMzIy5O7uLldX1wrV/HvLli3TsmXLSh338vKy/ru7u7tatmxps9g4ISFBISEhcnJyUqtWrdSwYUNrKMjJydGxY8dKPGtS1rwjRozQ888/f83vpTRbt261nk35o169emnhwoU22/4YIq5cuaK0tDQtXLhQv/32m6ZOnVqheQkFAAAAN4DZs2frtttuk3T1TMHp06e1evVqDRs2TIsXLy7xmv1rdebMGW3dulV33nmnJOmBBx5Q//799eabb+rhhx+2ucPRlClT5O/vX+Jx/ri9Q4cO2r59u7744gvt3LlTe/bs0alTpxQfH6/du3frtddeU1hYmCSpVq1aKigoqFT9AwcOLHEdgiSbhcxFQkJCFBsbq8LCQl28eFFHjx7VI488IunqrTtDQkL05ZdfSpK+/fZb5efnl7ieoKx5mzRpUqn3UpquXbtq1KhRJY41atSo2LbSQoSPj4/eeOONCi0ylggFAAAAN4SOHTsWu/tQ37591adPH0VHR+ujjz667jlCQ0OtgUCSXFxc1L9/f82bN08pKSlq2bKldaxNmzbXtODWxcVF3bt3V/fu3SVJKSkpWrNmjVauXKno6Gj17t1bJpNJHh4eSklJUX5+/jWfLfD29i52l6Qibm5uxbYFBwdr1apVSklJUWpqqgoLC9WpUyfreGhoqD7++GOdPXvWup4gICDgmua1Nw8Pj2ua6/chIj09XUuXLtWFCxc0c+bMa/r7Y6ExAABANUj77bL2JGcoK/dKqfs0bNhQoaGhSklJUWZm5nXPWdJvmou2FS08vlbz589XTExMse0+Pj6aPn26hgwZovPnz1vvoBQQEKArV67oyJEjpR4zLi5Oo0aN0tdff12pmooEBwdLunoWICEhQR4eHvL19bWOF31pPnjwoA4ePKgOHTrIZDJd15yOVhQiOnfurEGDBmnt2rUym8166qmnrql/hAIAAAAH2pucoaFL9qvf259r2NIExX139e43B348X+L+RXf0+f0i2sq47bbbSry16alTpyRV/jKY2NhYLV68uNQ73PzpT3+S9H8P+Cp6CNjGjRtLPebGjRv1xRdfXPdDwW699Vb5+Pjo2LFjSkxMLPabcz8/P3l4eOj48eNKSkqqEbcibdCggebMmaOCggI999xzFbodqUQoAAAAcJi9yRl6LuaQ9p78VRf//xmC/MKrX6ajtx7R3uQMm/0zMjK0f/9+tW7dukJ3kClLz5499d133+mLL76wbrtw4YJiY2PVoUOHUu/4U56wsDClpaVp0aJFxcZyc3MVGxur5s2bW5+O7O/vr379+un9998v8Vr4mJgYxcfHq3v37rrrrrsqVdPvBQcH68CBA/r+++9tLh0qEhISos8//1wZGRkKCQm57vluBO3atdOoUaN09uxZzZ49u0KvYU0BAACAg8yPT9bZzNwSx379/mv9a8FpPd3dVxaLRenp6dqwYYOys7MVFRUl6WpI2LNnj1q1alXqIuDSDBs2TF9++aWeeeYZjRgxQo0aNdL69et18eJFTZs2rdj+e/fuLfPhYb1795bZbFZERIQSEhL01ltvaffu3erVq5caNWqks2fPavPmzUpPT9fy5cvl5ORkfe2MGTOUlpamiRMnatOmTdZF1Pv27VN8fLx8fX310ksvXdP7K01wcLDWr18vSSWGgtDQUG3dulW1a9cucT2BJB0/flybNm0qdY6OHTuW+yyJ+Ph4mwepFWnSpImefvpp689paWllzlXRv/uxY8fqo48+0vr16xUWFmZ9bkNpCAUAAAAO8NOvl5V0qvR1AS7fblLqt9LkbZKzs7MaNGigdu3a6aWXXtI999wjSTp58qQmT56s8ePHX3MoqFevntasWaM33nhD69evV25urtq2bavo6OgSvwyX9Jv/3/v0009lNputt01du3atPvroIy1dulRZWVlq1KiROnfurIiICLVo0cLmte7u7lq5cqViYmL04YcfauHChcrKypK3t7fGjRunUaNGlfoQtmtV9Nt/Ly+vEr+4F10ydPfdd5e4WFmSduzYoR07dpQ6xyuvvFJuKDhy5EiJ6yj8/f1tQkFiYqISExNLPU5F/+5NJpNefPFFhYeH64UXXlBsbGyZt651slTkEWc3qVOnTqlXr1769NNPi63mR9lycnJ05MgRtWnT5qZbcHMjo6/2R0+rBn2tGvTV/m6mnu5JztCwpQnl7rdmdKg6+91mt3n5PoSKYE0BAACAA3g3NKueW9kXadR3c5F3I/s9HReoKEIBAACAAzS71az2dzQoc5/23u6EAlQLQgEAAICDPNOjpZo0KPm69SYN3DS+u5+DKwKuIhQAAAA4yD1+t2rOo3eri99tqv//LyWq7+aiLn636Y1HA3SP363VXCGMirsPAQAAOFBnv9vU2e82pf12WWm/XZZ3IzOXDKHaEQoAAACqAWEANxIuHwIAAAAMjlAAAAAAGByhAAAAADA4QgEAAABg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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.scatter(df['X'], df['Y'])\n", "plt.grid()\n", "plt.xlabel('X [m]')\n", "plt.ylabel('Y [m]')\n", "for i in range(len(df)):\n", " plt.text(df['X'].loc[i], df['Y'].loc[i], df['Name'].loc[i])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Extracting Stratigraphic Data from Well Data\n", "\n", "The stratigraphic data can be extracted using ``get_stratigraphic_data_df(..)``. Different files have to be loaded beforehand to make the workflow work. This includes a file containing symbols that will be filtered out and the classification of the different formations." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2020-12-17T10:07:42.352546Z", "start_time": "2020-12-17T10:07:42.308549Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<00:00, 66.64it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "../../../../gemgis_data/data/26_working_with_well_data_from_GD_NRW/test_data.txt successfully saved\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/plain": [ "'Stammdaten - 2521/ 5631/ 1 - Bnum: 196747 . . Objekt / Name :B. 19 ESCHWEILER\\n\\n Bohrungs- / Aufschluß-Nr. :19\\n\\n Archiv-Nr. :\\n Endteufe [m] :70.30\\n\\n Stratigraphie der Endteufe :Karbon\\n . TK 25 :Eschweiler [TK 5103]\\n\\n Ort / Gemarkung :Eschweiler/Weißweiler\\n\\n GK Rechtswert/Hochwert [m] :2521370.00 / 5631910.00\\n\\n UTM East/North [m] :32310019.32 / 5633520.32\\n\\n Hoehe des Ansatzpunktes [mNN] :130.00\\n\\n Koordinatenbestimmung :ungeprüfte Angabe aus dem Bohrarch'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = gg.misc.load_pdf(path=file_path + 'test_data.pdf', \n", " save_as_txt=True)\n", "\n", "data[:500]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load Well Data from txt-file\n", "\n", "The data can be loaded from a text file so that the original PDF does not have to be reloaded again to save time." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2020-12-17T10:07:42.368544Z", "start_time": "2020-12-17T10:07:42.354544Z" } }, "outputs": [], "source": [ "with open(file_path + 'test_data.txt', \"r\") as text_file:\n", " data = text_file.read()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load Symbols from txt-file\n", "\n", "Symbols that will be removed by default from the well data can be loaded from a text file." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2020-12-17T10:07:42.384546Z", "start_time": "2020-12-17T10:07:42.372544Z" } }, "outputs": [ { "data": { "text/plain": [ "[('.m ', ''),\n", " (', ', ''),\n", " ('; ', ''),\n", " (': ', ''),\n", " ('/ ', ''),\n", " ('? ', ''),\n", " ('! ', ''),\n", " ('-\"- ', ''),\n", " ('\" ', ''),\n", " ('% ', ''),\n", " ('< ', ''),\n", " ('> ', ''),\n", " ('= ', ''),\n", " ('~ ', ''),\n", " ('_ ', ''),\n", " ('° ', ''),\n", " (\"' \", '')]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "with open(file_path + 'symbols.txt', \"r\") as text_file:\n", " symbols = [(i, '') for i in text_file.read().splitlines()]\n", "\n", "symbols" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2020-12-17T09:52:34.116241Z", "start_time": "2020-12-17T09:52:34.102205Z" } }, "source": [ "### Load Formations from txt-file\n", "\n", "Classified formations can be loaded from a text file." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2020-12-17T10:07:42.400551Z", "start_time": "2020-12-17T10:07:42.386547Z" } }, "outputs": [ { "data": { "text/plain": [ "[('UnterdevonKalltalFormation', 'KalltalFM'),\n", " ('nullLöss', 'Quaternary'),\n", " ('QuartärFlugsand', 'Quaternary'),\n", " ('QuartärHauptterrassen', 'Quaternary'),\n", " ('QuartärSandlöss', 'Quaternary'),\n", " ('QuartärHochflutablagerungen', 'Quaternary'),\n", " ('QuartärAnthropogeneBildungen(künstlicheAufschüttung)', 'Quaternary'),\n", " ('QuartärVerschwemmungsablagerungenFrostbodenbildungenundRutschmassen',\n", " 'Quaternary'),\n", " ('QuartärLösslehm', 'Quaternary'),\n", " ('QuartärHochflutlehm', 'Quaternary')]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "with open(file_path + 'formations.txt', \"rb\") as text_file:\n", " formations = text_file.read().decode(\"UTF-8\").split()\n", " \n", "formations = [(formations[i], formations[i+1]) for i in range(0,len(formations)-1,2)]\n", "formations[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Extracting the Stratigraphic Data\n", "\n", "After loading the symbols and formations, the stratigraphic data can be extracted. The (Geo-)DataFrame contains the index, the well name, X, Y and Z coordinates, the altitudes, the depths, the formations and a geometry column. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2020-12-17T10:07:42.462572Z", "start_time": "2020-12-17T10:07:42.402552Z" } }, "outputs": [ { "data": { "text/html": [ "
\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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IndexNameXYZAltitudeDepthformationgeometry
0GD0001B.19ESCHWEILER32310019.325633520.32125.30130.0070.30QuaternaryPOINT (32310019.320 5633520.320)
1GD0001B.19ESCHWEILER32310019.325633520.3266.50130.0070.30MiocenePOINT (32310019.320 5633520.320)
2GD0001B.19ESCHWEILER32310019.325633520.3260.90130.0070.30OligocenePOINT (32310019.320 5633520.320)
3GD0001B.19ESCHWEILER32310019.325633520.3259.70130.0070.30CarboniferousPOINT (32310019.320 5633520.320)
4GD0002B.16ESCHWEILER32310327.145632967.35117.80122.0037.61QuaternaryPOINT (32310327.140 5632967.350)
5GD0002B.16ESCHWEILER32310327.145632967.3584.40122.0037.61MiocenePOINT (32310327.140 5632967.350)
6GD0002B.16ESCHWEILER32310327.145632967.3584.39122.0037.61CarboniferousPOINT (32310327.140 5632967.350)
\n", "
" ], "text/plain": [ " Index Name X Y Z Altitude Depth \\\n", "0 GD0001 B.19ESCHWEILER 32310019.32 5633520.32 125.30 130.00 70.30 \n", "1 GD0001 B.19ESCHWEILER 32310019.32 5633520.32 66.50 130.00 70.30 \n", "2 GD0001 B.19ESCHWEILER 32310019.32 5633520.32 60.90 130.00 70.30 \n", "3 GD0001 B.19ESCHWEILER 32310019.32 5633520.32 59.70 130.00 70.30 \n", "4 GD0002 B.16ESCHWEILER 32310327.14 5632967.35 117.80 122.00 37.61 \n", "5 GD0002 B.16ESCHWEILER 32310327.14 5632967.35 84.40 122.00 37.61 \n", "6 GD0002 B.16ESCHWEILER 32310327.14 5632967.35 84.39 122.00 37.61 \n", "\n", " formation geometry \n", "0 Quaternary POINT (32310019.320 5633520.320) \n", "1 Miocene POINT (32310019.320 5633520.320) \n", "2 Oligocene POINT (32310019.320 5633520.320) \n", "3 Carboniferous POINT (32310019.320 5633520.320) \n", "4 Quaternary POINT (32310327.140 5632967.350) \n", "5 Miocene POINT (32310327.140 5632967.350) \n", "6 Carboniferous POINT (32310327.140 5632967.350) " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = gg.misc.get_stratigraphic_data_df(data=data, \n", " name='GD', \n", " symbols=symbols,\n", " formations=formations,\n", " return_gdf=True)\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting data" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2020-12-17T10:07:42.589064Z", "start_time": "2020-12-17T10:07:42.464564Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQUAAAHDCAYAAAAtJw84AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAiOklEQVR4nO3df3SU5Z338Q9kdCaDW7HbxEI22JCgIJAQh8QguKFo3XVJ4CDUH0EWo9Ckxs15wimtlFp4SNT21NgCKkUEe5Agm6grLLIuciy0BbGmYnNi0WZMREwIJtSkCDOTX9fzBw9TLqHJBDL5Ae/XOZw4933P3NcXyZt7JkMyyBhjBAD/3+C+XgCA/oUoALAQBQAWogDAQhQAWIgCAMuAjsL06dOVlJSk5ORkJScna/r06ec8zhijp556SlOmTNHEiRP10EMP6a9//askqaWlRcuXL1daWpo8Ho+++93v6ujRo8H7btq0SdOmTVNycrJmz56t8vLykNbW2TmBfs0MEPfee695+eWXg7d9Pp8ZM2aMOXbsWJf33bhxo5k+fbo5cuSIOXnypHnwwQfNj370I2OMMU8++aS59957zeeff24CgYB5+OGHTV5enjHGmL1795pJkyYZr9drjDGmtLTUpKammvb29gs6J9CfOfo6Sufrz3/+s772ta/pq1/9apfHlpSUaMmSJfr6178uSSoqKlJTU5MkKT8/X62trXK5XDpy5IhOnDihq666SpJ000036Y033tCQIUPU3Nyszz//XEOHDtXgwacusOrq6rRixQodOHBAV155pXJycjR79uwuzwn0Z/06CuXl5crNzZUknTx5UhUVFXrsscc0bNgwzZ07Vw6HQ3fddZcOHTqk66+/XkuXLlV8fLz1GCdPnlRNTY0+++wzZWRk6PPPP9c///M/a+nSpZKkiIgIRUREaPXq1Xr66acVHR2tkpKS4P2HDBmi/fv367777pPD4dDq1aslSe3t7crNzVV6erpWrVql6upqLViwQDExMUpMTOz0nEC/1teXKqH68tOHF1980eTn55vDhw8bn89niouLzTe/+U3j8/ms+x05csRce+21Jisryxw9etT85S9/Mffdd5/54Q9/aB3n9/uNz+czhYWF5lvf+pZpaWkJ7gsEAqalpcVs377dJCYmGq/Xaw4cOGAmTpxoPZVYvXq1WbRoUcjnBPqj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VlZmPB6PSU1NDW7/j//4D/O9733P+P1+88c//tGkpqaagwcPGmOMeeGFF0xGRoY5evSo+eyzz8ysWbPMxo0b+2qE89bU1GRSUlLM1q1bTXt7u6msrDQpKSlm7969l8T81dXVJikpyfzhD38wxhizd+9eM3bsWHPs2LF+OT9R6CXPPPOMyczMNOvWrQtG4YsvvjBjxowxn3zySfC4FStWmBUrVhhjjJkzZ44pKysL7nv99ddNRkZG7y68B/zpT38y3/ve96xtDz30kFm9evUlMb8xp/5fn/74X//1XyY1NdUcP368X87P04deMnv2bG3dulXjx//tp/UcOnRIDodDsbF/+7FecXFxqqqqkiRVV1crISHB2uf1emUG2JtQx4wZo5/97GfB283NzSovL5ekS2J+SRoyZIgOHz6siRMn6uGHH1ZBQYE++eSTfjk/Uegl0dHRGjRokLXt5MmTZ7333OVyye/3S5J8Pp+1PzIyUh0dHWppaQn/gsPk+PHjys3N1dixY3XjjTdeUvMPGzZMFRUVev755/XTn/5Ub775Zr+cnyj0ocjIyOAfgNP8fr/cbrekU39AAoFAcJ/P55PD4Riw/7T48OHDuvvuu3XllVfqqaeektvtvqTmdzgcuuyyyzRp0iTddtttqqys7JfzE4U+dM0116itrU11dXXBbTU1NcFLxvj4eNXU1Fj7Ro4c2evr7Anvv/++7rzzTk2ZMkXPPPOMXC7XJTP/nj17dN9991nbWltbNWLEiH45P1HoQ1dccYVuueUWFRcXy+fzqaKiQtu3b1dmZqYkacaMGVq/fr3q6+vV2NiotWvXaubMmX286u5rbGzUggULlJ2drSVLlmjw4FN/7C6V+a+//npVVlbq1VdfVUdHh/bs2aM9e/borrvu6p/zh/2lTFj2799vfUny888/N/n5+SYlJcWkp6dbrza3tbWZJ5980kyePNmkpqaawsJC09bW1hfLviBr1qwx1157rZkwYYL168knn7wk5jfGmHfeecfMmjXLJCcnm1mzZpm33nrLGNM////z/RQAWHj6AMBCFABYiAIAC1EAYCEKACxEAbgALS0tWr58udLS0uTxePTd735XR48ePeexf/3rX/WDH/xAN910k9LS0rR48WI1Nzd363HeeOMNzZ49O+T1JScnW7/GjRuncePGdXofogB0w7x58/TKK68Ebz/99NP66KOP9Prrr+utt97S0KFDVVhYeM77PvbYYzpx4oR27typN954Q8ePHw8e29XjtLW1ad26dVq0aFG3/kHUgQMHgr/27t2rESNG6Mc//nGn9+mXPyEKGCjy8/PV2toql8ulI0eO6MSJE7rqqqvOeWx7e7vy8vJ0xRVXSJLuvPNOPfrooyE9zvLly/Xxxx/r/vvv129/+1vrcevq6rRixQodOHBAV155pXJycs55NfHzn/9c3/jGN3TnnXd2PlTY3x4FDHDvvPOO8Xg8xuPxmDFjxpjExETj8Xis722watUqc91115mbb77Z+v4InVm6dKl58MEHrW1/73Hq6+uNMca8/PLLZtasWcHtbW1tJjMz0zzxxBMmEAiYgwcPmsmTJwffMXna6W/0Ultb2+W6iALQDffee695+eWXz9ru9/uNz+czhYWF5lvf+pZpaWnp9HHWr19vPB6P8Xq93XqcL0fhwIEDZuLEiaa9vT24bfXq1WbRokXW/ZYuXWoeeeSRkGbk6QPQA07/c+bvf//72rJli/785z9r7NixZx3X3t6uxx9/XP/zP/+jX/3qV4qPjz+vxzmtrq5OX3zxhVJTU61znHmfQCCg1157TZs3bw5pFqIAXIAlS5Zo/PjxysrKknTqE7Kjo0Nf+cpXzjo2EAgoPz9fR44cUWlpqWJiYs7rcc4UHR2tq6++Wrt37w5ua2xstF6M3L9/v6KjozVmzJiQZuKrD0A3vPDCC7rjjjuCtxMTE7VhwwZ9+umn8vl8evTRR+XxeKxvsXbaj3/8Yx07dkybN2+2gtDdxzlTUlKSXC6XnnvuObW2tqq+vl7Z2dkqKSkJHvPHP/5REyZMCHlGrhSAC3D33Xfr2LFjuueee9Ta2qrJkydr5cqVwf3Jyclat26dYmNj9eqrr+ryyy/XzTffHNx/1VVX6c033+zycf6eyy67TM8++6yKioq0bt06RURE6N/+7d+Ul5cXPKa2tlZRUVEhz8Q/nQZg4ekDAAtRAGAhCgAsRAGAhSgAsBAFABaiAMBCFABYiAIAy/8Dg8qYjemKkuIAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.plot()\n", "plt.grid()" ] } ], "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 }