{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example of DOV search methods for lithologische beschrijvingen" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/DOV-Vlaanderen/pydov/master?filepath=docs%2Fnotebooks%2Fsearch_lithologische_beschrijvingen.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use cases:\n", "* Select records in a bbox\n", "* Select records in a bbox with selected properties\n", "* Select records in a municipality\n", "* Get records using info from wfs fields, not available in the standard output dataframe" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import os, sys\n", "import inspect" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pydov" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get information about code base" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Wanneer een boring wordt uitgevoerd wordt er een beschrijving gemaakt van het materiaal dat men aangeboord heeft. Men beschrijft de textuur, het soort materiaal, de kleur, mineralen, fossielen, ... per diepte-interval. Dit kan zowel op het veld gebeuren als achteraf indien de stalen bewaard worden. Deze beschrijvingen kunnen gedaan worden door bijvoorbeeld de boormeester of door een geoloog. Meestal wordt de boring beschreven per diepte-interval waarover men hetzelfde materiaal herkent. De mate van detail van de beschrijving kan afhankelijk zijn van het doeleinde waarvoor men de boring uitvoert of wie de beschrijving doet: is het om een geologische kaart te maken, dienen er monsters genomen te worden voor laboratoriumanalyses, ... In DOV worden de beschrijvingen van ontsluitingen boven het aardoppervlak, aangeduid als boringen met diepte 0 m, beschreven van 0 m tot 0 m.'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pydov.search.interpretaties import LithologischeBeschrijvingenSearch\n", "ip_litho = LithologischeBeschrijvingenSearch()\n", "\n", "# information about the HydrogeologischeStratigrafie type (In Dutch):\n", "ip_litho.get_description()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pkey_interpretatie\n", "Type_proef\n", "Proefnummer\n", "pkey_boring\n", "x\n", "y\n", "start_interpretatie_mtaw\n", "diepte_tot_m\n", "gemeente\n", "Auteurs\n", "Datum\n", "Opdrachten\n", "betrouwbaarheid_interpretatie\n", "Geldig_van\n", "Geldig_tot\n", "Score_categorie\n", "Geschiktheid_boormethode\n", "eerste_invoer\n", "geom\n", "diepte_laag_van\n", "diepte_laag_tot\n", "beschrijving\n" ] } ], "source": [ "# information about the available fields for a HydrogeologischeStratigrafie object\n", "fields = ip_litho.get_fields()\n", "# print available fields\n", "for f in fields.values():\n", " print(f['name'])" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", "
\n", "

beschrijving - Lithologische beschrijving van de laag in vrije tekst (onbeperkt in lengte)

\n", "
\n", " " ], "text/plain": [ "{'name': 'beschrijving', 'type': 'string', 'multivalue': False, 'definition': 'Lithologische beschrijving van de laag in vrije tekst (onbeperkt in lengte)', 'notnull': False, 'query': False, 'cost': 10}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print information for a certain field\n", "fields['beschrijving']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The cost is an arbitrary attribute to indicate if the information is retrieved from a wfs query (cost = 1), \n", "or from an xml (cost = 10)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", "
\n", "

Type_proef - Het type van de proef waarvan de lithologische beschrijving een interpretatie is. Bij een lithogische beschrijving zal dit altijd 'Boring' zijn.

\n", "
\n", " " ], "text/plain": [ "{'name': 'Type_proef', 'definition': \"Het type van de proef waarvan de lithologische beschrijving een interpretatie is. Bij een lithogische beschrijving zal dit altijd 'Boring' zijn.\", 'type': 'string', 'multivalue': False, 'notnull': False, 'query': True, 'cost': 1, 'codelist': >}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# if an attribute can have several values, these are listed under 'values', e.g. for 'Type_proef':\n", "fields['Type_proef']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatively, you can list all the fields and their details by inspecting the `get_fields()` output or the search instance itself in a notebook:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", "
\n", " \n", "
\n", " pydov.search.interpretaties.LithologischeBeschrijvingenSearch\n", "
\n", "

Wanneer een boring wordt uitgevoerd wordt er een beschrijving gemaakt van het materiaal dat men aangeboord heeft. Men beschrijft de textuur, het soort materiaal, de kleur, mineralen, fossielen, ... per diepte-interval. Dit kan zowel op het veld gebeuren als achteraf indien de stalen bewaard worden. Deze beschrijvingen kunnen gedaan worden door bijvoorbeeld de boormeester of door een geoloog. Meestal wordt de boring beschreven per diepte-interval waarover men hetzelfde materiaal herkent. De mate van detail van de beschrijving kan afhankelijk zijn van het doeleinde waarvoor men de boring uitvoert of wie de beschrijving doet: is het om een geologische kaart te maken, dienen er monsters genomen te worden voor laboratoriumanalyses, ... In DOV worden de beschrijvingen van ontsluitingen boven het aardoppervlak, aangeduid als boringen met diepte 0 m, beschreven van 0 m tot 0 m.

\n", " \n", "
\n", "

pkey_interpretatie - URL die verwijst naar de gegevens van deze lithologische beschrijvingen op de website. Voeg '.xml' toe om een XML voorstelling van deze gegevens te verkrijgen.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

Type_proef - Het type van de proef waarvan de lithologische beschrijving een interpretatie is. Bij een lithogische beschrijving zal dit altijd 'Boring' zijn.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
  • codelist:
  • \n", " \n", "
    \n", " \n", "
    \n", " pydov.util.codelists.FeatureCatalogueValues\n", "
    \n", " \n", " \n", "
    \n", "

    Boring - Boring - De lithologische beschrijving is een interpretatie van een boring.

    \n", "
    \n", " \n", "
    \n", "
\n", "
\n", " \n", " \n", "
\n", "

Proefnummer - Het proefnummer van de boring waarvan de lithologische beschrijving een interpretatie is.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

pkey_boring - URL die verwijst naar de gegevens van de boring op de website. Voeg '.xml' toe om een XML voorstelling van deze gegevens te verkrijgen.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

x - De x-coördinaat van de boring in het Lambert72 coördinaatsysteem (in meter, EPSG:31370).

  • type: float
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

y - De y-coördinaat van de boring in het Lambert72 coördinaatsysteem (in meter, EPSG:31370).

  • type: float
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

start_interpretatie_mtaw - De hoogte van het aanvangspeil van de boring in het TAW stelsel (in meter).

  • type: float
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

diepte_tot_m - De maximumdiepte van de lithologische beschrijving in meter. Dit is de 'tot' van de diepste geïnterpreteerde laag.

  • type: float
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

gemeente - De gemeente waarin de boring van deze interpretatie gelegen is.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

Auteurs - De auteur of auteurs van de lithologische beschrijving.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

Datum - De datum waarop de lithologische beschrijving werd beschreven.

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

Opdrachten - De opdracht(en) waaraan de lithologische beschrijving gekoppeld is.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

betrouwbaarheid_interpretatie - De betrouwbaarheid van het geheel van de lithologische beschrijvingen (goed, twijfelachtig of onbekend). Deze wordt toegekend door een DOV-medewerker verantwoordelijk voor de ingave.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

Geldig_van - Het tijdstip vanaf wanneer de lithologische beschrijving geldig is.

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

Geldig_tot - Het tijdstip tot wanneer de lithologische beschrijving geldig is.

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

Score_categorie - De score categorie is een kwalitatieve categorie op basis van een kwantitatieve score, tussen 0 en 10, van de kwaliteit van (gecodeerde) lithologische beschrijvingen. Slecht: < 4,7/10, matig: tussen 4,7/10 en 6,6/10, goed: tussen 6,6/10 en 8,5/10, zeer goed: > 8,5/10. De score is samengesteld op basis van de beschrijving van basiselementen (lithologie, kleur, korrelgrootte), voldoende detail (secundaire kenmerken zoals glauconiet, schelpen, …) en voldoende kleine intervallen. Voor goed hergebruik van de beschrijvingen is minstens categorie ‘matig’ nodig.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

Geschiktheid_boormethode - De geschiktheid van de boormethode beschrijft of de gebruikte boormethode van de boring waarop de beschrijving gebaseerd is eerder geschikt (hoog; bv. kernboring) of eerder niet geschikt (laag; bv. spoelboring) is voor het opmaken van een gedetailleerde (gecodeerde) lithologische beschrijving. Boormethodes die ongeroerde stalen opleveren zijn doorgaans geschikter dan methodes die geroerde stalen opleveren. Voor beschrijvingen met een hoge geschiktheid van de boormethode mag ook een betere score categorie verwacht worden dan van beschrijvingen met een lage geschiktheid van de boormethode.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

eerste_invoer - Het tijdstip waarop deze interpretatie voor het eerst in DOV ingevoerd werd.

  • type: datetime
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

geom - None

  • type: geometry
  • notnull: False
  • query: False
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

diepte_laag_van - Diepte van de bovenkant van de laag lithologische beschrijving in meter.

  • type: float
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

diepte_laag_tot - Diepte van de onderkant van de laag lithologische beschrijving in meter.

  • type: float
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

beschrijving - Lithologische beschrijving van de laag in vrije tekst (onbeperkt in lengte)

  • type: string
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False
\n", "
\n", "

\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ip_litho" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Try-out of use cases" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Select interpretations in a bbox" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\n", "[000/024] ........................\n" ] }, { "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", "
pkey_interpretatiepkey_boringbetrouwbaarheid_interpretatiexystart_interpretatie_mtawdiepte_laag_vandiepte_laag_totbeschrijving
0https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1895...goed153007.0206660.015.00.02.4Sable quartzeux jaune,légèrement argileux,avec...
1https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1895...goed153007.0206660.015.02.42.9Sable quartzeux verdâtre argileux,très glaucon...
2https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1895...goed152195.0205501.011.00.02.0Sable limoneux
3https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1895...goed152195.0205501.011.02.02.7Sable verdâtre,fossilifère
4https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1879...goed152564.0205750.011.00.00.5Terre végétale argileuse
\n", "
" ], "text/plain": [ " pkey_interpretatie \\\n", "0 https://www.dov.vlaanderen.be/data/interpretat... \n", "1 https://www.dov.vlaanderen.be/data/interpretat... \n", "2 https://www.dov.vlaanderen.be/data/interpretat... \n", "3 https://www.dov.vlaanderen.be/data/interpretat... \n", "4 https://www.dov.vlaanderen.be/data/interpretat... \n", "\n", " pkey_boring \\\n", "0 https://www.dov.vlaanderen.be/data/boring/1895... \n", "1 https://www.dov.vlaanderen.be/data/boring/1895... \n", "2 https://www.dov.vlaanderen.be/data/boring/1895... \n", "3 https://www.dov.vlaanderen.be/data/boring/1895... \n", "4 https://www.dov.vlaanderen.be/data/boring/1879... \n", "\n", " betrouwbaarheid_interpretatie x y start_interpretatie_mtaw \\\n", "0 goed 153007.0 206660.0 15.0 \n", "1 goed 153007.0 206660.0 15.0 \n", "2 goed 152195.0 205501.0 11.0 \n", "3 goed 152195.0 205501.0 11.0 \n", "4 goed 152564.0 205750.0 11.0 \n", "\n", " diepte_laag_van diepte_laag_tot \\\n", "0 0.0 2.4 \n", "1 2.4 2.9 \n", "2 0.0 2.0 \n", "3 2.0 2.7 \n", "4 0.0 0.5 \n", "\n", " beschrijving \n", "0 Sable quartzeux jaune,légèrement argileux,avec... \n", "1 Sable quartzeux verdâtre argileux,très glaucon... \n", "2 Sable limoneux \n", "3 Sable verdâtre,fossilifère \n", "4 Terre végétale argileuse " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pydov.util.location import Within, Box\n", "\n", "# Get all lithological descriptions in a bounding box (llx, lly, ulx, uly)\n", "# the pkey_boring link is not available below, but is in the df\n", "df = ip_litho.search(location=Within(Box(152145, 204930, 153150, 206935, epsg=31370)))\n", "df = df[df.beschrijving.notnull()]\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Select interpretations in a bbox with selected properties" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['PropertyIsBetween',\n", " 'PropertyIsEqualTo',\n", " 'PropertyIsGreaterThan',\n", " 'PropertyIsGreaterThanOrEqualTo',\n", " 'PropertyIsLessThan',\n", " 'PropertyIsLessThanOrEqualTo',\n", " 'PropertyIsLike',\n", " 'PropertyIsNotEqualTo',\n", " 'PropertyIsNull',\n", " 'SortProperty']" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# list available query methods\n", "methods = [i for i,j in inspect.getmembers(sys.modules['owslib.fes2'], \n", " inspect.isclass) \n", " if 'Property' in i]\n", "methods" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "from owslib.fes2 import PropertyIsGreaterThanOrEqualTo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The property feature methodes listed above are available from the owslib module. These were not adapted for use in pydov." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\n", "[000/001] c\n" ] }, { "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", "
pkey_interpretatiepkey_boringbetrouwbaarheid_interpretatiexystart_interpretatie_mtawdiepte_laag_vandiepte_laag_totbeschrijving
0https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1974...goed153147.0206931.014.120.00.5bruinachtige zandhoudende leem, geen kalk
1https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1974...goed153147.0206931.014.120.51.0bleekgrijze leem
2https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1974...goed153147.0206931.014.121.01.5bruingroen leemhoudend fijn zand
3https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1974...goed153147.0206931.014.121.52.0bleekgrijs leemhoudend fijn zand
4https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1974...goed153147.0206931.014.122.02.5idem, met veenresten en kalkhoudend
\n", "
" ], "text/plain": [ " pkey_interpretatie \\\n", "0 https://www.dov.vlaanderen.be/data/interpretat... \n", "1 https://www.dov.vlaanderen.be/data/interpretat... \n", "2 https://www.dov.vlaanderen.be/data/interpretat... \n", "3 https://www.dov.vlaanderen.be/data/interpretat... \n", "4 https://www.dov.vlaanderen.be/data/interpretat... \n", "\n", " pkey_boring \\\n", "0 https://www.dov.vlaanderen.be/data/boring/1974... \n", "1 https://www.dov.vlaanderen.be/data/boring/1974... \n", "2 https://www.dov.vlaanderen.be/data/boring/1974... \n", "3 https://www.dov.vlaanderen.be/data/boring/1974... \n", "4 https://www.dov.vlaanderen.be/data/boring/1974... \n", "\n", " betrouwbaarheid_interpretatie x y start_interpretatie_mtaw \\\n", "0 goed 153147.0 206931.0 14.12 \n", "1 goed 153147.0 206931.0 14.12 \n", "2 goed 153147.0 206931.0 14.12 \n", "3 goed 153147.0 206931.0 14.12 \n", "4 goed 153147.0 206931.0 14.12 \n", "\n", " diepte_laag_van diepte_laag_tot beschrijving \n", "0 0.0 0.5 bruinachtige zandhoudende leem, geen kalk \n", "1 0.5 1.0 bleekgrijze leem \n", "2 1.0 1.5 bruingroen leemhoudend fijn zand \n", "3 1.5 2.0 bleekgrijs leemhoudend fijn zand \n", "4 2.0 2.5 idem, met veenresten en kalkhoudend " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get deep boreholes in a bounding box \n", "from owslib.fes2 import PropertyIsEqualTo\n", "# the propertyname can be any of the fields of the hydrogeological interpretations object that belong to the wfs source\n", "# the literal is always a string, no matter what its definition is in the boring object (string, float...)\n", "query = PropertyIsGreaterThanOrEqualTo(\n", " propertyname='betrouwbaarheid_interpretatie', literal='goed')\n", "df = ip_litho.search(location=Within(Box(153145, 206930, 153150, 206935, epsg=31370)),\n", " query=query\n", " )\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Select interpretations in a municipality" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\n", "[000/061] ..................................................\n", "[050/061] ...........\n" ] }, { "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", "
pkey_interpretatiepkey_boringbetrouwbaarheid_interpretatiexystart_interpretatie_mtawdiepte_laag_vandiepte_laag_totbeschrijving
0https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1870...goed151724.0203063.016.00.00.0Terre végétale.
1https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1870...goed151724.0203063.016.00.01.0Sable jaune, mouvant à la base
2https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1870...goed151724.0203063.016.01.05.0Sable jaune, mouvant à la base glauconifére, p...
3https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1870...goed151724.0203063.016.05.010.2Argile verte compacte, avec pyrites
4https://www.dov.vlaanderen.be/data/interpretat...https://www.dov.vlaanderen.be/data/boring/1870...goed151724.0203063.016.010.221.0Un separia.
\n", "
" ], "text/plain": [ " pkey_interpretatie \\\n", "0 https://www.dov.vlaanderen.be/data/interpretat... \n", "1 https://www.dov.vlaanderen.be/data/interpretat... \n", "2 https://www.dov.vlaanderen.be/data/interpretat... \n", "3 https://www.dov.vlaanderen.be/data/interpretat... \n", "4 https://www.dov.vlaanderen.be/data/interpretat... \n", "\n", " pkey_boring \\\n", "0 https://www.dov.vlaanderen.be/data/boring/1870... \n", "1 https://www.dov.vlaanderen.be/data/boring/1870... \n", "2 https://www.dov.vlaanderen.be/data/boring/1870... \n", "3 https://www.dov.vlaanderen.be/data/boring/1870... \n", "4 https://www.dov.vlaanderen.be/data/boring/1870... \n", "\n", " betrouwbaarheid_interpretatie x y start_interpretatie_mtaw \\\n", "0 goed 151724.0 203063.0 16.0 \n", "1 goed 151724.0 203063.0 16.0 \n", "2 goed 151724.0 203063.0 16.0 \n", "3 goed 151724.0 203063.0 16.0 \n", "4 goed 151724.0 203063.0 16.0 \n", "\n", " diepte_laag_van diepte_laag_tot \\\n", "0 0.0 0.0 \n", "1 0.0 1.0 \n", "2 1.0 5.0 \n", "3 5.0 10.2 \n", "4 10.2 21.0 \n", "\n", " beschrijving \n", "0 Terre végétale. \n", "1 Sable jaune, mouvant à la base \n", "2 Sable jaune, mouvant à la base glauconifére, p... \n", "3 Argile verte compacte, avec pyrites \n", "4 Un separia. " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "query = PropertyIsEqualTo(propertyname='gemeente',\n", " literal='Aartselaar')\n", "df = ip_litho.search(query=query)\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Visualize results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using Folium, we can display the results of our search on a map." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# import the necessary modules (not included in the requirements of pydov!)\n", "import folium\n", "from folium.plugins import MarkerCluster\n", "from pyproj import Transformer" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# convert the coordinates to lat/lon for folium\n", "def convert_latlon(x1, y1):\n", " transformer = Transformer.from_crs(\"epsg:31370\", \"epsg:4326\", always_xy=True)\n", " x2,y2 = transformer.transform(x1, y1)\n", " return x2, y2\n", "\n", "df['lon'], df['lat'] = zip(*map(convert_latlon, df['x'], df['y'])) \n", "# convert to list\n", "loclist = df[['lat', 'lon']].values.tolist()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# initialize the Folium map on the centre of the selected locations, play with the zoom until ok\n", "fmap = folium.Map(location=[df['lat'].mean(), df['lon'].mean()], zoom_start=12)\n", "marker_cluster = MarkerCluster().add_to(fmap)\n", "for loc in range(0, len(loclist)):\n", " # limit marker size for folium (:10)\n", " folium.Marker(loclist[loc], popup=df['beschrijving'][loc][:10]).add_to(marker_cluster)\n", "fmap" ] } ], "metadata": { "kernelspec": { "display_name": ".venv (3.13.5)", "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.13.5" } }, "nbformat": 4, "nbformat_minor": 4 }