{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example of DOV search methods for boreholes (boringen)" ] }, { "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_boringen.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use cases explained below\n", "* Get boreholes in a bounding box\n", "* Get boreholes with specific properties\n", "* Get boreholes in a bounding box based on specific properties\n", "* Select boreholes in a municipality and return depth\n", "* Get boreholes based on fields not available in the standard output dataframe\n", "* Get borehole data, returning fields not available in the standard output dataframe\n", "* Get boreholes in a municipality and where groundwater related data are available\n", "* Adding location and height details\n", "* Adding color to the Borehole dataframe" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import inspect, sys\n", "import warnings; warnings.simplefilter('ignore')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# check pydov path\n", "import pydov" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get information about the datatype 'Boring'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from pydov.search.boring import BoringSearch\n", "boring = BoringSearch()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A description is provided for the 'Boring' datatype:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'In de DOV-databank is elke waarneming van grondlagen een boring. Bij de meeste boringen wordt er met een boortoestel een gat gemaakt in de ondergrond om de verschillende grondlagen te kunnen beschrijven. Aan de hand van een boring krijg je een beeld van het materiaal in de ondergrond met toenemende diepte. Afhankelijk van het doel waarvoor de boring geplaatst wordt, zal men een geschikte boormethode toepassen. Boringen worden geplaatst voor verkennend bodemonderzoek, monstername van het sediment en/of grondwater, bepaling van bodemfysische parameters, milieuhygiënisch onderzoek,… Afhankelijk van de diepte, soort materiaal, en het al dan niet boren tot onder de grondwatertafel kan men kiezen uit verscheidene systemen voor handmatig of machinaal te boren. Het bodemmateriaal dat vrijkomt, kan gebruikt worden om een profiel van de ondergrond op te stellen of om er grondmonsters van te nemen om verdere analyses op uit te voeren. Vaak is het de bedoeling een put uit te bouwen zodat water kan gewonnen worden (zie ook grondwatermeetnet en grondwatervergunningen). Soms worden boringen uitgevoerd om een aantal geotechnische karakteristieken te bepalen of om wetenschappelijk onderzoek uit te voeren. Oppervlakkige waarnemingen van de ondergrond noemen we ook boringen. Vooral rond 1900 beschreven een aantal geologen vaak de oppervlakkige lagen. In de databank staan er dan ook verschillende boringen met een diepte van 0 meter. Het gaat vooral om weginsnijdingen of om zichtbare lithologische kenmerken langs de oppervlakte.'" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "boring.get_description()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The different fields that are available for objects of the 'Boring' datatype can be requested with the get_fields() method:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "id\n", "boornummer\n", "pkey_boring\n", "rapport\n", "diepte_boring_tot\n", "datum_aanvang\n", "namen\n", "putnummer\n", "x\n", "y\n", "start_boring_mtaw\n", "gemeente\n", "uitvoerder\n", "doel\n", "methode\n", "erkenning\n", "opdrachtgever\n", "informele_stratigrafie\n", "formele_stratigrafie\n", "lithologische_beschrijving\n", "gecodeerde_lithologie\n", "hydrogeologische_stratigrafie\n", "quartaire_stratigrafie\n", "geotechnische_codering\n", "informele_hydrostratigrafie\n", "doorheen_quartair\n", "dikte_quartair\n", "tertiair_onder_quartair\n", "opdrachten\n", "eerste_invoer\n", "geom\n", "diepte_boring_van\n", "boorgatmeting\n", "diepte_methode_van\n", "diepte_methode_tot\n", "boormethode\n", "mv_mtaw\n" ] } ], "source": [ "fields = boring.get_fields()\n", "\n", "# print available fields\n", "for f in fields.values():\n", " print(f['name'])" ] }, { "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": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", "
\n", " \n", "
\n", " pydov.search.boring.BoringSearch\n", "
\n", "

In de DOV-databank is elke waarneming van grondlagen een boring. Bij de meeste boringen wordt er met een boortoestel een gat gemaakt in de ondergrond om de verschillende grondlagen te kunnen beschrijven. Aan de hand van een boring krijg je een beeld van het materiaal in de ondergrond met toenemende diepte. Afhankelijk van het doel waarvoor de boring geplaatst wordt, zal men een geschikte boormethode toepassen. Boringen worden geplaatst voor verkennend bodemonderzoek, monstername van het sediment en/of grondwater, bepaling van bodemfysische parameters, milieuhygiënisch onderzoek,… Afhankelijk van de diepte, soort materiaal, en het al dan niet boren tot onder de grondwatertafel kan men kiezen uit verscheidene systemen voor handmatig of machinaal te boren. Het bodemmateriaal dat vrijkomt, kan gebruikt worden om een profiel van de ondergrond op te stellen of om er grondmonsters van te nemen om verdere analyses op uit te voeren. Vaak is het de bedoeling een put uit te bouwen zodat water kan gewonnen worden (zie ook grondwatermeetnet en grondwatervergunningen). Soms worden boringen uitgevoerd om een aantal geotechnische karakteristieken te bepalen of om wetenschappelijk onderzoek uit te voeren. Oppervlakkige waarnemingen van de ondergrond noemen we ook boringen. Vooral rond 1900 beschreven een aantal geologen vaak de oppervlakkige lagen. In de databank staan er dan ook verschillende boringen met een diepte van 0 meter. Het gaat vooral om weginsnijdingen of om zichtbare lithologische kenmerken langs de oppervlakte.

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

id - Volgnummer ter identificatie (intern en niet-stabiel).

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

boornummer - Het boornummer (ook gekend als proefnummer) van de boring.

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

pkey_boring - Permanente 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: True
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

rapport - URL die verwijst naar het rapport van de boring in PDF formaat.

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

diepte_boring_tot - Maximumdiepte van de boring ten opzichte van het aanvangspeil, in meter.

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

datum_aanvang - Datum waarop men de boring gestart is.

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

namen - Alternatieve benamingen voor de boring.

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

putnummer - Het GW_ID (ook gekend als putnummer) van de put waaraan de boring gekoppeld is. Wanneer dit veld leeg is is de boring niet gekoppeld aan een put.

  • 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: True
  • 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: True
  • query: True
  • cost: 1
  • multivalue: False
\n", "
\n", " \n", " \n", "
\n", "

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

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

gemeente - De gemeente waarin de boring gelegen is.

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

uitvoerder - De organisatie die de boring uitvoerde. Heeft als waarde 'onbekend' indien de uitvoerder niet gekend is.

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

doel - Het doel van de boring.

  • 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", "

    Berging - Berging

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

    Drainage en bemaling - Drainage en bemaling

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

    Exploratie energie bronnen - Exploratie energie bronnen

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

    Exploratie minerale bronnen - Exploratie minerale bronnen

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

    Exploratie ondergrondse opslag - Exploratie ondergrondse opslag

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

    Geochemisch onderzoek - Geochemisch onderzoek

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

    Geofysisch onderzoek - Geofysisch onderzoek

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

    Geologisch onderzoek - Geologisch onderzoek

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

    Geotechnisch onderzoek - Geotechnisch onderzoek

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

    Geothermie - Geothermie

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

    Grondwaterkwaliteit monitoring - Grondwaterkwaliteit monitoring

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

    Grondwaterkwantiteit monitoring - Grondwaterkwantiteit monitoring

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

    Grondwatermonitoring - Grondwatermonitoring

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

    Grondwaterwinning - Grondwaterwinning

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

    Hydrogeologisch onderzoek - Hydrogeologisch onderzoek

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

    Infiltratie - Infiltratie

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

    Kathodische bescherming - Kathodische bescherming

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

    Monitoring vervuilde sites - Monitoring vervuilde sites

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

    Sanering - Sanering

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

methode - De methode waarmee de boring uitgevoerd werd. Heeft als waarde 'onbekend' indien de methode niet gekend is.

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

    Meerdere technieken - Meerdere technieken

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

    avegaarboring - avegaarboring

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

    droge boring - droge boring

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

    edelmanboring - edelmanboring

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

    geen boring - geen boring

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

    gestoken boring - gestoken boring

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

    graafmachine - graafmachine

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

    handboring - handboring

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

    kernboring - kernboring

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

    lansen - lansen

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

    lepelboring - lepelboring

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

    luchthamer - luchthamer

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

    luchthevelboren of air-lift boren - luchthevelboren of air-lift boren

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

    meerdere technieken - meerdere technieken

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

    omgek. spoelboring - omgek. spoelboring

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

    onbekend - onbekend

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

    pulsboring - pulsboring

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

    ramkernboring - ramkernboring

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

    rollerbit - rollerbit

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

    slagboring - slagboring

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

    spade - spade

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

    spiraalboring - spiraalboring

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

    spoelboring - spoelboring

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

    steenboring - steenboring

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

    trilboring - trilboring

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

    zuigboring - zuigboring

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

erkenning - In het kader van welke discipline de boring werd uitgevoerd. Deze codelijst bevat de verschillende disciplines van erkende boorbedrijven uit artikel 6, 7°, a) van VLAREL.

  • 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", "

    1. Bemalingen en draineringen - 1. Bemalingen en draineringen

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

    2. Andere grondwaterwinningen - 2. Andere grondwaterwinningen

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

    3. Stabiliteitsboringen en geotechnische boringen - 3. Stabiliteitsboringen en geotechnische boringen

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

    4. Verticale boringen - 4. Verticale boringen

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

    5. Andere boringen - 5. Andere boringen

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

opdrachtgever - De organisatie die de opdracht gaf om de boring uit te voeren. Heeft als waarde 'onbekend' indien de opdrachtgever niet gekend is.

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

informele_stratigrafie - Geeft aan of er aan de boring minstens één interpretatie van het type 'informele stratigrafie' gekoppeld is.

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

formele_stratigrafie - Geeft aan of er aan de boring minstens één interpretatie van het type 'formele stratigrafie' gekoppeld is.

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

lithologische_beschrijving - Geeft aan of er aan de boring minstens één interpretatie van het type 'lithologische beschrijving' gekoppeld is.

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

gecodeerde_lithologie - Geeft aan of er aan de boring minstens één interpretatie van het type 'gecodeerde lithologie' gekoppeld is.

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

hydrogeologische_stratigrafie - Geeft aan of er aan de boring minstens één interpretatie van het type 'hydrogeologische stratigrafie' gekoppeld is.

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

quartaire_stratigrafie - Geeft aan of er aan de boring minstens één interpretatie van het type 'quartaire stratigrafie' gekoppeld is.

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

geotechnische_codering - Geeft aan of er aan de boring minstens één interpretatie van het type 'geotechnische codering' gekoppeld is.

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

informele_hydrostratigrafie - Geeft aan of er aan de boring minstens één interpretatie van het type 'informele hydrostratigrafie' gekoppeld is.

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

doorheen_quartair - Geeft aan of de boring dieper ging dan de grens van het Quartair en het Neogeen/Paleogeen (Tertiair). Dit veld is enkel ingevuld indien er minstens één interpretatie van het type 'formele stratigrafie' gekoppeld is aan de boring én het Quartair geïnterpreteerd werd.

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

dikte_quartair - Dit veld geeft de dikte weer van het Quartair (in meter). Dit is een getal met twee decimalen, soms voorafgegaan door < of >= (bv. >= 10.00).

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

tertiair_onder_quartair - Indien 'doorheen_quartair' true is bevat dit veld de afkorting van de eerste lithostratigrafische eenheid van het Neogeen/Paleogeen (Tertiair) die voorkomt onder het Quartair.

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

opdrachten - De DOV-opdracht(en) waaraan de boring gekoppeld is.

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

eerste_invoer - Het tijdstip waarop deze boring 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_boring_van - Startdiepte van de boring (in meter).

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

boorgatmeting - Is er een boorgatmeting uitgevoerd (ja/nee).

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

diepte_methode_van - Bovenkant van de laag die met een bepaalde methode aangeboord werd, in meter.

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

diepte_methode_tot - Onderkant van de laag die met een bepaalde methode aangeboord werd, in meter.

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

boormethode - Boormethode voor het diepte-interval.

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

mv_mtaw - Maaiveldhoogte in mTAW op dag dat de boring uitgevoerd werd.

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

\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "boring" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example use cases" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get boreholes in a bounding box" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get data for all the boreholes that are geographically located within the bounds of the specified box.\n", "\n", "The coordinates are in the Belgian Lambert72 (EPSG:31370) coordinate system and are given in the order of lower left x, lower left y, upper right x, upper right y." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\n", "[000/001] .\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_boringboornummerxymv_mtawstart_boring_mtawgemeentediepte_boring_vandiepte_boring_totdatum_aanvanguitvoerderboorgatmetingdiepte_methode_vandiepte_methode_totboormethode
0https://www.dov.vlaanderen.be/data/boring/1974...GEO-74/254-b1153147.0206931.0NaN14.12NaN0.014.051974-07-02Rijksinstituut voor GrondmechanicaFalse0.01.30lepelboring
1https://www.dov.vlaanderen.be/data/boring/1974...GEO-74/254-b1153147.0206931.0NaN14.12NaN0.014.051974-07-02Rijksinstituut voor GrondmechanicaFalse1.313.50pulsboring
2https://www.dov.vlaanderen.be/data/boring/1974...GEO-74/254-b1153147.0206931.0NaN14.12NaN0.014.051974-07-02Rijksinstituut voor GrondmechanicaFalse13.514.05lepelboring
\n", "
" ], "text/plain": [ " pkey_boring boornummer x \\\n", "0 https://www.dov.vlaanderen.be/data/boring/1974... GEO-74/254-b1 153147.0 \n", "1 https://www.dov.vlaanderen.be/data/boring/1974... GEO-74/254-b1 153147.0 \n", "2 https://www.dov.vlaanderen.be/data/boring/1974... GEO-74/254-b1 153147.0 \n", "\n", " y mv_mtaw start_boring_mtaw gemeente diepte_boring_van \\\n", "0 206931.0 NaN 14.12 NaN 0.0 \n", "1 206931.0 NaN 14.12 NaN 0.0 \n", "2 206931.0 NaN 14.12 NaN 0.0 \n", "\n", " diepte_boring_tot datum_aanvang uitvoerder \\\n", "0 14.05 1974-07-02 Rijksinstituut voor Grondmechanica \n", "1 14.05 1974-07-02 Rijksinstituut voor Grondmechanica \n", "2 14.05 1974-07-02 Rijksinstituut voor Grondmechanica \n", "\n", " boorgatmeting diepte_methode_van diepte_methode_tot boormethode \n", "0 False 0.0 1.30 lepelboring \n", "1 False 1.3 13.50 pulsboring \n", "2 False 13.5 14.05 lepelboring " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pydov.util.location import Within, Box\n", "\n", "df = boring.search(location=Within(Box(153145, 206930, 153150, 206935, epsg=31370)))\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The dataframe contains one borehole where three methods ('boormethode') were applied for its construction. The available data are flattened to represent unique attributes per row of the dataframe.\n", "\n", "Using the *pkey_boring* field one can request the details of this borehole in a webbrowser:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "https://www.dov.vlaanderen.be/data/boring/1974-010351\n" ] } ], "source": [ "for pkey_boring in set(df.pkey_boring):\n", " print(pkey_boring)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get boreholes with specific properties" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next to querying boreholes based on their geographic location within a bounding box, we can also search for boreholes matching a specific set of properties. For this we can build a query using a combination of the 'Boring' fields and operators provided by the WFS protocol.\n", "\n", "A list of possible operators can be found below:" ] }, { "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": [ "[i for i,j in inspect.getmembers(sys.modules['owslib.fes2'], inspect.isclass) if 'Property' in i]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example we build a query using the *PropertyIsEqualTo* operator to find all boreholes that are within the community (gemeente) of 'Herstappe':" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\n", "[000/002] ..\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", "
pkey_boringboornummerxymv_mtawstart_boring_mtawgemeentediepte_boring_vandiepte_boring_totdatum_aanvanguitvoerderboorgatmetingdiepte_methode_vandiepte_methode_totboormethode
0https://www.dov.vlaanderen.be/data/boring/2016...kb33d106e-B236224687.4158191.0124.0124.0Herstappe0.06.0NaNBelgische Geologische Dienst (BGD)False0.06.0gestoken boring
1https://www.dov.vlaanderen.be/data/boring/1993...kb41d120e-B1027224820.0157794.0132.0132.0Herstappe0.050.01993-09-02Peeters-RamselFalse0.050.0onbekend
\n", "
" ], "text/plain": [ " pkey_boring boornummer \\\n", "0 https://www.dov.vlaanderen.be/data/boring/2016... kb33d106e-B236 \n", "1 https://www.dov.vlaanderen.be/data/boring/1993... kb41d120e-B1027 \n", "\n", " x y mv_mtaw start_boring_mtaw gemeente \\\n", "0 224687.4 158191.0 124.0 124.0 Herstappe \n", "1 224820.0 157794.0 132.0 132.0 Herstappe \n", "\n", " diepte_boring_van diepte_boring_tot datum_aanvang \\\n", "0 0.0 6.0 NaN \n", "1 0.0 50.0 1993-09-02 \n", "\n", " uitvoerder boorgatmeting diepte_methode_van \\\n", "0 Belgische Geologische Dienst (BGD) False 0.0 \n", "1 Peeters-Ramsel False 0.0 \n", "\n", " diepte_methode_tot boormethode \n", "0 6.0 gestoken boring \n", "1 50.0 onbekend " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from owslib.fes2 import PropertyIsEqualTo\n", "\n", "query = PropertyIsEqualTo(propertyname='gemeente',\n", " literal='Herstappe')\n", "df = boring.search(query=query)\n", "\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once again we can use the *pkey_boring* as a permanent link to the information of these boreholes:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "https://www.dov.vlaanderen.be/data/boring/2016-125511\n", "https://www.dov.vlaanderen.be/data/boring/1993-096210\n" ] } ], "source": [ "for pkey_boring in set(df.pkey_boring):\n", " print(pkey_boring)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get boreholes in a bounding box based on specific properties" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can combine a query on attributes with a query on geographic location to get the boreholes within a bounding box that have specific properties.\n", "\n", "The following example requests the boreholes with a depth greater than or equal to 2000 meters within the given bounding box.\n", "\n", "(Note that the datatype of the *literal* parameter should be a string, regardless of the datatype of this field in the output dataframe.)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\n", "[000/006] ......\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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_boringboornummerxymv_mtawstart_boring_mtawgemeentediepte_boring_vandiepte_boring_totdatum_aanvanguitvoerderboorgatmetingdiepte_methode_vandiepte_methode_totboormethode
0https://www.dov.vlaanderen.be/data/boring/2016...B/1-102782201775.5212960.025.025.0Mol0.03600.0NaNNaNFalse0.00.0onbekend
1https://www.dov.vlaanderen.be/data/boring/2016...B/1-102783201798.0212963.025.025.0Mol0.03600.0NaNNaNFalse0.00.0onbekend
2https://www.dov.vlaanderen.be/data/boring/2016...B/1-102784201768.0212959.025.025.0Mol0.04905.02017-12-13THV Daldrup - SmetTrue0.0207.0zuigboring
3https://www.dov.vlaanderen.be/data/boring/2016...B/1-102784201768.0212959.025.025.0Mol0.04905.02017-12-13THV Daldrup - SmetTrue207.04905.0spoelboring
4https://www.dov.vlaanderen.be/data/boring/2016...B/1-102785201790.5212962.025.025.0Mol0.04341.02016-03-02THV Daldrup - SmetTrue0.04341.0spoelboring
\n", "
" ], "text/plain": [ " pkey_boring boornummer x \\\n", "0 https://www.dov.vlaanderen.be/data/boring/2016... B/1-102782 201775.5 \n", "1 https://www.dov.vlaanderen.be/data/boring/2016... B/1-102783 201798.0 \n", "2 https://www.dov.vlaanderen.be/data/boring/2016... B/1-102784 201768.0 \n", "3 https://www.dov.vlaanderen.be/data/boring/2016... B/1-102784 201768.0 \n", "4 https://www.dov.vlaanderen.be/data/boring/2016... B/1-102785 201790.5 \n", "\n", " y mv_mtaw start_boring_mtaw gemeente diepte_boring_van \\\n", "0 212960.0 25.0 25.0 Mol 0.0 \n", "1 212963.0 25.0 25.0 Mol 0.0 \n", "2 212959.0 25.0 25.0 Mol 0.0 \n", "3 212959.0 25.0 25.0 Mol 0.0 \n", "4 212962.0 25.0 25.0 Mol 0.0 \n", "\n", " diepte_boring_tot datum_aanvang uitvoerder boorgatmeting \\\n", "0 3600.0 NaN NaN False \n", "1 3600.0 NaN NaN False \n", "2 4905.0 2017-12-13 THV Daldrup - Smet True \n", "3 4905.0 2017-12-13 THV Daldrup - Smet True \n", "4 4341.0 2016-03-02 THV Daldrup - Smet True \n", "\n", " diepte_methode_van diepte_methode_tot boormethode \n", "0 0.0 0.0 onbekend \n", "1 0.0 0.0 onbekend \n", "2 0.0 207.0 zuigboring \n", "3 207.0 4905.0 spoelboring \n", "4 0.0 4341.0 spoelboring " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from owslib.fes2 import PropertyIsGreaterThanOrEqualTo\n", "\n", "query = PropertyIsGreaterThanOrEqualTo(\n", " propertyname='diepte_boring_tot',\n", " literal='2000')\n", "\n", "df = boring.search(\n", " location=Within(Box(200000, 211000, 205000, 214000, epsg=31370)),\n", " query=query\n", " )\n", "\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can look at one of the boreholes in a webbrowser using its *pkey_boring*:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "https://www.dov.vlaanderen.be/data/boring/2016-148766\n", "https://www.dov.vlaanderen.be/data/boring/2016-148763\n", "https://www.dov.vlaanderen.be/data/boring/2016-148764\n", "https://www.dov.vlaanderen.be/data/boring/2016-148767\n", "https://www.dov.vlaanderen.be/data/boring/2016-148765\n", "https://www.dov.vlaanderen.be/data/boring/2016-148770\n" ] } ], "source": [ "for pkey_boring in set(df.pkey_boring):\n", " print(pkey_boring)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Select boreholes in a municipality and return depth" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can limit the columns in the output dataframe by specifying the *return_fields* parameter in our search.\n", "\n", "In this example we query all the boreholes in the city of Ghent and return their depth:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\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", "
diepte_boring_tot
042.0
132.0
259.0
311.0
427.0
\n", "
" ], "text/plain": [ " diepte_boring_tot\n", "0 42.0\n", "1 32.0\n", "2 59.0\n", "3 11.0\n", "4 27.0" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "query = PropertyIsEqualTo(propertyname='gemeente',\n", " literal='Gent')\n", "df = boring.search(query=query,\n", " return_fields=('diepte_boring_tot',))\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "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", "
diepte_boring_tot
count3406.000000
mean20.845161
std38.319787
min0.000000
25%2.400000
50%7.000000
75%20.000000
max660.000000
\n", "
" ], "text/plain": [ " diepte_boring_tot\n", "count 3406.000000\n", "mean 20.845161\n", "std 38.319787\n", "min 0.000000\n", "25% 2.400000\n", "50% 7.000000\n", "75% 20.000000\n", "max 660.000000" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By discarding the boreholes with a depth of 0 m, we get a different result:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "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", "
diepte_boring_tot
count2749.000000
mean25.827072
std41.118876
min0.100000
25%5.000000
50%10.000000
75%24.000000
max660.000000
\n", "
" ], "text/plain": [ " diepte_boring_tot\n", "count 2749.000000\n", "mean 25.827072\n", "std 41.118876\n", "min 0.100000\n", "25% 5.000000\n", "50% 10.000000\n", "75% 24.000000\n", "max 660.000000" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df.diepte_boring_tot != 0].describe()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGzCAYAAADJ3dZzAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAATfpJREFUeJzt3XlUFFfaBvCnaZqtsUFUNkUg4qAobpggijuIglEUYkyMop/RjHGJIho1i0symnGNyURNZhHjqJNREScIBlQEVFQ0UeMacFxi2IxKt4BC09T3h6drbEFtFGgsnt85nFj33qp6i9D0Q9WtapkgCAKIiIiIJMrM1AUQERER1SWGHSIiIpI0hh0iIiKSNIYdIiIikjSGHSIiIpI0hh0iIiKSNIYdIiIikjSGHSIiIpI0hh0iIiKSNIYdarQWLVoEmUxWL/vq168f+vXrJy4fPHgQMpkMO3bsqJf9jx8/Hh4eHvWyr4fV93Eay8PDA0OHDq217V29ehUymQyxsbG1tk1T7udxYmNjIZPJcOLECZPsn+hZMeyQJOh/Ceu/rKys4OrqipCQEHzxxRe4e/durewnNzcXixYtwqlTp2ple7WpIddGL5Z169bVaaA6c+YMJkyYAE9PT1hZWcHW1hZdunTB3Llz8d///rfO9qu3dOlSxMfH1/l+qOFg2CFJWbJkCTZv3oz169dj+vTpAICZM2fC19cXZ86cMRj74Ycf4t69ezXafm5uLhYvXlzjQJGcnIzk5OQarVNTT6rtr3/9Ky5dulSn+yfpqMuw89e//hXdunVDUlISRo4ciS+//BIrVqxAr1698O2336Jdu3bQ6XR1sm89hp3Gx9zUBRDVpiFDhqB79+7i8vz583HgwAEMHToUw4YNw4ULF2BtbQ0AMDc3h7l53b4ESktLYWNjAwsLizrdz9MoFAqT7r+ulZSUQKlUmroMeoojR45gypQp6NWrFxISEtCkSROD/lWrVuFPf/qTiaojKeOZHZK8AQMG4KOPPsK1a9fwz3/+U2yvbs5OSkoKAgMDYW9vD1tbW3h7e2PBggUAHsw/efnllwEAEyZMEC+Z6f8C7tevHzp27IiTJ0+iT58+sLGxEdd9dM6Onk6nw4IFC+Ds7AylUolhw4bh119/NRjj4eGB8ePHV1n34W0+rbbq5uyUlJRg9uzZcHNzg6WlJby9vbFy5UoIgmAwTiaTYdq0aYiPj0fHjh1haWmJDh06YO/evdV/w6thzHECwPbt2+Hn5wdra2s0b94cb731Fn777TeDMePHj4etrS0uX76M0NBQNGnSBGPGjAEAVFZW4vPPP0eHDh1gZWUFJycnvPPOO7hz5061dR06dAivvPIKrKys8NJLL+Hbb7+tMua///0vXnvtNTg4OMDGxgY9evTAnj17jDruixcvIjIyEg4ODrCyskL37t3xn//8x6h1i4qKMH78eNjZ2cHe3h5RUVEoKip65v3oL/Wmp6fjnXfeQbNmzaBSqTBu3DiD74+HhwfOnTuHtLQ08efo0Z/dsrIyREdHo0WLFlAqlRgxYgRu3rz51GNavHgxZDIZtmzZUiXoAICVlRU++eQTyOVyg/Zjx45h8ODBsLOzg42NDfr27YvDhw8bjNG/nnNycjB+/HjY29vDzs4OEyZMQGlpqThOJpOhpKQEmzZtEo+vutcXSQvDDjUKY8eOBYAnXko6d+4chg4dirKyMixZsgSrVq3CsGHDxF+q7du3x5IlSwAAkydPxubNm7F582b06dNH3MatW7cwZMgQdOnSBZ9//jn69+//xLr+9Kc/Yc+ePXj//fcxY8YMpKSkICgoqMaX14yp7WGCIGDYsGFYs2YNBg8ejNWrV8Pb2xtz5sxBdHR0lfGHDh3Cu+++i9GjR2P58uW4f/8+IiIicOvWLaPqM+Y4Y2NjMWrUKMjlcixbtgyTJk1CXFwcAgMDq7zJV1RUICQkBI6Ojli5ciUiIiIAAO+88w7mzJmDXr16Ye3atZgwYQK2bNmCkJAQaLVag23k5OQgMjISwcHBWLVqFZo2bYrx48fj3Llz4piCggL07NkTP/zwA95991386U9/wv379zFs2DDs2rXricd87tw59OjRAxcuXMC8efOwatUqKJVKhIeHP3VdQRAwfPhwbN68GW+99RY+/fRT3LhxA1FRUc+9n2nTpuHChQtYtGgRxo0bhy1btiA8PFwMuZ9//jlatWqFdu3aiT9HH3zwgcE2pk+fjtOnT2PhwoWYMmUKvv/+e0ybNu2Jx1RaWooDBw6gX79+aNWq1RPHPuzAgQPo06cPNBoNFi5ciKVLl6KoqAgDBgzA8ePHq4wfNWoU7t69i2XLlmHUqFGIjY3F4sWLxf7NmzfD0tISvXv3Fo/vnXfeMboeekEJRBKwceNGAYCQlZX12DF2dnZC165dxeWFCxcKD78E1qxZIwAQbt68+dhtZGVlCQCEjRs3Vunr27evAEDYsGFDtX19+/YVl1NTUwUAQsuWLQWNRiO2//vf/xYACGvXrhXb3N3dhaioqKdu80m1RUVFCe7u7uJyfHy8AED49NNPDcZFRkYKMplMyMnJEdsACBYWFgZtp0+fFgAIX375ZZV9PczY4ywvLxccHR2Fjh07Cvfu3RPHJSQkCACEjz/+2OBYAAjz5s0z2FdGRoYAQNiyZYtB+969e6u0u7u7CwCE9PR0sa2wsFCwtLQUZs+eLbbNnDlTACBkZGSIbXfv3hU8PT0FDw8PQafTCYIgCFeuXKnyvR84cKDg6+sr3L9/X2yrrKwUevbsKbRt2/aJ3zf9/5/ly5eLbRUVFULv3r2feT/614ifn59QXl4uti9fvlwAIOzevVts69Chg8HP1qPbCAoKEiorK8X2WbNmCXK5XCgqKnrsMel/ZmbOnFml79atW8LNmzfFr7KyMvE42rZtK4SEhBjsr7S0VPD09BSCg4PFNv3r+f/+7/8Mtj1ixAihWbNmBm1KpbLa1xRJF8/sUKNha2v7xLuy7O3tAQC7d+9GZWXlM+3D0tISEyZMMHr8uHHjDE7nR0ZGwsXFBYmJic+0f2MlJiZCLpdjxowZBu2zZ8+GIAhISkoyaA8KCkKbNm3E5U6dOkGlUhl958zTjvPEiRMoLCzEu+++CysrK3FcWFgY2rVrV+1loylTphgsb9++HXZ2dggODsbvv/8ufvn5+cHW1hapqakG4318fNC7d29xuUWLFvD29jY4psTERLzyyisIDAwU22xtbTF58mRcvXoV58+fr/Z4b9++jQMHDohnGfS13Lp1CyEhIcjOzq5yee5hiYmJMDc3NzhGuVwuTrp/nv1MnjzZYA7XlClTYG5uXqOfucmTJxtcAu7duzd0Oh2uXbv22HU0Gg2AB9+/R7300kto0aKF+KW/BHfq1ClkZ2fjzTffxK1bt8TjKykpwcCBA5Genl7ltfrHP/7RYLl37964deuWuH9qnDhBmRqN4uJiODo6Prb/9ddfx9/+9je8/fbbmDdvHgYOHIiRI0ciMjISZmbG/V3QsmXLGk1Gbtu2rcGyTCaDl5cXrl69avQ2nsW1a9fg6upaZd5E+/btxf6HtW7duso2mjZt+ti5MI962nHq9+ft7V1l3Xbt2uHQoUMGbebm5lUuhWRnZ0OtVj/2/3FhYaHBsjHHdO3aNfj7+1cZ9/D3qWPHjlX6c3JyIAgCPvroI3z00UePradly5bV9l27dg0uLi5VgsGj359n2c+j/y9sbW3h4uJSo5+5R793TZs2BYAn/jzof9aKi4ur9O3evRtarRanT59GTEyM2J6dnQ0A1V6+01Or1eL+n1abSqV67HZI2hh2qFG4ceMG1Go1vLy8HjvG2toa6enpSE1NxZ49e7B371589913GDBgAJKTk6tMmnzcNmrb4x58qNPpjKqpNjxuP8Ijk5nri6WlZZUAWllZCUdHR2zZsqXadVq0aGGwXJfHpD/bEBMTg5CQkGrHPOlnsaHt51HP8r3z8vKCubk5zp49W6Wvb9++AFDl7kj98a1YsQJdunSpdruPBsKG9rNKDQPDDjUKmzdvBoDHviHomZmZYeDAgRg4cCBWr16NpUuX4oMPPkBqaiqCgoJq/YnL+r9c9QRBQE5ODjp16iS2NW3atNq7cK5du4aXXnpJXK5Jbe7u7ti3bx/u3r1rcHbn4sWLYn9tetpx6vd36dIlDBgwwGDspUuXjKqnTZs22LdvH3r16lVrodPd3b3a5xM97fuk//+iUCgQFBT0TPvdv38/iouLDd7MH63lWfaTnZ1tMHG+uLgYeXl5CA0NFdvq4sniSqUS/fr1Q1paGn777bfHntV6mP7SqUqleqbv4+PU15PTqeHgnB2SvAMHDuCTTz6Bp6eneItydW7fvl2lTf/XZFlZGQCIz3J53C3ANfXtt98azCPasWMH8vLyMGTIELGtTZs2OHr0KMrLy8W2hISEKrdu16S20NBQ6HQ6/OUvfzFoX7NmDWQymcH+a8PTjrN79+5wdHTEhg0bxO81ACQlJeHChQsICwt76j5GjRoFnU6HTz75pEpfRUXFM/0/Cw0NxfHjx5GZmSm2lZSU4JtvvoGHhwd8fHyqXc/R0RH9+vXD119/jby8vCr9T7tNOzQ0FBUVFVi/fr3YptPp8OWXXz73fr755huDO9PWr1+PiooKg//nSqWy1n7GH/bxxx9Dp9PhrbfeqvZy1qNnX/z8/NCmTRusXLmy2vHG3O5enbo6Pmq4eGaHJCUpKQkXL15ERUUFCgoKcODAAaSkpMDd3R3/+c9/DCa/PmrJkiVIT09HWFgY3N3dUVhYiHXr1qFVq1biBNU2bdrA3t4eGzZsQJMmTaBUKuHv7w9PT89nqtfBwQGBgYGYMGECCgoK8Pnnn8PLywuTJk0Sx7z99tvYsWMHBg8ejFGjRuHy5cv45z//aTBhuKa1vfrqq+jfvz8++OADXL16FZ07d0ZycjJ2796NmTNnVtn283racSoUCvz5z3/GhAkT0LdvX7zxxhsoKCjA2rVr4eHhgVmzZj11H3379sU777yDZcuW4dSpUxg0aBAUCgWys7Oxfft2rF27FpGRkTWqe968edi2bRuGDBmCGTNmwMHBAZs2bcKVK1ewc+fOJ87l+uqrrxAYGAhfX19MmjQJL730EgoKCpCZmYkbN27g9OnTj1331VdfRa9evTBv3jxcvXoVPj4+iIuLg1qtfu79lJeXY+DAgRg1ahQuXbqEdevWITAwEMOGDRPH+Pn5Yf369fj000/h5eUFR0fHKmfcnkXv3r3xl7/8BdOnT0fbtm0xZswYtGvXDuXl5fjll1+wZcsWWFhYwNnZGcCDM61/+9vfMGTIEHTo0AETJkxAy5Yt8dtvvyE1NRUqlQrff/99jevw8/PDvn37sHr1ari6usLT07PauVkkIaa6DYyoNulvidV/WVhYCM7OzkJwcLCwdu1ag9ue9R699Xz//v3C8OHDBVdXV8HCwkJwdXUV3njjDeGXX34xWG/37t2Cj4+PYG5ubnAbcN++fYUOHTpUW9/jbj3ftm2bMH/+fMHR0VGwtrYWwsLChGvXrlVZf9WqVULLli0FS0tLoVevXsKJEyeqbPNJtT1667kgPLiFetasWYKrq6ugUCiEtm3bCitWrDC4xVcQHtx6PnXq1Co1Pe6W+IfV9Di/++47oWvXroKlpaXg4OAgjBkzRrhx44bBmKioKEGpVD52n998843g5+cnWFtbC02aNBF8fX2FuXPnCrm5uQa1h4WFVVm3uu/p5cuXhcjISMHe3l6wsrISXnnlFSEhIcFgTHW3nuvXHTdunODs7CwoFAqhZcuWwtChQ4UdO3Y8tn69W7duCWPHjhVUKpVgZ2cnjB07Vvjpp5+eeT/610haWpowefJkoWnTpoKtra0wZswY4datWwbby8/PF8LCwoQmTZoIAMTvyeMe8aD//5yamvrU4xIEQfjpp5+EcePGCa1btxYsLCwEpVIpdOrUSZg9e7bBIw4eHj9y5EihWbNmgqWlpeDu7i6MGjVK2L9/vzhG/3p+9NER+pqvXLkitl28eFHo06ePYG1tLQDgbeiNgEwQOGuLiEjqYmNjMWHCBGRlZRl8pApRY8A5O0RERCRpDDtEREQkaQw7REREJGmcs0NERESSxjM7REREJGkMO0RERCRpfKggHnz+Sm5uLpo0acLHiBMREb0gBEHA3bt34erq+sSHfDLsAMjNzYWbm5upyyAiIqJn8Ouvv6JVq1aP7WfYAcQPQvz111+hUqlMXA0R1SatVovk5GTx4yOISDo0Gg3c3NwMPtC4Ogw7+N8n4KpUKoYdIonRarWwsbGBSqVi2CGSqKdNQeEEZSIiIpI0hh0iIiKSNIYdIiIikjSGHSIiIpI0hh0iIiKSNIYdIiIikjSGHSIiIpI0hh0iIiKSNIYdIpIsnU6HtLQ0pKenIy0tDTqdztQlEZEJMOwQkSTFxcXBy8sLwcHBWL16NYKDg+Hl5YW4uDhTl0ZE9Yxhh4gkJy4uDpGRkfD19UVGRga2bduGjIwM+Pr6IjIykoGHqJGRCYIgmLoIU9NoNLCzs4NareZnYxG94HQ6Hby8vODr64v4+HjodDokJiYiNDQUcrkc4eHhOHv2LLKzsyGXy01dLhE9B2Pfv3lmh4gkJSMjA1evXsWCBQtgZmb4K87MzAzz58/HlStXkJGRYaIKiai+MewQkaTk5eUBADp27Fhtv75dP46IpI9hh4gkxcXFBQBw9uzZavv17fpxRCR9DDtEJCm9e/eGh4cHli5disrKSoO+yspKLFu2DJ6enujdu7eJKiSi+sawQ0SSIpfLsWrVKiQkJCA8PBxHjx7FvXv3cPToUYSHhyMhIQErV67k5GSiRsTc1AUQEdW2kSNHYseOHZg9ezb69Okjtnt6emLHjh0YOXKkCasjovrGW8/BW8+JpEqn0yE1NRVJSUkYMmQI+vfvzzM6RBJi7Ps3z+wQkWTJ5XL07dsXJSUl6Nu3L4MOUSPFOTtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7RCRZOp0OaWlpSE9PR1paGnQ6nalLIiITMHnY+e233/DWW2+hWbNmsLa2hq+vL06cOCH2C4KAjz/+GC4uLrC2tkZQUBCys7MNtnH79m2MGTMGKpUK9vb2mDhxIoqLi+v7UIioAYmLi4OXlxeCg4OxevVqBAcHw8vLC3FxcaYujYjqmUnDzp07d9CrVy8oFAokJSXh/PnzWLVqFZo2bSqOWb58Ob744gts2LABx44dg1KpREhICO7fvy+OGTNmDM6dO4eUlBQkJCQgPT0dkydPNsUhEVEDEBcXh8jISPj6+iIjIwPbtm1DRkYGfH19ERkZycBD1MjIBEEQTLXzefPm4fDhw8jIyKi2XxAEuLq6Yvbs2YiJiQEAqNVqODk5ITY2FqNHj8aFCxfg4+ODrKwsdO/eHQCwd+9ehIaG4saNG3B1dX1qHRqNBnZ2dlCr1VCpVLV3gERU73Q6Hby8vODr64v4+HjodDokJiYiNDQUcrkc4eHhOHv2LLKzsyGXy01dLhE9B2Pfv83rsaYq/vOf/yAkJASvvfYa0tLS0LJlS7z77ruYNGkSAODKlSvIz89HUFCQuI6dnR38/f2RmZmJ0aNHIzMzE/b29mLQAYCgoCCYmZnh2LFjGDFiRJX9lpWVoaysTFzWaDQAAK1WC61WW1eHS0T1IC0tDVevXsXmzZuh0+nE17T+v3PmzEGfPn2QmpqKvn37mrJUInpOxr5nmzTs/Pe//8X69esRHR2NBQsWICsrCzNmzICFhQWioqKQn58PAHBycjJYz8nJSezLz8+Ho6OjQb+5uTkcHBzEMY9atmwZFi9eXKU9OTkZNjY2tXFoRGQi6enpAIAbN27g1q1bYntKSgoA4N69ewCApKQklJSU1H+BRFRrSktLjRpn0rBTWVmJ7t27Y+nSpQCArl274uzZs9iwYQOioqLqbL/z589HdHS0uKzRaODm5oZBgwbxMhbRC06pVGL16tVo1aoV/P39odVqkZKSguDgYCgUChw9ehQAMGTIEJ7ZIXrB6a/MPI1Jw46Liwt8fHwM2tq3b4+dO3cCAJydnQEABQUFcHFxEccUFBSgS5cu4pjCwkKDbVRUVOD27dvi+o+ytLSEpaVllXaFQgGFQvHMx0NEpte/f394eHhg+fLliI+PF9sVCgXkcjlWrFgBT09P9O/fn3N2iF5wxr5nm/RurF69euHSpUsGbb/88gvc3d0BAJ6ennB2dsb+/fvFfo1Gg2PHjiEgIAAAEBAQgKKiIpw8eVIcc+DAAVRWVsLf378ejoKIGhK5XI5Vq1YhISEB4eHhOHr0KO7du4ejR48iPDwcCQkJWLlyJYMOUWMimNDx48cFc3Nz4U9/+pOQnZ0tbNmyRbCxsRH++c9/imM+++wzwd7eXti9e7dw5swZYfjw4YKnp6dw7949cczgwYOFrl27CseOHRMOHToktG3bVnjjjTeMrkOtVgsABLVaXavHR0Sms3PnTsHDw0MAIH55enoKO3fuNHVpRFRLjH3/Numt5wCQkJCA+fPnIzs7G56enoiOjhbvxgIe3H6+cOFCfPPNNygqKkJgYCDWrVuHP/zhD+KY27dvY9q0afj+++9hZmaGiIgIfPHFF7C1tTWqBt56TiRNOp0OqampSEpKwpAhQ3jpikhijH3/NnnYaQgYdoikS6vVis/Z4Zw8Imkx9v3b5B8XQURERFSXGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSTBp2Fi1aBJlMZvDVrl07sf/+/fuYOnUqmjVrBltbW0RERKCgoMBgG9evX0dYWBhsbGzg6OiIOXPmoKKior4PhYiIiBooc1MX0KFDB+zbt09cNjf/X0mzZs3Cnj17sH37dtjZ2WHatGkYOXIkDh8+DADQ6XQICwuDs7Mzjhw5gry8PIwbNw4KhQJLly6t92MhIiKihsfkYcfc3BzOzs5V2tVqNf7+979j69atGDBgAABg48aNaN++PY4ePYoePXogOTkZ58+fx759++Dk5IQuXbrgk08+wfvvv49FixbBwsKivg+HiIiIGhiTh53s7Gy4urrCysoKAQEBWLZsGVq3bo2TJ09Cq9UiKChIHNuuXTu0bt0amZmZ6NGjBzIzM+Hr6wsnJydxTEhICKZMmYJz586ha9eu1e6zrKwMZWVl4rJGowEAaLVaaLXaOjpSIjIF/Wuar20i6TH2dW3SsOPv74/Y2Fh4e3sjLy8PixcvRu/evXH27Fnk5+fDwsIC9vb2Bus4OTkhPz8fAJCfn28QdPT9+r7HWbZsGRYvXlylPTk5GTY2Ns95VETUEKWkpJi6BCKqZaWlpUaNM2nYGTJkiPjvTp06wd/fH+7u7vj3v/8Na2vrOtvv/PnzER0dLS5rNBq4ublh0KBBUKlUdbZfIqp/Wq0WKSkpCA4OhkKhMHU5RFSL9Fdmnsbkl7EeZm9vjz/84Q/IyclBcHAwysvLUVRUZHB2p6CgQJzj4+zsjOPHjxtsQ3+3VnXzgPQsLS1haWlZpV2hUPCXIZFE8fVNJD3GvqYb1HN2iouLcfnyZbi4uMDPzw8KhQL79+8X+y9duoTr168jICAAABAQEICff/4ZhYWF4piUlBSoVCr4+PjUe/1ERETU8Jj0zE5MTAxeffVVuLu7Izc3FwsXLoRcLscbb7wBOzs7TJw4EdHR0XBwcIBKpcL06dMREBCAHj16AAAGDRoEHx8fjB07FsuXL0d+fj4+/PBDTJ06tdozN0RERNT4mDTs3LhxA2+88QZu3bqFFi1aIDAwEEePHkWLFi0AAGvWrIGZmRkiIiJQVlaGkJAQrFu3TlxfLpcjISEBU6ZMQUBAAJRKJaKiorBkyRJTHRIRERE1MDJBEARTF2FqGo0GdnZ2UKvVnKBMJDFarRaJiYkIDQ3lnB0iiTH2/btBzdkhIiIiqm0MO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkMO0RERCRpDDtEREQkaQw7REREJGkNJux89tlnkMlkmDlzpth2//59TJ06Fc2aNYOtrS0iIiJQUFBgsN7169cRFhYGGxsbODo6Ys6cOaioqKjn6omIiKihahBhJysrC19//TU6depk0D5r1ix8//332L59O9LS0pCbm4uRI0eK/TqdDmFhYSgvL8eRI0ewadMmxMbG4uOPP67vQyAiIqIGyuRhp7i4GGPGjMFf//pXNG3aVGxXq9X4+9//jtWrV2PAgAHw8/PDxo0bceTIERw9ehQAkJycjPPnz+Of//wnunTpgiFDhuCTTz7BV199hfLyclMdEhERETUg5qYuYOrUqQgLC0NQUBA+/fRTsf3kyZPQarUICgoS29q1a4fWrVsjMzMTPXr0QGZmJnx9feHk5CSOCQkJwZQpU3Du3Dl07dq12n2WlZWhrKxMXNZoNAAArVYLrVZb24dIRCakf03ztU0kPca+rk0adv71r3/hxx9/RFZWVpW+/Px8WFhYwN7e3qDdyckJ+fn54piHg46+X9/3OMuWLcPixYurtCcnJ8PGxqamh0FEL4CUlBRTl0BEtay0tNSocSYLO7/++ivee+89pKSkwMrKql73PX/+fERHR4vLGo0Gbm5uGDRoEFQqVb3WQkR1S6vVIiUlBcHBwVAoFKYuh4hqkf7KzNOYLOycPHkShYWF6Natm9im0+mQnp6Ov/zlL/jhhx9QXl6OoqIig7M7BQUFcHZ2BgA4Ozvj+PHjBtvV362lH1MdS0tLWFpaVmlXKBT8ZUgkUXx9E0mPsa/pGk1QvnDhAhYuXIgBAwagTZs2cHFxQadOnRAVFYWtW7cazIN5moEDB+Lnn3/GqVOnxK/u3btjzJgx4r8VCgX2798vrnPp0iVcv34dAQEBAICAgAD8/PPPKCwsFMekpKRApVLBx8enJodGREREEmXUmZ0ff/wRc+fOxaFDh9CrVy/4+/tjxIgRsLa2xu3bt3H27Fl88MEHmD59OubOnYuZM2dWe+bkYU2aNEHHjh0N2pRKJZo1aya2T5w4EdHR0XBwcIBKpcL06dMREBCAHj16AAAGDRoEHx8fjB07FsuXL0d+fj4+/PBDTJ069an7JyIiosbBqLATERGBOXPmYMeOHVUmDD8sMzMTa9euxapVq7BgwYLnLm7NmjUwMzNDREQEysrKEBISgnXr1on9crkcCQkJmDJlCgICAqBUKhEVFYUlS5Y8976JiIhIGmSCIAhPG6TVamt0rbum401No9HAzs4OarWaE5SJJEar1SIxMRGhoaEv1O8lIno6Y9+/jZqzU9NfEPyFQkRERA3FM92NlZWVhdTUVBQWFqKystKgb/Xq1bVSGBEREVFtqHHYWbp0KT788EN4e3vDyckJMplM7Hv430REREQNQY3Dztq1a/GPf/wD48ePr4NyiIiIiGpXjT8I1MzMDL169aqLWoiIiIhqXY3DzqxZs/DVV1/VRS1EREREta7Gl7FiYmIQFhaGNm3awMfHp8qdV3FxcbVWHBEREdHzqnHYmTFjBlJTU9G/f380a9aMk5KJiIioQatx2Nm0aRN27tyJsLCwuqiHiIiIqFbVeM6Og4MD2rRpUxe1EBEREdW6GoedRYsWYeHChSgtLa2LeoiIiIhqVY0vY33xxRe4fPkynJyc4OHhUWWC8o8//lhrxRERERE9rxqHnfDw8Doog4iIiKhu1DjsLFy4sC7qICIiIqoTRs3ZEQShrusgIiIiqhNGhZ0OHTrgX//6F8rLy584Ljs7G1OmTMFnn31WK8URERERPS+jLmN9+eWXeP/99/Huu+8iODgY3bt3h6urK6ysrHDnzh2cP38ehw4dwrlz5zBt2jRMmTKlrusmIiIiMopRYWfgwIE4ceIEDh06hO+++w5btmzBtWvXcO/ePTRv3hxdu3bFuHHjMGbMGDRt2rSuayYiIiIyWo0mKAcGBiIwMLCuaiEiIiKqdTV+qCARERHRi4Rhh4iIiCSNYYeIiIgkjWGHiIiIJI1hh4iIiCStxh8XAQCVlZXIyclBYWEhKisrDfr69OlTK4URERER1YYah52jR4/izTffxLVr16p8jIRMJoNOp6u14oiInodOp0NaWhrS09OhVCrRv39/yOVyU5dFRPWsxpex/vjHP6J79+44e/Ysbt++jTt37ohft2/frosaiYhqLC4uDl5eXggODsbq1asRHBwMLy8vxMXFmbo0IqpnNQ472dnZWLp0Kdq3bw97e3vY2dkZfBERmVpcXBwiIyPh6+uLjIwMbNu2DRkZGfD19UVkZCQDD1EjU+Ow4+/vj5ycnLqohYjouel0OsyePRtDhw5FfHw8/P39YW1tDX9/f8THx2Po0KGIiYnhJXeiRsSoOTtnzpwR/z19+nTMnj0b+fn58PX1hUKhMBjbqVOn2q2QiKgGMjIycPXqVWzbtg1mZmYGocbMzAzz589Hz549kZGRgX79+pmuUCKqN0aFnS5dukAmkxlMSP6///s/8d/6Pk5QJiJTy8vLAwB07Nix2n59u34cEUmfUWHnypUrdV0HEVGtcHFxAQCcPXsWPXr0qNJ/9uxZg3FEJH1GhR13d3fx3+np6ejZsyfMzQ1XraiowJEjRwzGEhHVt969e8PDwwNLly5FfHy8QV9lZSWWLVsGT09P9O7d2zQFElG9q/Fzdvr374+8vDw4OjoatKvVavTv35+XsYjIpORyOVatWoXIyEgMHz4cwcHByM7OxrVr15CSkoI9e/Zgx44dfN4OUSNS47Cjn5vzqFu3bkGpVNZKUUREz2PkyJGIiYnBmjVrkJCQILabm5sjJiYGI0eONGF1RFTfjA47+l8OMpkM48ePh6Wlpdin0+lw5swZ9OzZs/YrJCKqobi4OKxcuRJhYWHimZ22bdsiJSUFK1euRI8ePRh4iBoRo8OO/oGBgiCgSZMmsLa2FvssLCzQo0cPTJo0qfYrJCKqgUefs6PT6ZCYmIjQ0FBMmzYN4eHhiImJwfDhw3kpi6iRMDrsbNy4EQDg4eGBmJgYXrIiogaJz9khokfVeM7OwoULAQCFhYW4dOkSAMDb27vKhGUiIlPgc3aI6FE1/riIu3fvYuzYsWjZsiX69u2Lvn37omXLlnjrrbegVqvrokYiIqM9/Jyd6vA5O0SNT43Dzttvv41jx44hISEBRUVFKCoqQkJCAk6cOIF33nmnRttav349OnXqBJVKBZVKhYCAACQlJYn99+/fx9SpU9GsWTPY2toiIiICBQUFBtu4fv06wsLCYGNjA0dHR8yZMwcVFRU1PSwikoiHn7NTWVlp0Mfn7BA1TjUOOwkJCfjHP/6BkJAQMaSEhITgr3/9K77//vsabatVq1b47LPPcPLkSZw4cQIDBgzA8OHDce7cOQDArFmz8P3332P79u1IS0tDbm6uwR0UOp0OYWFhKC8vx5EjR7Bp0ybExsbi448/rulhEZFE6J+zk5CQgPDwcBw9ehT37t3D0aNHER4ejoSEBKxcuZKTk4kaE6GG3NzchDNnzlRpP336tNCyZcuabq6Kpk2bCn/729+EoqIiQaFQCNu3bxf7Lly4IAAQMjMzBUEQhMTERMHMzEzIz88Xx6xfv15QqVRCWVmZ0ftUq9UCAEGtVj93/UTUMOzcuVPw8PAQAIhfnp6ews6dO01dGhHVEmPfv2s8QfnDDz9EdHQ0Nm/eDGdnZwBAfn4+5syZg48++uiZQ5dOp8P27dtRUlKCgIAAnDx5ElqtFkFBQeKYdu3aoXXr1sjMzESPHj2QmZkJX19fODk5iWNCQkIwZcoUnDt3Dl27dq12X2VlZSgrKxOXNRoNAECr1UKr1T7zMRBRw/Hqq68iNDQUBw8eREpKCoKDg9GvXz/I5XK+zokkwtjXco3Dzvr165GTk4PWrVujdevWAB7Mm7G0tMTNmzfx9ddfi2N//PHHp27v559/RkBAAO7fvw9bW1vs2rULPj4+OHXqFCwsLGBvb28w3snJCfn5+QAehKyHg46+X9/3OMuWLcPixYurtCcnJ8PGxuapNRPRi0Gn0+H8+fMAgBMnTqC0tJSXr4gkpLS01KhxNQ474eHhNV3liby9vXHq1Cmo1Wrs2LEDUVFRSEtLq9V9PGr+/PmIjo4WlzUaDdzc3DBo0CCoVKo63TcR1Y9du3bh/fffx9WrV8U2Dw8P/PnPf8aIESNMVxgR1Rr9lZmneebn7NQWCwsLeHl5AQD8/PyQlZWFtWvX4vXXX0d5eTmKiooMzu4UFBSIl8+cnZ1x/Phxg+3p79bSj6mOpaWlwcdd6CkUCigUiuc9JCIysbi4OIwePRpDhw7F5s2bcePGDbRq1QrLly/H6NGjsWPHDn5cBJEEGPueXeO7sQCgqKgIf/vb3zB//nzcvn0bwINLVr/99tuzbM5AZWUlysrK4OfnB4VCgf3794t9ly5dwvXr1xEQEAAACAgIwM8//4zCwkJxTEpKClQqFXx8fJ67FiJ68Tz6cRH+/v6wtraGv78/4uPjMXToUMTExBg8WZmIpK3GZ3bOnDmDoKAg2NnZ4erVq5g0aRIcHBwQFxeH69ev49tvvzV6W/Pnz8eQIUPQunVr3L17F1u3bsXBgwfxww8/wM7ODhMnTkR0dDQcHBygUqkwffp0BAQEoEePHgCAQYMGwcfHB2PHjsXy5cuRn5+PDz/8EFOnTq32zA0RSR8/LoKIHlXjMzvR0dEYP348srOzYWVlJbaHhoYiPT29RtsqLCzEuHHj4O3tjYEDByIrKws//PADgoODAQBr1qzB0KFDERERgT59+sDZ2RlxcXHi+nK5HAkJCZDL5QgICMBbb72FcePGYcmSJTU9LCKSCH5cBBE9qsZndrKysgzuuNJr2bLlE++Aqs7f//73J/ZbWVnhq6++wldfffXYMe7u7khMTKzRfolIuh7+uIiXX34ZaWlpSE9Ph1KpRP/+/flxEUSNUI3DjqWlZbWzn3/55Re0aNGiVooiInpW+o+LmD59OvLz83Hjxg0AwOrVq9GqVSs4Ozvz4yKIGpkaX8YaNmwYlixZIj7IRyaT4fr163j//fcRERFR6wUSEdWEXC7Ha6+9hhMnTohBR+/GjRs4ceIEIiMj+bwdokZEJgiCUJMV1Go1IiMjceLECdy9exeurq7Iz89HQEAAEhMToVQq66rWOqPRaGBnZwe1Ws3n7BC94HQ6HZo0aYJ79+49doy1tTXu3r3LwEP0gjP2/bvGl7Hs7OyQkpKCQ4cO4cyZMyguLka3bt0MPtaBiMhUkpOTce/ePcjlcri6uuLXX38V+9zc3JCbm4t79+4hOTkZQ4YMMWGlRFRfahx29AIDAxEYGFibtRARPbfVq1cDeHCGp0uXLti6davBQwX14Wf16tUMO0SNRI3CTmVlJWJjYxEXF4erV69CJpPB09MTkZGRGDt2LGQyWV3VSURklDt37gB48ET2+Ph46HQ63Lp1S3yo4Msvv4wff/xRHEdE0mf0BGVBEDBs2DC8/fbb+O233+Dr64sOHTrg2rVrGD9+PD9rhogaBFdXVwAPPgxYp9OJt56npaVBp9OJj8jQjyMi6TP6zE5sbCzS09Oxf/9+9O/f36DvwIEDCA8Px7fffotx48bVepFERMaKiIjA999/j99++w22trYoLy8H8OCylYWFhbjMu0eJGg+jz+xs27YNCxYsqBJ0AGDAgAGYN28etmzZUqvFERHVlLu7u/hvfbCpbvnhcUQkbUaHnTNnzmDw4MGP7R8yZAhOnz5dK0URET2rnj17wtzcHObm1Z+41vf17NmznisjIlMxOuzcvn0bTk5Oj+13cnLihD8iMrkjR46goqICFRUVaNasGV566SU0bdoUL730Epo1ayb2HTlyxNSlElE9MXrOjk6ne+xfSsCDp5ZWVFTUSlFERM/qt99+AwA4OjqisLAQt27dAvC/u7T07fpxRCR9RocdQRAwfvx4WFpaVttfVlZWa0URET2rmzdvAgAKCwvh6OiI9u3b4+bNm2jRogUuXLiAwsJCg3FEJH1Gh52oqKinjuGdWERkak2bNgXw4Gzz77//jrS0NLHPzMwMcrkcOp1OHEdE0md02Nm4cWNd1kFEVCuysrIAPLj0bmFhgffeew8vvfQS/vvf/2Lt2rXiHVlZWVlG/RFHRC++Z/64CCKihkin0wF4cBbHyckJK1asEPtat26NGzduoLKyUhxHRNLHsENEkqJ/QnJlZSU6d+6MmJgYZGdno23btkhJScH169cNxhGR9DHsEJGkODs7AwBUKhXOnDmDhIQEsc/d3R0qlQoajUYcR0TSx7BDRJLi7e0NANBoNLC2tsbMmTNRWloKGxsbbNu2DRqNxmAcEUmfTBAEwdRFmJpGo4GdnR3UajVUKpWpyyGi51BeXg6lUil+DtbDz/8yNzcX20tKSmBhYWHCSonoeRn7/m30E5SJiF4EFhYWmDVrFkpLS9G0aVNERERgwIABiIiIQNOmTVFaWopZs2Yx6BA1IryMRUSSs3z5cgDAmjVrsHPnTrHd3Nwcc+bMEfuJqHHgZSzwMhaRVJWXl+PLL7/EgQMHMGDAAEyfPp1ndIgkxNj3b57ZISLJksvl6Ny5M3Jzc9G5c2fI5XJTl0REJsA5O0QkSXFxcfDy8kJwcDBWr16N4OBgeHl5IS4uztSlEVE9Y9ghIsmJi4tDZGQkfH19kZGRgW3btiEjIwO+vr6IjIxk4CFqZDhnB5yzQyQlOp0OXl5e8PX1RXx8PHQ6HRITExEaGgq5XI7w8HCcPXsW2dnZvKxF9ILjredE1ChlZGTg6tWrWLBgAczMDH/FmZmZYf78+bhy5QoyMjJMVCER1TeGHSKSlLy8PABAx44dq+3Xt+vHEZH0MewQkaS4uLgAAM6ePVttv75dP46IpI9hh4gkpXfv3vDw8MDSpUtRWVlp0FdZWYlly5bB09MTvXv3NlGFRFTfGHaISFLkcjlWrVqFhIQEhIeH4+jRo7h37x6OHj2K8PBwJCQkYOXKlZycTNSI8KGCRCQ5I0eOxI4dOzB79mz06dNHbPf09MSOHTswcuRIE1ZHRPWNt56Dt54TSZVOp0NqaiqSkpIwZMgQ9O/fn2d0iCSEHxdBRI2eXC5H3759UVJSgr59+zLoEDVSnLNDREREksawQ0RERJLGsENERESSxrBDREREksYJykQkWeXl5fjyyy9x4MAB5OTkYPr06bCwsDB1WURUz0x6ZmfZsmV4+eWX0aRJEzg6OiI8PByXLl0yGHP//n1MnToVzZo1g62tLSIiIlBQUGAw5vr16wgLC4ONjQ0cHR0xZ84cVFRU1OehEFEDM3fuXCiVSsTExCAxMRExMTFQKpWYO3euqUsjonpm0jM7aWlpmDp1Kl5++WVUVFRgwYIFGDRoEM6fPw+lUgkAmDVrFvbs2YPt27fDzs4O06ZNw8iRI3H48GEAD56jERYWBmdnZxw5cgR5eXkYN24cFAoFli5dasrDIyITmTt3LlasWAEnJye8+eabKCkpgVKpxNatW7FixQoAwPLly01cJRHVlwb1UMGbN2/C0dERaWlp6NOnD9RqNVq0aIGtW7ciMjISAHDx4kW0b98emZmZ6NGjB5KSkjB06FDk5ubCyckJALBhwwa8//77uHnzplGnrPlQQSLpKC8vh1KphFKphJ2dHa5fvy72tW7dGmq1GiUlJSgpKeElLaIX3Av5UEG1Wg0AcHBwAACcPHkSWq0WQUFB4ph27dqhdevWYtjJzMyEr6+vGHQAICQkBFOmTMG5c+fQtWvXKvspKytDWVmZuKzRaAAAWq0WWq22To6NiOrHl19+iYqKCqjVagQGBmLTpk3Iz8+Hs7MzVq5ciT179ojjZsyYYeJqieh5GPue3WDCTmVlJWbOnIlevXqhY8eOAID8/HxYWFjA3t7eYKyTkxPy8/PFMQ8HHX2/vq86y5Ytw+LFi6u0Jycnw8bG5nkPhYhMaN++fQCAzp07Y+LEiVCr1bC2toZarcbEiRNx48YNnD59Gvv27YOXl5eJqyWi51FaWmrUuAYTdqZOnYqzZ8/i0KFDdb6v+fPnIzo6WlzWaDRwc3PDoEGDeBmL6AW3d+9eAA/O8A4dOhRarRYpKSkIDg6GQqHAkSNHcPr0aXh4eCA0NNTE1RLR89BfmXmaBhF2pk2bhoSEBKSnp6NVq1Ziu7OzM8rLy1FUVGRwdqegoADOzs7imOPHjxtsT3+3ln7MoywtLWFpaVmlXaFQQKFQPO/hEJEJ9ezZExs2bEBsbCyWLFmCI0eOID09HUqlEr1798a3334rjuPrnejFZuxr2KS3nguCgGnTpmHXrl04cOAAPD09Dfr9/PygUCiwf/9+se3SpUu4fv06AgICAAABAQH4+eefUVhYKI5JSUmBSqWCj49P/RwIETUYbm5uAIDCwkLY2NggODgYq1evRnBwMGxsbMTfFfpxRCR9Jr0b691338XWrVuxe/dueHt7i+12dnawtrYGAEyZMgWJiYmIjY2FSqXC9OnTAQBHjhwB8ODW8y5dusDV1RXLly9Hfn4+xo4di7ffftvoW895NxaRdOh0Ori4uODmzZuQyWR4+FecftnR0RG5ubn8FHSiF9wLcTfW+vXrAQD9+vUzaN+4cSPGjx8PAFizZg3MzMwQERGBsrIyhISEYN26deJYuVyOhIQETJkyBQEBAVAqlYiKisKSJUvq6zCIqIGRyWQAgMGDB8PS0hKXL19GmzZtUFZWhqSkJBNXR0T1rUE9Z8dUeGaHSDoOHjyI/v37Y8yYMfjuu+8MnqZubm6OUaNGYevWrUhNTa3yhxYRvVheiDM7RES1LS8vDwCwZcsWDB06FMHBwcjOzkbbtm2RkpKCrVu3GowjIulj2CEiSXF0dAQABAYGYvfu3dDpdEhMTERoaCimTZuGPn364PDhw+I4IpI+k96NRURU3/TzeYio8eCZHSKSFP2t5YcPH8bw4cPFy1jXrl1DSkqK+CHCDz+ugoikjWGHiCTFxcUFAPDmm2/iu+++Q0JCgthnbm6ON954A1u3bhXHEZH08W4s8G4sIinR6XRwdXVFYWEhwsLCEBISgl9++QV/+MMf8MMPP2DPnj18zg6RRBj7/s05O0QkOQ//Daf/N/+uI2q8eBmLiCQlIyMDN2/eFJ+zs2fPHrHP3Nwcb775JrZu3YqMjAw+Z4eokWDYISJJ0T8/Z+vWrQgNDYWnp6d4GevKlSvYtm2bwTgikj6GHSKSFP3zc7y9vXHu3DnxzE5ycjI8PDzg7e2Nixcv8jk7RI0I5+wQkSRdvHgRHTt2REZGBrZt24aMjAx07NgRFy9eNHVpRFTPGHaISFLy8/MNlh83QfnRcUQkXbyMRUSScvPmTQDAlClTkJSUhD59+oh9np6e+OMf/4gNGzaI44hI+nhmh4gkpUWLFgCAq1evIj4+Xvx4CJlMhl27duHatWsG44hI+nhmh4gkpWXLlgCApKQkJCUlie2CIKBLly5VxhGR9PHMDhFJSu/evWt1HBG9+Bh2iEhSLl26VKvjiOjFx7BDRJLSsWPHWh1HRC8+ztkhIkl59BZzpVIJuVwOnU6HkpKSx44jIuli2CEiSXs44BBR48SwQ0SSJZPJMGbMGPj5+eHkyZPYsmULz+gQNUIyga98aDQa2NnZQa1WQ6VSmbocInoO+ufqPKxJkya4e/dulXb++iN6sRn7/s0JykQkKXK5vEpbdUGnunFEJE0MO0QkKd7e3rU6johefAw7RCQpnp6etTqOiF58DDtEJCmVlZW1Oo6IXnwMO0QkKadPn67VcUT04mPYISJJyc3NrdVxRPTiY9ghIiIiSWPYISIiIklj2CEiIiJJY9ghIiIiSWPYISIiIklj2CEiIiJJY9ghIiIiSWPYISIiIklj2CEiIiJJY9ghIiIiSWPYISIiIklj2CEiIiJJM2nYSU9Px6uvvgpXV1fIZDLEx8cb9AuCgI8//hguLi6wtrZGUFAQsrOzDcbcvn0bY8aMgUqlgr29PSZOnIji4uJ6PAoiIiJqyEwadkpKStC5c2d89dVX1fYvX74cX3zxBTZs2IBjx45BqVQiJCQE9+/fF8eMGTMG586dQ0pKChISEpCeno7JkyfX1yEQERFRAycTBEEwdREAIJPJsGvXLoSHhwN4cFbH1dUVs2fPRkxMDABArVbDyckJsbGxGD16NC5cuAAfHx9kZWWhe/fuAIC9e/ciNDQUN27cgKura7X7KisrQ1lZmbis0Wjg5uaG33//HSqVqm4PlIjqlIWFhdFjy8vL67ASIqprGo0GzZs3h1qtfuL7t3k91lQjV65cQX5+PoKCgsQ2Ozs7+Pv7IzMzE6NHj0ZmZibs7e3FoAMAQUFBMDMzw7FjxzBixIhqt71s2TIsXry4SntycjJsbGxq/2CIqEFKTEw0dQlE9BxKS0uNGtdgw05+fj4AwMnJyaDdyclJ7MvPz4ejo6NBv7m5ORwcHMQx1Zk/fz6io6PFZf2ZnUGDBvHMDlEjEhoaauoSiOg5aDQao8Y12LBTlywtLWFpaVmlXaFQQKFQmKAiIjIFvt6JXmzGvoYb7K3nzs7OAICCggKD9oKCArHP2dkZhYWFBv0VFRW4ffu2OIaIiIgatwYbdjw9PeHs7Iz9+/eLbRqNBseOHUNAQAAAICAgAEVFRTh58qQ45sCBA6isrIS/v3+910xEREQNj0kvYxUXFyMnJ0dcvnLlCk6dOgUHBwe0bt0aM2fOxKeffoq2bdvC09MTH330EVxdXcU7ttq3b4/Bgwdj0qRJ2LBhA7RaLaZNm4bRo0c/9k4sIpK2pk2b4s6dO0aNI6LGwaRh58SJE+jfv7+4rJ80HBUVhdjYWMydOxclJSWYPHkyioqKEBgYiL1798LKykpcZ8uWLZg2bRoGDhwIMzMzRERE4Isvvqj3YyGihuHhx0rUxjgievE1mOfsmJJGo4Gdnd1T79MnoobP3NwcOp3uqePkcjkqKirqoSIiqivGvn832Dk7RETPQi6X1+o4InrxMewQkaQw7BDRoxh2iEhSzM2Nm4po7DgievEx7BCRpBgzX6cm44joxcewQ0SSwruxiOhRDDtEJCk8s0NEj2LYISIiIklj2CEiIiJJY9ghIiIiSWPYISIiIklj2CEiIiJJY9ghIiIiSWPYISIiIklj2CEiIiJJY9ghIiIiSWPYISIiIknjx/4SUYNTWlqKixcv1vl+fvzxxxqv065dO9jY2NRBNURUVxh2iKjBuXjxIvz8/Op8P8+yj5MnT6Jbt251UA0R1RWGHSJqcNq1a4eTJ08+07r5+fkICwt76rg9e/bA2dm5xttv167ds5RFRCYkEwRBMHURpqbRaGBnZwe1Wg2VSmXqcojoOSmVSpSWlj6238bGBiUlJfVYERHVBWPfvzlBmYgkp6Sk5LHzahh0iBofhh0ikqSSkhLk5eWhWfMWgFyBZs1bIC8vj0GHqBFi2CEiyXJ2dsa+ExfgHrML+05ceKY5OkT04mPYISIiIklj2CEiIiJJY9ghIiIiSWPYISIiIklj2CEiIiJJY9ghIiIiSWPYISIiIknjZ2MRUa258nsJSsoqTF2Ggcs3S8T/mps3nF95SktzeDZXmroMokah4bzyieiFduX3EvRfedDUZTzW7B0/m7qEKlJj+jHwENUDhh0iqhX6Mzqfv94FXo62Jq7mf0rulSHhYCaG9guA0trS1OUAAHIKizHzu1MN7iwYkVQx7BBRrfJytEXHlnamLkOk1WqR3wLo5t4UCoXC1OUQkQlwgjIRERFJGsMOERERSRrDDhEREUka5+wQUa2RmWtwRXMJZlYNZ4JyRUUFcityceH2hQZz6/kVTTFk5hpTl0HUaDSMVz4RSYLC/hgWHF9q6jKqtW7vOlOXYEBhPxBAqKnLIGoUGHaIqNZoi/yxKuxNtGlAt55XVFTg8KHD6BXYq8Gc2blcWIwZWy6bugyiRqNhvPJrwVdffYUVK1YgPz8fnTt3xpdffolXXnnF1GURNRr3tDoIFSqU3HVGparh3Hp+714Zcu+44t5d5wbznB3d/WIIFTdNXQZRoyGJsPPdd98hOjoaGzZsgL+/Pz7//HOEhITg0qVLcHR0NHV5RI3C5cJiAMC8uIb3pGLAHJtzskxdRBVKS0n8CiZq8GSCIAimLuJ5+fv74+WXX8Zf/vIXAEBlZSXc3Nwwffp0zJs3r8r4srIylJWVicsajQZubm74/fffoVKp6q1uIim5XVKOfRcK8VILJawV8ufa1r17pbh6ObtW6rr2ezHWpl7Be/094d78+S+vebRpC2trm+fejtJSDo9m/KgIoueh0WjQvHlzqNXqJ75/v/B/VpSXl+PkyZOYP3++2GZmZoagoCBkZmZWu86yZcuwePHiKu3JycmwsXn+X2JEjZUtgMLC59/O5cuXMXv27Off0EPmb6qd7axatQpt2rSplW2dr5WtEDVepaWlRo174cPO77//Dp1OBycnJ4N2JycnXLx4sdp15s+fj+joaHFZf2Zn0KBBPLND1ACUlpYiMDCwVrZVfK8MP2RkIaT3y7CthTk73t7e/KOIqIHQaIx7hMMLH3aehaWlJSwtq/7SUygU/OwcogbAzs6u1m4w0Gq1uFt0G7179uDrm0hijH1Nv/BPUG7evDnkcjkKCgoM2gsKCuDs7GyiqoiIiKiheOHDjoWFBfz8/LB//36xrbKyEvv370dAQIAJKyMiIqKGQBKXsaKjoxEVFYXu3bvjlVdeweeff46SkhJMmDDB1KURERGRiUki7Lz++uu4efMmPv74Y+Tn56NLly7Yu3dvlUnLRERE1PhIIuwAwLRp0zBt2jRTl0FEREQNzAs/Z4eIiIjoSRh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iIiISNIk81DB5yEIAgDjPyqeiF4cWq0WpaWl0Gg0/NRzIonRv2/r38cfh2EHwN27dwEAbm5uJq6EiIiIauru3buws7N7bL9MeFocagQqKyuRm5uLJk2aQCaTmbocIqpFGo0Gbm5u+PXXX6FSqUxdDhHVIkEQcPfuXbi6usLM7PEzcxh2iEjSNBoN7OzsoFarGXaIGilOUCYiIiJJY9ghIiIiSWPYISJJs7S0xMKFC2FpaWnqUojIRDhnh4iIiCSNZ3aIiIhI0hh2iIiISNIYdoiIiEjSGHaIiIhI0hh2iAgA0K9fP8ycORMA4OHhgc8//9yk9Rhj/PjxCA8Pr5NtL1q0CF26dKmTbRNR/WLYIaIqsrKyMHny5FrdZl0Gk7oQExOD/fv31+s+ZTIZ4uPj6209osaCHwRKRFW0aNHC1CWYjCAI0Ol0sLW1ha2tranLIaJawDM7RI1QSUkJxo0bB1tbW7i4uGDVqlUG/Y9exioqKsLbb7+NFi1aQKVSYcCAATh9+rTYr7/k8/XXX8PNzQ02NjYYNWoU1Gq12L9p0ybs3r0bMpkMMpkMBw8eBAD8+uuvGDVqFOzt7eHg4IDhw4fj6tWrNTqexYsXi7X98Y9/RHl5udhXVlaGGTNmwNHREVZWVggMDERWVpbYf/DgQchkMiQlJcHPzw+WlpY4dOhQlctY+jNTK1euhIuLC5o1a4apU6dCq9WKY/Ly8hAWFgZra2t4enpi69atRl8S9PDwAACMGDECMplMXAaA9evXo02bNrCwsIC3tzc2b95s1HpE9ADDDlEjNGfOHKSlpWH37t1ITk7GwYMH8eOPPz52/GuvvYbCwkIkJSXh5MmT6NatGwYOHIjbt2+LY3JycvDvf/8b33//Pfbu3YuffvoJ7777LoAHl4RGjRqFwYMHIy8vD3l5eejZsye0Wi1CQkLQpEkTZGRk4PDhw7C1tcXgwYMNAsuT7N+/HxcuXMDBgwexbds2xMXFYfHixWL/3LlzsXPnTmzatAk//vgjvLy8EBISYlA7AMybNw+fffYZLly4gE6dOlW7r9TUVFy+fBmpqanYtGkTYmNjERsbK/aPGzcOubm5OHjwIHbu3IlvvvkGhYWFRh2HPoBt3LgReXl54vKuXbvw3nvvYfbs2Th79izeeecdTJgwAampqU9cj4geIhBRo3L37l3BwsJC+Pe//y223bp1S7C2thbee+89QRAEwd3dXVizZo0gCIKQkZEhqFQq4f79+wbbadOmjfD1118LgiAICxcuFORyuXDjxg2xPykpSTAzMxPy8vIEQRCEqKgoYfjw4Qbb2Lx5s+Dt7S1UVlaKbWVlZYK1tbXwww8/PPVYoqKiBAcHB6GkpERsW79+vWBrayvodDqhuLhYUCgUwpYtW8T+8vJywdXVVVi+fLkgCIKQmpoqABDi4+MNtr1w4UKhc+fOBvtyd3cXKioqxLbXXntNeP311wVBEIQLFy4IAISsrCyxPzs7WwAgfi+fBoCwa9cug7aePXsKkyZNMmh77bXXhNDQ0CeuR0T/wzM7RI3M5cuXUV5eDn9/f7HNwcEB3t7e1Y4/ffo0iouL0axZM3Eei62tLa5cuYLLly+L41q3bo2WLVuKywEBAaisrMSlS5ceW8vp06eRk5ODJk2aiNt1cHDA/fv3Dbb9JJ07d4aNjY3BfouLi/Hrr7/i8uXL0Gq16NWrl9ivUCjwyiuv4MKFCwbb6d69+1P31aFDB8jlcnHZxcVFPHNz6dIlmJubo1u3bmK/l5cXmjZtatRxPM6FCxcM6geAXr16VamfiB6PE5SJ6ImKi4vh4uIizrF5mL29/XNv28/PD1u2bKnSV9+TpJVK5VPHKBQKg2WZTIbKysq6KomIagnP7BA1Mm3atIFCocCxY8fEtjt37uCXX36pdny3bt2Qn58Pc3NzeHl5GXw1b95cHHf9+nXk5uaKy0ePHoWZmZl4xsjCwgI6na7KtrOzs+Ho6Fhl23Z2dkYdz+nTp3Hv3j2D/dra2sLNzU2c1Hv48GGxX6vVIisrCz4+PkZt31je3t6oqKjATz/9JLbl5OTgzp07Rm9DoVBU+R61b9/eoH4AOHz4sEH91a1HRP/DsEPUyNja2mLixImYM2cODhw4gLNnz2L8+PEwM6v+10FQUBACAgIQHh6O5ORkXL16FUeOHMEHH3yAEydOiOOsrKwQFRWF06dPIyMjAzNmzMCoUaPg7OwM4MFdQ2fOnMGlS5fw+++/Q6vVYsyYMWjevDmGDx+OjIwMXLlyBQcPHsSMGTNw48YNo46nvLwcEydOxPnz55GYmIiFCxdi2rRpMDMzg1KpxJQpUzBnzhzs3bsX58+fx6RJk1BaWoqJEyc+/zfzIe3atUNQUBAmT56M48eP46effsLkyZNhbW0NmUxm1DY8PDywf/9+5OfniyFpzpw5iI2Nxfr165GdnY3Vq1cjLi4OMTExT1yPiP6HYYeoEVqxYgV69+6NV199FUFBQQgMDISfn1+1Y2UyGRITE9GnTx9MmDABf/jDHzB69Ghcu3YNTk5O4jgvLy+MHDkSoaGhGDRoEDp16oR169aJ/ZMmTYK3tze6d++OFi1a4PDhw7CxsUF6ejpat26NkSNHon379pg4cSLu378PlUpl1LEMHDgQbdu2RZ8+ffD6669j2LBhWLRokdj/2WefISIiAmPHjkW3bt2Qk5ODH3744bnn0lTn22+/hZOTE/r06YMRI0Zg0qRJaNKkCaysrIxaf9WqVUhJSYGbmxu6du0KAAgPD8fatWuxcuVKdOjQAV9//TU2btyIfv36PXE9IvofmSAIgqmLIKIX26JFixAfH49Tp06ZupQG5caNG3Bzc8O+ffswcOBAU5dD1GhxgjIRUS05cOAAiouL4evri7y8PMydOxceHh7o06ePqUsjatR4GYuIGqyHb3V/9CsjI8PU5VWh1WqxYMECdOjQASNGjECLFi1w8OBBKBQKbNmy5bHH0qFDB1OXTiRpvIxFRA1WTk7OY/tatmwJa2vreqzm+dy9excFBQXV9ikUCri7u9dzRUSNB8MOERERSRovYxEREZGkMewQERGRpDHsEBERkaQx7BAREZGkMewQERGRpDHsEBERkaQx7BAREZGk/T+izuzJ5z9DpwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = df[df.diepte_boring_tot != 0].boxplot()\n", "ax.set_ylabel(\"Depth (m)\");\n", "ax.set_title(\"Distribution borehole depth Gent\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get boreholes based on fields not available in the standard output dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To keep the output dataframe size acceptable, not all available WFS fields are included in the standard output. However, one can use this information to select boreholes as illustrated below.\n", "\n", "For example, make a selection of the boreholes in municipality the of Antwerp, for which a hydrogeological interpretation was performed:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\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", "
pkey_boringboornummerxydiepte_boring_totdatum_aanvang
0https://www.dov.vlaanderen.be/data/boring/1937...kb7d14e-B82145457.0224973.510.01937-01-01
1https://www.dov.vlaanderen.be/data/boring/1969...kb7d14e-B110143700.4228086.312.01969-01-01
2https://www.dov.vlaanderen.be/data/boring/1966...kb7d14e-B115143067.0227707.666.01966-01-01
3https://www.dov.vlaanderen.be/data/boring/1966...kb7d14e-B117144770.5223430.649.01966-01-01
4https://www.dov.vlaanderen.be/data/boring/1970...kb7d14e-B121143597.8223498.611.91970-01-01
\n", "
" ], "text/plain": [ " pkey_boring boornummer x \\\n", "0 https://www.dov.vlaanderen.be/data/boring/1937... kb7d14e-B82 145457.0 \n", "1 https://www.dov.vlaanderen.be/data/boring/1969... kb7d14e-B110 143700.4 \n", "2 https://www.dov.vlaanderen.be/data/boring/1966... kb7d14e-B115 143067.0 \n", "3 https://www.dov.vlaanderen.be/data/boring/1966... kb7d14e-B117 144770.5 \n", "4 https://www.dov.vlaanderen.be/data/boring/1970... kb7d14e-B121 143597.8 \n", "\n", " y diepte_boring_tot datum_aanvang \n", "0 224973.5 10.0 1937-01-01 \n", "1 228086.3 12.0 1969-01-01 \n", "2 227707.6 66.0 1966-01-01 \n", "3 223430.6 49.0 1966-01-01 \n", "4 223498.6 11.9 1970-01-01 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from owslib.fes2 import And\n", "\n", "query = And([PropertyIsEqualTo(propertyname='gemeente',\n", " literal='Antwerpen'),\n", " PropertyIsEqualTo(propertyname='hydrogeologische_stratigrafie', \n", " literal='True')]\n", " )\n", "df = boring.search(query=query,\n", " return_fields=('pkey_boring', 'boornummer', 'x', 'y', 'diepte_boring_tot', 'datum_aanvang'))\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get borehole data, returning fields not available in the standard output dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As denoted in the previous example, not all available fields are available in the default output frame to keep its size limited. However, you can request any available field by including it in the *return_fields* parameter of the search:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pkey_boringboornummerdiepte_boring_totinformele_stratigrafieformele_stratigrafielithologische_beschrijvinggecodeerde_lithologiehydrogeologische_stratigrafiequartaire_stratigrafiegeotechnische_coderinginformele_hydrostratigrafie
0https://www.dov.vlaanderen.be/data/boring/1981...kb8d7e-B2242517.0TrueTrueTrueFalseFalseFalseFalseFalse
1https://www.dov.vlaanderen.be/data/boring/1952...kb8d17e-B2722705.0TrueTrueTrueTrueTrueFalseFalseFalse
2https://www.dov.vlaanderen.be/data/boring/1935...kb17d31e-B1972034.0TrueTrueFalseTrueTrueFalseFalseFalse
3https://www.dov.vlaanderen.be/data/boring/2016...B/1-1027823600.0FalseFalseFalseFalseFalseFalseFalseFalse
4https://www.dov.vlaanderen.be/data/boring/2016...B/1-1027833600.0FalseFalseFalseFalseFalseFalseFalseFalse
\n", "
" ], "text/plain": [ " pkey_boring boornummer \\\n", "0 https://www.dov.vlaanderen.be/data/boring/1981... kb8d7e-B224 \n", "1 https://www.dov.vlaanderen.be/data/boring/1952... kb8d17e-B272 \n", "2 https://www.dov.vlaanderen.be/data/boring/1935... kb17d31e-B197 \n", "3 https://www.dov.vlaanderen.be/data/boring/2016... B/1-102782 \n", "4 https://www.dov.vlaanderen.be/data/boring/2016... B/1-102783 \n", "\n", " diepte_boring_tot informele_stratigrafie formele_stratigrafie \\\n", "0 2517.0 True True \n", "1 2705.0 True True \n", "2 2034.0 True True \n", "3 3600.0 False False \n", "4 3600.0 False False \n", "\n", " lithologische_beschrijving gecodeerde_lithologie \\\n", "0 True False \n", "1 True True \n", "2 False True \n", "3 False False \n", "4 False False \n", "\n", " hydrogeologische_stratigrafie quartaire_stratigrafie \\\n", "0 False False \n", "1 True False \n", "2 True False \n", "3 False False \n", "4 False False \n", "\n", " geotechnische_codering informele_hydrostratigrafie \n", "0 False False \n", "1 False False \n", "2 False False \n", "3 False False \n", "4 False False " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "query = PropertyIsGreaterThanOrEqualTo(\n", " propertyname='diepte_boring_tot',\n", " literal='2000')\n", "\n", "df = boring.search(query=query,\n", " return_fields=('pkey_boring', 'boornummer', 'diepte_boring_tot',\n", " 'informele_stratigrafie', 'formele_stratigrafie', 'lithologische_beschrijving',\n", " 'gecodeerde_lithologie', 'hydrogeologische_stratigrafie', 'quartaire_stratigrafie',\n", " 'geotechnische_codering', 'informele_hydrostratigrafie'))\n", "\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get boreholes in a municipality and where groundwater related data are available" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following full example return all boreholes where *gemeente* is 'Antwerpen' and either *putnummer* is not empty or *doel* starts with 'Grondwater' or *erkenning* is '2. Andere grondwaterwinningen'." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\n", "[000/255] ..................................................\n", "[050/255] ..................................................\n", "[100/255] ..................................................\n", "[150/255] ..................................................\n", "[200/255] ..................................................\n", "[250/255] .....\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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_boringboornummerxymv_mtawstart_boring_mtawgemeentediepte_boring_vandiepte_boring_totdatum_aanvanguitvoerderboorgatmetingdiepte_methode_vandiepte_methode_totboormethode
0https://www.dov.vlaanderen.be/data/boring/1967...kb7d14e-B186144712.5222672.38.558.55Antwerpen0.012.01967-01-01Smet - DesselFalse0.012.0spoelboring
1https://www.dov.vlaanderen.be/data/boring/1967...kb7d14e-B183144379.9222861.39.049.04Antwerpen0.012.01967-01-01Smet - DesselFalse0.012.0spoelboring
2https://www.dov.vlaanderen.be/data/boring/1967...kb7d14e-B184144631.1222928.68.608.60Antwerpen0.017.01967-01-01Smet - DesselFalse0.017.0spoelboring
3https://www.dov.vlaanderen.be/data/boring/1967...kb7d14e-B185144883.9223009.98.208.20Antwerpen0.012.01967-01-01Smet - DesselFalse0.012.0spoelboring
4https://www.dov.vlaanderen.be/data/boring/1967...kb7d14e-B187144969.5222737.88.258.25Antwerpen0.012.01967-01-01Smet - DesselFalse0.012.0spoelboring
\n", "
" ], "text/plain": [ " pkey_boring boornummer x \\\n", "0 https://www.dov.vlaanderen.be/data/boring/1967... kb7d14e-B186 144712.5 \n", "1 https://www.dov.vlaanderen.be/data/boring/1967... kb7d14e-B183 144379.9 \n", "2 https://www.dov.vlaanderen.be/data/boring/1967... kb7d14e-B184 144631.1 \n", "3 https://www.dov.vlaanderen.be/data/boring/1967... kb7d14e-B185 144883.9 \n", "4 https://www.dov.vlaanderen.be/data/boring/1967... kb7d14e-B187 144969.5 \n", "\n", " y mv_mtaw start_boring_mtaw gemeente diepte_boring_van \\\n", "0 222672.3 8.55 8.55 Antwerpen 0.0 \n", "1 222861.3 9.04 9.04 Antwerpen 0.0 \n", "2 222928.6 8.60 8.60 Antwerpen 0.0 \n", "3 223009.9 8.20 8.20 Antwerpen 0.0 \n", "4 222737.8 8.25 8.25 Antwerpen 0.0 \n", "\n", " diepte_boring_tot datum_aanvang uitvoerder boorgatmeting \\\n", "0 12.0 1967-01-01 Smet - Dessel False \n", "1 12.0 1967-01-01 Smet - Dessel False \n", "2 17.0 1967-01-01 Smet - Dessel False \n", "3 12.0 1967-01-01 Smet - Dessel False \n", "4 12.0 1967-01-01 Smet - Dessel False \n", "\n", " diepte_methode_van diepte_methode_tot boormethode \n", "0 0.0 12.0 spoelboring \n", "1 0.0 12.0 spoelboring \n", "2 0.0 17.0 spoelboring \n", "3 0.0 12.0 spoelboring \n", "4 0.0 12.0 spoelboring " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from owslib.fes2 import PropertyIsLike\n", "from owslib.fes2 import PropertyIsNull\n", "from owslib.fes2 import Or\n", "from owslib.fes2 import Not\n", "\n", "query = And([PropertyIsEqualTo(propertyname='gemeente',\n", " literal='Antwerpen'),\n", " Or([Not([PropertyIsNull(propertyname='putnummer')]),\n", " PropertyIsLike(propertyname='doel',\n", " literal='Grondwater%'),\n", " PropertyIsEqualTo(propertyname='erkenning', \n", " literal='2. Andere grondwaterwinningen')]\n", " )]\n", " )\n", "df = boring.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": 21, "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": 22, "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": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 23, "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", " folium.Marker(loclist[loc], popup=df['boornummer'][loc]).add_to(marker_cluster)\n", "fmap\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding location and height details" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is more to the location of a borehole than meets the eye! The default dataframe lists already multiple fields regarding the location of the borehole, both planimetric as altimetric:\n", "\n", "* `x` and `y` are the planimetric coordinates of the borehole\n", "* `start_boring_mtaw` is the height of the start (aanvangspeil) of the borehole\n", "* `mv_mtaw` is the height of the ground level at the time of the making of the borehole\n", "\n", "However, we have more information available regarding the (origin of) these coordinates. Each of them has an associated method (methode) and reliability (betrouwbaarheid).\n", "\n", "We also make the distinction between the height of the ground level (maaiveld) and the height of the start of the borehole (aanvangspeil). If the borehole was started at ground level both are the same, but this is not necessarily the case. Furthermore the height of the start of the borehole can be either absolute (measured individually) or relative to the ground level.\n", "\n", "If we want to have all this extra information available when retrieving the borehole dataframe output, we can add the extra XML fields when searching for boreholes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To find which extra fieldsets are availabe, you can use:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'MethodeXyz': {'name': 'MethodeXyz',\n", " 'class': pydov.types.boring.MethodeXyz,\n", " 'definition': 'Fieldset containing fields for method and reliability of the point\\nlocation of the borehole. It has the following fields: methode_xy, betrouwbaarheid_xy, methode_z, betrouwbaarheid_z.'}}" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pydov.types.boring import Boring\n", "\n", "Boring.get_fieldsets()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To add the extra fields to your output dataframe, you can specify the fieldset to use when instantiating the search class:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "from pydov.search.boring import BoringSearch\n", "from pydov.types.boring import MethodeXyz\n", "\n", "boring_search = BoringSearch(\n", " objecttype=Boring.with_extra_fields(MethodeXyz)\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The extra fields are now available, and should be included in the output of `get_fields()`. E.g. to get more details about the `methode_z` field:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", "
\n", "

methode_z - Methode waarop de z-coordinaat opgemeten werd.

  • type: string
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False
  • codelist:
  • \n", " \n", "
    \n", " \n", "
    \n", " pydov.util.codelists.XsdType\n", "
    \n", " \n", " \n", "
    \n", "

    DHM_v1 100m*100m - DHM_v1 100m*100m

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

    DHM_v1 25m*25m - DHM_v1 25m*25m

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

    DHM_v1 5m*5m - DHM_v1 5m*5m

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

    DHM_v2 - DHM_v2

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

    GPS - GPS

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

    GPS - RTK FLEPOS - GPS - RTK FLEPOS

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

    GPS - RTK FLEPOS (model hBG03) - GPS - RTK FLEPOS (model hBG03)

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

    GPS - RTK FLEPOS (model hBG18) - GPS - RTK FLEPOS (model hBG18)

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

    GPS statische fasemeting - GPS statische fasemeting

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

    afgeleid van topokaart - afgeleid van topokaart

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

    berekend op basis van hoogteverschil met maaiveld - berekend op basis van hoogteverschil met maaiveld

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

    gedigitaliseerd in Google Earth - gedigitaliseerd in Google Earth

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

    methode onbekend - methode onbekend

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

    niet te achterhalen - niet te achterhalen

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

    topografisch ingemeten - topografisch ingemeten

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

    totaalstation - totaalstation

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

    uit dossier - uit dossier

    \n", "
    \n", " \n", "
    \n", "
\n", "
\n", " " ], "text/plain": [ "{'name': 'methode_z', 'type': 'string', 'multivalue': False, 'definition': 'Methode waarop de z-coordinaat opgemeten werd.', 'notnull': False, 'query': False, 'cost': 10, 'codelist': , , , , , , , , , , , , , , , , >}" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "boring_search.get_fields()['methode_z']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Searching for boreholes remains exactly the same, but will reveal the extra information in the output dataframe:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\n", "[000/544] cccccccccccccccccccccccccccccccccccccccccccccccccc\n", "[050/544] cccccccccccccccccccccccccccccccccccccccccccccccccc\n", "[100/544] cccccccccccccccccccccccccccccccccccccccccccccccccc\n", "[150/544] cccccccccccccccccccccccccccccccccccccccccccccccccc\n", "[200/544] cccccccccccccccccccccccccccccccccccccccccccccccccc\n", "[250/544] cccccccccccccccccccccccccccccccccccccccccccccccccc\n", "[300/544] cccccccccccccccccccccccccccccccccccccccccccccccccc\n", "[350/544] cccccccccccccccccccccccccccccccccccccccccccccccccc\n", "[400/544] cccccccccccccccccccccccccccccccccccccccccccccccccc\n", "[450/544] cccccccccccccccccccccccccccccccccccccccccccccccccc\n", "[500/544] cccccccccccccccccccccccccccccccccccccccccccc\n" ] } ], "source": [ "from pydov.util.location import WithinDistance, Point\n", "\n", "df = boring_search.search(\n", " location=WithinDistance(Point(150000, 150000, epsg=31370), 10000, 'meter'),\n", " return_fields=('pkey_boring', 'boornummer', 'x', 'y', 'methode_xy', 'betrouwbaarheid_xy',\n", " 'mv_mtaw', 'methode_z', 'betrouwbaarheid_z', 'start_boring_mtaw'))" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "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", "
pkey_boringboornummerxymethode_xybetrouwbaarheid_xymv_mtawmethode_zbetrouwbaarheid_zstart_boring_mtaw
0https://www.dov.vlaanderen.be/data/boring/1891...BGD115E0018C.2145692.0157605.0gedigitaliseerd op topokaarttwijfelachtig55.0afgeleid van topokaarttwijfelachtig55.0
1https://www.dov.vlaanderen.be/data/boring/1894...vgmperceel6-B2140857.0151875.0gedigitaliseerd op topokaartonbekend54.0afgeleid van topokaartonbekend54.0
2https://www.dov.vlaanderen.be/data/boring/1913...vgmperceel6-B4140236.0150691.0gedigitaliseerd op topokaartonbekend85.0afgeleid van topokaartonbekend85.0
3https://www.dov.vlaanderen.be/data/boring/1927...vgmperceel6-B9142139.0151678.0gedigitaliseerd op topokaartonbekend75.0afgeleid van topokaartonbekend75.0
4https://www.dov.vlaanderen.be/data/boring/1927...vgmperceel6-B10144692.0152764.0gedigitaliseerd op topokaartonbekend93.0afgeleid van topokaartonbekend93.0
\n", "
" ], "text/plain": [ " pkey_boring boornummer \\\n", "0 https://www.dov.vlaanderen.be/data/boring/1891... BGD115E0018C.2 \n", "1 https://www.dov.vlaanderen.be/data/boring/1894... vgmperceel6-B2 \n", "2 https://www.dov.vlaanderen.be/data/boring/1913... vgmperceel6-B4 \n", "3 https://www.dov.vlaanderen.be/data/boring/1927... vgmperceel6-B9 \n", "4 https://www.dov.vlaanderen.be/data/boring/1927... vgmperceel6-B10 \n", "\n", " x y methode_xy betrouwbaarheid_xy \\\n", "0 145692.0 157605.0 gedigitaliseerd op topokaart twijfelachtig \n", "1 140857.0 151875.0 gedigitaliseerd op topokaart onbekend \n", "2 140236.0 150691.0 gedigitaliseerd op topokaart onbekend \n", "3 142139.0 151678.0 gedigitaliseerd op topokaart onbekend \n", "4 144692.0 152764.0 gedigitaliseerd op topokaart onbekend \n", "\n", " mv_mtaw methode_z betrouwbaarheid_z start_boring_mtaw \n", "0 55.0 afgeleid van topokaart twijfelachtig 55.0 \n", "1 54.0 afgeleid van topokaart onbekend 54.0 \n", "2 85.0 afgeleid van topokaart onbekend 85.0 \n", "3 75.0 afgeleid van topokaart onbekend 75.0 \n", "4 93.0 afgeleid van topokaart onbekend 93.0 " ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Number of boreholes per coordinate digitization method')" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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S9Nd3vuLjIiIiD4/vGsWERERERFVOiYiRERERERU6ZiIEBERERFRpWMiQkRERERElY6JCBERERERVTomIkREREREVOmYiBARERERUaVjIkJERERERJWOiQgREREREVU6JiJERERERFTpmIgQEREREVGlYyJCRERERESVjokIERERERFVOiYiRERERERU6ZiIEBERERFRpWMiQkRERERElY6JCBERERERVTqFqg6AiKg0jabth5yyWlWHUe2kzO1W1SEQEdEXjldEiIiIiIio0jERISIiIiKiSsdEhIiIiIiIKh0TEapWoqOjIZFI8PLlywqvWyKRYOfOnRVeb1XE4ePjg549e1ZIPGXh7OyMgICASm+XiIiIPj1MROizxTe1RERERJ8vJiJERERERFTpmIjQR+fs7IxRo0YhICAAurq6MDAwwNq1a5GZmYnBgwdDU1MTFhYW2Lt3r9Rxly5dQpcuXaChoQEDAwMMGjQIT58+BfBuatGRI0ewdOlSSCQSSCQSpKSkiMeePXsWzZs3h5qaGlq3bo2kpCSpuleuXAlzc3MoKSnB2toa69evl9qfnJyMtm3bQkVFBba2tjh48GCRft29exd9+vSBjo4OatSoAXd3d6kYinPkyBG0bNkSysrKqF27Nn766Sfk5ORIjZW/vz8mTJiAGjVqwNDQEMHBwUXqSU1NRZcuXaCqqgozMzNs27btg2I7ffo09PX1MW/ePADAy5cvMWTIEOjr60NLSwsdOnRAQkKCWD44OBhNmjTB+vXrYWpqCm1tbfTr1w+vXr0Sy2RmZsLLywsaGhqoXbs2Fi5cWOrYEBER0ZeFiQhVinXr1qFmzZo4deoURo0ahR9++AEeHh5o3bo1zp07h2+++QaDBg3C69evAbx7I9yhQwc0bdoUZ86cwb59+/Do0SP06dMHALB06VI4Ojpi6NChSE1NRWpqKkxMTMT2Jk2ahIULF+LMmTNQUFDA999/L+7bsWMHRo8ejXHjxuHSpUsYPnw4Bg8ejKioKABAXl4evv32WygpKSEuLg6rVq1CUFCQVH/evn0LFxcXaGpqIiYmBrGxsdDQ0ICrqyuys7OLHYP79++ja9euaNGiBRISErBy5Ur88ccfmDVrVpGxUldXR1xcHObPn48ZM2YUSYSmTJmC7777DgkJCRgwYAD69euHxMTEcsV2+PBhdO7cGbNnzxb76eHhgcePH2Pv3r04e/YsmjVrho4dO+L58+ficTdu3MDOnTuxe/du7N69G0eOHMHcuXPF/ePHj8eRI0fwzz//4MCBA4iOjsa5c+eKHRsiIiL68kgEQRCqOgiq3pydnZGbm4uYmBgAQG5uLrS1tfHtt9/izz//BAA8fPgQtWvXxokTJ/DVV19h1qxZiImJwf79+8V67t27BxMTEyQlJcHKygrOzs5o0qQJlixZIpaJjo5G+/btERkZiY4dOwIAIiIi0K1bN7x58wYqKipwcnJCw4YNsWbNGvG4Pn36IDMzE3v27MGBAwfQrVs33L59G0ZGRgCAffv2oUuXLtixYwd69uyJv/76C7NmzUJiYiIkEgkAIDs7Gzo6Oti5cye++eabIuMwadIkbN++XeqYFStWICgoCGlpaZCTkysyVgDQsmVLdOjQQXyTL5FIMGLECKxcuVIs89VXX6FZs2ZYsWKFTLH5+Pjg5cuX8Pb2hpeXF37//Xf07dsXAHDs2DF069YNjx8/hrKystiGhYUFJkyYgGHDhiE4OBgLFizAw4cPoampCQCYMGECjh49ipMnTyIjIwN6enr466+/4OHhAQB4/vw56tSpg2HDhkm9ZvmysrKQlZUlPk9PT4eJiQlMArbwCw0/An6hIRERfQzp6enQ1tZGWloatLS0Si3LKyJUKRo3biz+X15eHnp6erCzsxO3GRgYAAAeP34MAEhISEBUVBQ0NDTER4MGDQC8+yS+LO3Vrl1bqu7ExEQ4OTlJlXdychKvKCQmJsLExERMQgDA0dFRqnxCQgKuX78OTU1NMb4aNWrgv//+KzG+xMREODo6islBfrsZGRm4d+9esbHnx58fe0nxODo6ivHLGltcXBw8PDywfv16MQnJPz4/kSg4/rdu3ZI63tTUVExCCsd548YNZGdno1WrVuL+GjVqwNrautixAYA5c+ZAW1tbfBS8wkVERETVj0JVB0BfBkVFRannEolEalv+m/O8vDwAQEZGBtzc3MQ1CwXlJxaytle47oqQkZEBBwcHbNiwocg+fX39D6q7uLEqS+yyxmZubg49PT3873//Q7du3cR2MzIyULt2bURHRxc5XkdHp8LiLGzixIkYO3as+Dz/iggRERFVT0xE6JPUrFkzbN++HaamplBQKP40VVJSQm5ubpnrtrGxQWxsLLy9vcVtsbGxsLW1FfffvXsXqampYtJz8uTJIvFt3rwZtWrVeu9lx4Ltbt++HYIgiMlRbGwsNDU1UadOnTL14eTJk/Dy8pJ63rRp0zLFVrNmTYSHh8PZ2Rl9+vTBli1boKioiGbNmuHhw4dQUFCAqalpmeLKZ25uDkVFRcTFxaFu3boAgBcvXuDatWto165dsccoKytLTQUjIiKi6o1Ts+iTNHLkSDx//hyenp44ffo0bty4gf3792Pw4MFi8mFqaoq4uDikpKTg6dOnMn8aP378eISFhWHlypVITk7GokWLEB4ejsDAQABAp06dYGVlBW9vbyQkJCAmJgaTJk2SqmPAgAGoWbMm3N3dERMTg1u3biE6Ohr+/v5S06wK+vHHH3H37l2MGjUKV69exT///INp06Zh7NixkJMr24/i1q1b8b///Q/Xrl3DtGnTcOrUKfj5+ZU5tlq1auHw4cO4evUqPD09kZOTg06dOsHR0RE9e/bEgQMHkJKSguPHj2PSpEk4c+aMTPFpaGjA19cX48ePx+HDh3Hp0iX4+PiUuZ9ERERUffFdAX2SjIyMEBsbi9zcXHzzzTews7NDQEAAdHR0xDezgYGBkJeXh62tLfT19XHnzh2Z6u7ZsyeWLl2KkJAQNGzYEKtXr0ZoaCicnZ0BAHJyctixYwfevHmDli1bYsiQIZg9e7ZUHWpqajh69Cjq1q2Lb7/9FjY2NvD19cV///1X4lUIY2NjRERE4NSpU7C3t8eIESPg6+uLyZMnl3l8pk+fjk2bNqFx48b4888/sXHjRvGKTlljMzQ0xOHDh3Hx4kUMGDAAeXl5iIiIQNu2bTF48GBYWVmhX79+uH37triWRxYLFixAmzZt4Obmhk6dOuHrr7+Gg4NDmftKRERE1RPvmkVEn6T8u27wrlkfB++aRUREHwPvmkVERERERJ80JiJERERERFTpmIgQEREREVGl4+17ieiTdmm6i8y3SCYiIqLPB6+IEBERERFRpWMiQkRERERElY6JCBERERERVTomIkREREREVOmYiBARERERUaVjIkJERERERJWOiQgREREREVU6JiJERERERFTpmIgQEREREVGlYyJCRERERESVjokIERERERFVOiYiRERERERU6ZiIEBERERFRpWMiQkRERERElY6JCBERERERVTomIkREREREVOmYiBARERERUaVTqOoAiIhK02ja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G1Z43URERPT54RWRCrRixQo4OTmhefPmCA4ORuPGjSEnJ4fTp0/j6tWrcHBwkLkuZ2dneHp6onnz5tDT08OVK1fw888/o3379hU+ZUUikcDf3x/BwcEYPnw41NTUynT8oEGDICcnB29vbwiCgPHjx5c7lrS0NKlP8oF3SV7+wuVXr17h4cOHUvvV1NRkGhOJRII//vgDnTt3xnfffYeJEyfC0NAQcXFxGDduHBwdHREQEADg3VqWTZs2oV+/frCysoIgCPj3338RERFR5PbDBbm4uGDIkCHIzc0t093A8tWqVQuHDx9G+/bt4enpiU2bNkFBoeiPaX4SUq9ePYSEhEjdoaq0mwb89ttvqFu3Lho0aAAAOHr0KEJCQuDv7w8AUFFRQVBQECZMmAAlJSU4OTnhyZMnuHz5Mnx9fcvcn4JiYmLEO20RERERMRGpQObm5jh//jx++eUXTJw4Effu3YOysjJsbW0RGBiIH3/8Uea6XFxcsG7dOvz88894/fo1jIyM0L179yJ3Iqoo3t7emDRpEpYvX44JEyaU+fgBAwZATk4OgwYNQl5eXpnu9lRQdHR0kWlTvr6++P333wEAU6dOLTIGw4cPx6pVq2Sqv3Xr1jh58iSmT5+OLl264NWrV6hbty68vb0xceJEcWqara0t1NTUMG7cONy9exfKysqwtLTE77//jkGDBpVYf5cuXaCgoIDIyEi4uLiUpesiQ0NDHD58GM7OzhgwYAD+/vvvIknNwYMHcf36dVy/fh116tSR2lfaGpi8vDxMnDgRt27dgoKCAszNzTFv3jypRe5TpkyBgoICpk6digcPHqB27dpF1piUx6ZNmxAcHPzB9RAREVH1IBHKcm9SInqv3377Dbt27cL+/furOpRPxt69ezFu3DhcuHCh2Cs8xUlPT393G9+ALZBTLttVusqSMrdbVYdARET0Scn/+52WlvbeGSu8IkJUwYYPH46XL1/i1atXRb71/UuVmZmJ0NBQmZMQIiIiqv74roCogikoKGDSpElVHcYnpXfv3lUdAhEREX1imIgQ0Sft0nQXfqcIERFRNcTb9xIRERERUaVjIkJERERERJWOiQgREREREVU6JiJERERERFTpmIgQEREREVGlK1cikpmZWdFxEBERERHRF6RciYiBgQG+//57HDt2rKLjISIiIiKiL0C5EpG//voLz58/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/1HbpcoXEhKCzp07Q11dHXv37sW6detk+oJCIiIios9ZuW7fGxAQAEVFRdy5c0dqwXrfvn0rZR5/Zcv/sr1OnTohMzMTMTExqFmz5kdtU05ODmFhYWjRogWcnJxw8eJFREZGwsbG5qO2S5Xv1KlT6Ny5M+zs7LBq1Sr8+uuvGDJkSFWHRURERPRRleuKyIEDB7B//37UqVNHarulpSVu375dIYF9Kpo2bYqzZ89WersmJiaca/+FkPXuVERERETVSbkSkczMTKkrIfmeP3/O7wEgogp1abrLe+eYEhER0eenXFOz2rRpgz///FN8LpFIkJeXh/nz56N9+/YVFhwREREREVVP5boiMn/+fHTs2BFnzpxBdnY2JkyYgMuXL+P58+ecTkRERERERO9VrisijRo1QlJSEr7++mu4u7sjMzMT3377Lc6fPw9zc/OKjpGIiIiIiKqZcl0RAQAVFRV07twZ9vb2yMvLAwCcPn0aANCjR4+KiY6IiIiIiKqlciUi+/btw6BBg/D8+XMU/j5EiUSC3NzcCgmOiIiIiIiqp3JNzRo1ahT69OmDBw8eIC8vT+rBJISIiIiIiN6nXInIo0ePMHbsWBgYGFR0PERERERE9AUoVyLSu3dvREdHV3AoRERERET0pZAIhRd5yOD169fw8PCAvr4+7OzsoKioKLXf39+/wgIkoi9Teno6tLW1kZaWxi80JCIi+kyU5e93uRarb9y4EQcOHICKigqio6MhkUjEfRKJhIkIERERERGVqlyJyKRJkzB9+nT89NNPkJMr1+wuIiIiIiL6gpUri8jOzkbfvn2ZhBARERERUbmUK5Pw9vbG5s2bKzoWIiIiIiL6QpRralZubi7mz5+P/fv3o3HjxkUWqy9atKhCgiMiIiIiouqpXInIxYsX0bRpUwDApUuXpPYVXLhORERERERUnHIlIlFRURUdBxERERERfUG42pyIiIiIiCpdua6IEBFVlkbT9kNOWa3UMilzu1VSNERERFRReEWEiIiIiIgqHRMRIiIiIiKqdExEiIiIiIio0jERIapCEokEO3fu/OB6oqOjIZFI8PLlyw+u6318fHzQs2fPj94OERERVW9crE5UhVJTU6GrqwsASElJQf369XH+/Hk0adKkagMrxdKlSyEIQlWHQURERJ85JiJEVcjQ0LCqQygzbW3tDzpeEATk5uZCQYG/foiIiL5knJpF9JGYmppiyZIlUtuaNGmC4OBg8XnBqVn169cHADRt2hQSiQTOzs4l1h0REQErKyuoqqqiffv2SElJKVJm+/btaNiwIZSVlWFqaoqFCxdK7V+xYgUsLS2hoqICAwMD9O7dW9y3bds22NnZQVVVFXp6eujUqRMyMzMBFJ2alZeXhzlz5qB+/fpQVVWFvb09tm3bJu7Pnza2d+9eODg4QFlZGceOHStl5IiIiOhLwI8kiT4Rp06dQsuWLREZGYmGDRtCSUmp2HJ3797Ft99+i5EjR2LYsGE4c+YMxo0bJ1Xm7Nmz6NOnD4KDg9G3b18cP34cP/74I/T09ODj44MzZ87A398f69evR+vWrfH8+XPExMQAeDddzNPTE/Pnz0evXr3w6tUrxMTElDgda86cOfjrr7+watUqWFpa4ujRoxg4cCD09fXRrl07sdxPP/2EkJAQmJmZidPRCsrKykJWVpb4PD09vcxjSERERJ8PJiJEnwh9fX0AgJ6eXqlTtlauXAlzc3PxCoe1tTUuXryIefPmiWUWLVqEjh07YsqUKQAAKysrXLlyBQsWLICPjw/u3LkDdXV1dO/eHZqamqhXrx6aNm0K4F0ikpOTg2+//Rb16tUDANjZ2RUbS1ZWFn755RdERkbC0dERAGBmZoZjx45h9erVUonIjBkz0Llz5xL7NWfOHEyfPv2940RERETVA6dmEX1mEhMT0apVK6lt+UlAwTJOTk5S25ycnJCcnIzc3Fx07twZ9erVg5mZGQYNGoQNGzbg9evXAAB7e3t07NgRdnZ28PDwwNq1a/HixYtiY7l+/Tpev36Nzp07Q0NDQ3z8+eefuHHjhlTZ5s2bl9qviRMnIi0tTXzcvXtXpvEgIiKizxMTEaKPRE5Orsh0prdv31ZRNNI0NTVx7tw5bNy4EbVr18bUqVNhb2+Ply9fQl5eHgcPHsTevXtha2uLZcuWwdraGrdu3SpST0ZGBgBgz549iI+PFx9XrlyRWicCAOrq6qXGpKysDC0tLakHERERVV9MRIg+En19faSmporP09PTi30zny9/TUhubm6p9drY2ODUqVNS206ePFmkTGxsrNS22NhYWFlZQV5eHgCgoKCATp06Yf78+bhw4QJSUlJw+PBhAO8W0Ts5OWH69Ok4f/48lJSUsGPHjiKx2NraQllZGXfu3IGFhYXUw8TEpNR+EBER0ZeNa0SIPpIOHTogLCwMbm5u0NHRwdSpU8UkoDi1atWCqqoq9u3bhzp16kBFRaXYW+WOGDECCxcuxPjx4zFkyBCcPXsWYWFhUmXGjRuHFi1aYObMmejbty9OnDiB5cuXY8WKFQCA3bt34+bNm2jbti10dXURERGBvLw8WFtbIy4uDocOHcI333yDWrVqIS4uDk+ePIGNjU2RWDQ1NREYGIgxY8YgLy8PX3/9NdLS0hAbGwstLS14e3t/2CASERFRtcUrIkQfycSJE9GuXTt0794d3bp1Q8+ePWFubl5ieQUFBfz6669YvXo1jIyM4O7uXmy5unXrYvv27di5cyfs7e2xatUq/PLLL1JlmjVrhi1btmDTpk1o1KgRpk6dihkzZsDHxwcAoKOjg/DwcHTo0AE2NjZYtWoVNm7ciIYNG0JLSwtHjx5F165dYWVlhcmTJ2PhwoXo0qVLsfHMnDkTU6ZMwZw5c2BjYwNXV1fs2bNHvB0xERERUXEkAr8imYg+Qenp6dDW1oZJwBbIKauVWjZlbrdKioqIiIhKk//3Oy0t7b3rPXlFhIiIiIiIKh0TESIiIiIiqnRMRIiIiIiIqNLxrllE9Em7NN2F3ylCRERUDfGKCBERERERVTomIkREREREVOmYiBARERERUaVjIkJERERERJWOiQgREREREVU6JiJERERERFTpmIgQEREREVGlYyJCRERERESVjokIERERERFVOiYiRERERERU6ZiIEBERERFRpWMiQkRERERElY6JCBERERERVTomIkREREREVOmYiBARERERUaVjIkJERERERJWOiQgREREREVU6JiJE9ElrNG1/VYdAREREHwETESIiIiIiqnRMRIiIiIiIqNIxESEiIiIiokrHRKQShIWFQUdHR3weHByMJk2alKkOZ2dnBAQEfHAshesxNTXFkiVLPrjeilZ4zD73dj/VcZaVj48PevbsWdVhEBERUTXCRKQKBAYG4tChQ2U6Jjw8HDNnzhSfV9Qb29OnT2PYsGEfXA9VnujoaEgkErx8+bKqQyEiIiIqN4WqDuBLpKGhAQ0NjTIdU6NGjY8Si76+/kepV1bZ2dlQUlKq0hi+VIIgIDc3FwoK/DVARERElY9XRAp49eoVBgwYAHV1ddSuXRuLFy8uMpUpKysLgYGBMDY2hrq6Olq1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cYmIiIiI9IWFyB0WLFiArKwsGBsbIyAgALt374aDg0OjjmlgYICEhARMnDgRIoLOnTsjKSlJuSeAiIiIiOhBw0uziKhJ4qVZRERE95+GXJrFm9WJqEk7PkOt7xCIiIioEbAQISIiIiIinWMhQkREREREOsdChIiIiIiIdI6FCBERERER6RwLESIiIiIi0jkWIkREREREpHMsRIiIiIiISOdYiBARERERkc6xECEiIiIiIp1jIUJERERERDrHQoSIiIiIiHSOhQgREREREekcCxEiIiIiItI5FiJERERERKRzLESIiIiIiEjnWIgQEREREZHOsRAhIiIiIiKdYyFCRE1a57it+g6BiIiIGgELESIiIiIi0jkWIkREREREpHMsRIiIiIiISOdYiFCjSEhIgK2trbI8ffp0PPLIIw3qIyQkBOPGjfvbsdzZT6tWrbBo0aK/3e+9dmfOiIiIiB5kLERIJyZOnIgdO3Y0aJ/ExETMmjVLWb5XBURaWhqio6P/dj8PEhHBsmXLEBgYCGtra1haWqJTp04YO3YssrOzlXbTp0+HSqWCSqWCoaEh3N3dER0djatXr2r016pVK412rq6uiIqKwp9//qnrqREREVETxUKEdMLS0hL29vYN2sfOzg5WVlb3PBZHR0eYm5vf8361dfPmTb2NXRsRwdChQzFmzBg8++yz2LZtG06ePInly5fD1NQU7777rkb7Tp06IT8/H3l5eVixYgW2bNmCN954o0a/M2fOVNqtWrUKP//8M8aMGaOraREREVETx0LkIVdcXIyIiAhYWFigRYsWWLhwYY1LmcrKyjBx4kS4ubnBwsICPXr0QHJyskY/CQkJ8PDwgLm5OZ5//nlcuXJFY/udl2ZVVFRgzJgxsLW1hb29PWJjYxEZGYkBAwYobW6PIyQkBOfOncP48eOVd9oB4MqVKwgPD4ebmxvMzc3h6+uL1atX1zvn28+siAimT58ODw8PmJiYwNXVVePFsjZz37NnD4KCgmBmZgZ3d3eMGTMGpaWlGuPNmjULw4YNg7W1tXI25m45q82xY8fw9NNPw8zMDPb29oiOjkZJSYmyffjw4RgwYABmzJgBR0dHWFtbY+TIkfUWP2vXrsWaNWuwdu1aTJ06FY899hg8PDzw2GOPYe7cuVixYoVG+2bNmsHFxQVubm4ICwvDiy++iO3bt9fo18rK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OgK49W58165doVarERISAhcXF42PAL4bW1tbLFu2DD179oSfnx+SkpLw448/Kt95cre5+/n5ISUlBadPn0ZQUBC6dOmCadOmwdXVtd5x/0rOzM3NsXXrVly9ehWPPvooBg0ahNDQUCxZskSjXWhoKNq1a4cnn3wSQ4YMQb9+/TB9+vQ6+1WpVFi7di0WLVqEzZs3IzQ0FN7e3njttdfg7u6OPXv23DWP48ePxxdffKFxX8e0adPQokULuLq64h//+AcsLCywbdu2Bn+fDBERET2YVCIi+g6Cmo7S0lK4ubnh/fffR1RUlM7Graqqgo+PDwYPHlzjXgPS3vDhw1FQUFDvRyHfL4qKimBjYwP3cd8ib+GL+g6HiIiItFD9/7uwsBDW1tb1tuXN6g+5w4cP49SpU+jevTsKCwsxc+ZMAED//v0bddxz585h27ZtCA4ORllZGZYsWYLc3FwMHTq0UcclIiIioqaBhQhhwYIFyMrKgrGxMQICArB79244ODg06pgGBgZISEjAxIkTISLo3LkzkpKS4OPj06jjEhEREVHTwEuziKhJ4qVZRERE95+GXJrFm9WJqEk7PkOt7xCIiIioEbAQISIiIiIinWMhQkREREREOsdChIiIiIiIdI6FCBERERER6RwLESIiIiIi0jkWIkREREREpHMsRIiIiIiISOdYiBARERERkc6xECEiIiIiIp1jIUJERERERDrHQoSIiIiIiHSOhQgREREREekcCxEiIiIiItI5FiJERERERKRzLESIiIiIiEjnWIgQEREREZHOsRAhIiIiIiKdYyFCRE1a57it+g6BiIiIGgELESIiIiIi0jkWIkREREREpHMsRIiIiIiISOdYiOhISEgIxo0b97f7OXv2LFQqFTIyMv52X3f6/PPP4e7uDgMDAyxatOie969v9+p3oI2srCy4uLiguLhY632GDx+OAQMGNF5QenT58mU4OTnh999/13coRERE1ETovRC5cOECxo4dCy8vL5iamsLZ2Rk9e/bE0qVLce3aNaVdq1atoFKpoFKpYGFhga5du2LdunXK9mvXrmHKlClo27YtTE1N4ejoiODgYGzYsOEvxZWQkABbW9sG75ecnAyVSoWCggKN9YmJiZg1a9ZfikUXioqKEBMTg9jYWJw/fx7R0dH6Dukvawq/gylTpmD06NGwsrJq1HGuXr2K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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_plot = df.groupby('methode_xy').size().sort_values()\n", "\n", "ax = df_plot.plot.barh()\n", "\n", "ax.set_xlabel(\"count\")\n", "ax.set_title(\"Number of boreholes per coordinate digitization method\")" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Number of boreholes per height digitization method')" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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d+/eUlJvb2+PsLAwREdH4/nz50pfPR4zZgwCAgKwatUq3L17F4sWLcLu3bsxevRoAECLFi3g5OQEX19fXL16FadPn8avv/6q0IaPjw8sLCzQvn17nD59Gg8ePEBISAiGDh2qMN3mY4MGDcLjx4/x888/4/bt29i3bx+mTJmCkSNHQk0tb6f4jh07sGHDBty5cwdTpkzBhQsXMGTIkDzHVqJECZw4cQK3b99G9+7d8f79e7Ro0QKurq7w9vbGkSNHEB0djbNnz+LXX3/FpUuXlIrPwMAAffv2xZgxY3DixAncuHEDfn5+ee4nERERqS5mBcVMyZIlERoaCrlcjlatWqFq1aoYPnw4TExMpCRx9OjRUFdXR6VKlWBpaYlHjx4p1ba3tzeWLl2KBQsWoHLlylizZg02btyIpk2bAgDU1NSwZ88evHnzBi4uLvjxxx8xc+ZMhTb09PRw6tQplC5dGt9//z2cnZ3Rt29fvH37NsebSWxtbXHw4EFcuHAB1atXx4ABA9C3b19MnDgxz+MzdepUbN26FdWqVcMff/yBLVu2SJ9A5DU2a2trnDhxAtevX4ePjw/S09Nx8OBBNG7cGL1794aTkxO6deuGhw8fSvdKKGP+/Plo1KgR2rZtixYtWqBhw4aoXbt2nvtKREREqomr6BAVQxl34XMVneKNq+gQEX1buIoOEREREVExxASfiIiIiEiFMMEnIiIiIlIhTPCJiIiIiFQIE3wiIiIiIhXCBJ+IiIiISIUwwSciIiIiUiEahR0AERWeG1Pdc11Hl4iIiL49vIJPRERERKRCmOATEREREakQJvhERERERCqECT4RERERkQphgk9EREREpEKY4BMRERERqRAm+EREREREKoQJPhERERGRCmGCT0RERESkQpjgExERERGpECb4REREREQqhAk+EREREZEKYYJPRERERKRCmOATEREREakQJvhERERERCqECT4RERERkQphgk9EREREpEKY4BMRERERqRAm+EREREREKoQJPhERERGRCmGCT0RERESkQpjgExERERGpECb4REREREQqhAk+EREREZEKYYJPRERERKRCNAo7ACIqPFWmHIaatl5hh0F5FD3Hq7BDICKiIoxX8ImIiIiIVAgTfCIiIiIiFcIEn4iIiIhIhTDBJyIiIiJSIUzwiYiIiIhUCBN8IiIiIiIVwgSf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vx4AMHny5Cxj8NNPP2H16tVKtV+/fn2cP38eU6dOhaenJ16/fo3SpUvD19cXEyZMkKYoVapUCXp6ehg1ahQeP34MbW1tlC9fHuvXr0fPnj3z1TciIiJSHTLBdfaIip3ExMQPN9sO3w417bx9KvIlRM/xKuwQiIiIiryMv98JCQm5zhDgHHwiIiIiIhXCBJ+IiIiISIUwwSciIiIiUiFM8ImIiIiIVAgTfCIiIiIiFcIEn4iIiIhIhTDBJyIiIiJSIfyiK6Ji7MZU9wL/9mEiIiIqXLyCT0RERESkQpjgExERERGpECb4REREREQqhAk+EREREZEKYYJPRERERKRCmOATEREREakQJvhERERERCqECT4RERERkQphgk9EREREpEKY4BMRERERqRAm+EREREREKoQJPhERERGRCmGCT0RERESkQpjgExERERGpECb4REREREQqhAk+EREREZEKYYJPRERERKRCmOATEREREakQJvhERERERCqECT4RERERkQphgk9EREREpEKY4BMRERERqRAm+EREREREKoQJPhERERGRCmGCT0RERESkQjQKOwAiKjxVphyGmraeQln0HK9CioaIiIgKAq/gExERERGpECb4REREREQqhAk+EREREZEKYYJPRERERKRCmOATEREREakQJvhERERERCqECT4RERERkQphgk9EREREpEKY4FMWfn5+kMlkkMlk0NTUhJWVFVq2bIkNGzYgPT1doa69vT2WLFmSpQ1/f3/UqFFD4blMJoOHh0eWuvPnz4dMJkPTpk0LJP63b9/Cz88PVatWhYaGBry9vZXaz97eXup3xmPOnDkFEhOAbPv38VhnPLIbIyIiIiJlMcGnbHl4eCAmJgbR0dE4dOgQmjVrhmHDhqFNmzZ4//59vtq0sbFBcHAwnjx5olC+YcMGlC5duiDCBgDI5XLo6upi6NChaNGiRZ72nTZtGmJiYqTHzz///Fmx7N+/H5cvX1Yo27p1K+7cuSM9zxjrjMeWLVs+65hERERUvDHBp2xpa2vD2toatra2qFWrFn755Rfs27cPhw4dQkBAQL7aLFGiBFq1aoXAwECp7OzZs3j+/Dm8vLyUauPIkSPQ0dFBfHy8QvmwYcPQvHlzAIC+vj5WrVqFfv36wdraOk8xGhoawtraWnro6+tL2wICAmBiYoL9+/ejQoUK0NPT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0KFDub7OU6dOxdChQ2FsbAwPDw+kpqbi0qVLePXqFUaOHJnjfqmpqYiNjVUo09DQgIWFBRwdHfHu3TssX74cbdu2RWhoKFavXq3UmNnb2+Pw4cOIioqCubk5jI2NldqPiIiIirGvdE9AthITE0WPHj2Enp6esLa2FosWLRIuLi5i/PjxUp20tDQxefJkYW9vLzQ1NYWNjY3o0KGDdDOmEEL8/vvvolSpUkJXV1e0bdtWLFiwINcbKd+9eyeGDBkijIyMhKmpqRg3bpzo3Lmz6Natm1Qn882x586dE9WqVRPa2toiY9hevHgh2rdvLwwMDESJEiXExIkTRa9evZS+WXfPnj2ibt26wsjISOjr64t69eop3LSqTN8vXLggWrZsKQwMDIS+vr6oVq2aws2dOd0c/Kkxyyynm2xfvXol1bly5YoAIB48eJBjO0IIcfToUeHp6SnMzMyEhoaGsLKyEt7e3iIoKEih3s6dO0WlSpWEpqamKF26tMKN0UII8fLlS9GzZ09hbGwsdHV1hbu7u7hz545CnbVr1wpbW1uhq6srvL29xYwZM4S1tbW0PfO5IYQQmzdvFjVq1BBaWlrC1NRUNG7cWOzevTvH/vj6+mZ7A2uFChWkOosWLRI2NjZSnH/88YfC+G3cuDHb8Y+Li5NeXwAiODg4y2shhBCvXr2StitD2Zt0iIiIqOhQ9u+3TAghCuH/imwlJyfD1tYWCxcuRN++fb/acdPT0+Hs7IwuXboofHstqZ5+/frh9u3bOH36dGGHUqgSExNhbGyMhIQEGBkZFXY4REREpARl/34X6p2NV65cwe3bt+Hi4oKEhARMmzYNAKQpFl/Kw4cPceTIETRp0gSpqalYsWIFHjx4gB49enzR49LXt2DBArRs2RL6+vo4dOgQAgMDlfriKiIiIqJvVaEvXbJgwQJERUVBS0sLtWvXxunTp2FhYfFFj6mmpoaAgACMHj0aQghUqVIFx44dg7Oz8xc9Ln19Fy5cwLx58/D69WuUK1cOy5Ytw48//ljYYRERERF9MUVqig4RfR2cokNERPTtUfbvd6F90RURERERERU8JvhERERERCqECT4RERERkQphgk9EREREpEKY4BMRERERqRAm+EREREREKoQJPhERERGRCmGCT0RERESkQpjgExERERGpECb4REREREQqhAk+EREREZEKYYJPRERERKRCmOATEREREakQJvhERERERCqECT4RERERkQphgk9EREREpEI0CjsAIvr6hBAAgMTExEKOhIiIiJSV8Xc74+94TpjgExVDL168AADY2dkVciRERESUV69fv4axsXGO25ngExVDZmZmAIBHjx7l+guCPkhMTISdnR0eP34MIyOjwg6nyON45Q3HK+84ZnnD8cqbojxeQgi8fv0aJUuWzLUeE3yiYkhN7cPtN8bGxkXul1dRZmRkxPHKA45X3nC88o5jljccr7wpquOlzIU53mRLRERERKRCmOATEREREakQJvhExZC2tjamTJkCbW3twg7lm8DxyhuOV95wvPKOY5Y3HK+8UYXxkolPrbNDRERERETfDF7BJyIiIiJSIUzwiYiIiIhUCBN8IiIiIiIVwgSfiIiIiEiFMMEnKmZ+++032NvbQ0dHB3Xr1sWFCxcKO6Qiwd/fHzKZTOFRsWJFafvbt28xePBgmJubw8DAAB07dsTTp08LMeKv79SpU2jbti1KliwJmUyGvXv3KmwXQmDy5MmwsbGBrq4uWrRogbt37yrUefnyJXx8fGBkZAQTExP07dsXSUlJX7EXX8+nxsvPzy/LOefh4aFQp7iM1+zZs/Hdd9/B0NAQJUqUgLe3N6KiohTqKPMefPToEby8vKCnp4cSJUpgzJgxeP/+/dfsylejzJg1bdo0yzk2YMAAhTrFZcxWrVqFatWqSV9e5erqikOHDknbVe38YoJPVIxs27YNI0eOxJQpU3D58mVUr14d7u7uiIuLK+zQioTKlSsjJiZGepw5c0baNmLECPzvf//Djh07cPLkSfz333/4/vvvCzHary85ORnVq1fHb7/9lu32efPmYdmyZVi9ejXCwsKgr68Pd3d3vH37Vqrj4+ODmzdv4ujRo9i/fz9OnTqF/v37f60ufFWfGi8A8PDwUDjntmzZorC9uIzXyZMnMXjwYJw/fx5Hjx7Fu3fv0KpVKyQnJ0t1PvUelMvl8PLyQlpaGs6ePYvAwEAEBARg8uTJhdGlL06ZMQOAfv36KZxj8+bNk7YVpzErVaoU5syZg/DwcFy6dAnNmzdH+/btcfPmTQAqeH4JIio2XFxcxODBg6XncrlclCxZUsyePbsQoyoapkyZIqpXr57ttvj4eKGpqSl27NghlUVGRgoA4ty5c18pwqIFgNizZ4/0PD09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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_plot = df.groupby('methode_z').size().sort_values()\n", "\n", "ax = df_plot.plot.barh()\n", "\n", "ax.set_xlabel(\"count\")\n", "ax.set_title(\"Number of boreholes per height digitization method\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding color to the Borehole dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The default dataframe of the Boring datatype contains information about the 'boormethode' as its subtype. However, in the DOV database there is information about the observed color of the soil in the various depth intervals available as well. We can access this data in pydov by using the subtype `Kleur`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To check the available subtypes for a the `Boring` type, you can use:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'BoorMethode': {'name': 'BoorMethode',\n", " 'class': pydov.types.boring.BoorMethode,\n", " 'definition': 'Subtype listing the method used to make the borehole. It has the following fields: diepte_methode_van, diepte_methode_tot, boormethode.'},\n", " 'Kleur': {'name': 'Kleur',\n", " 'class': pydov.types.boring.Kleur,\n", " 'definition': 'Subtype listing the color values of the borehole. It has the following fields: diepte_kleur_van, diepte_kleur_tot, kleur.'}}" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pydov.types.boring import Boring\n", "\n", "Boring.get_subtypes()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To retrieve the colors instead of the method, we can instantiate the search class with the `Kleur` subtype:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "from pydov.search.boring import BoringSearch\n", "from pydov.types.boring import Kleur\n", "\n", "boring_search = BoringSearch(\n", " objecttype=Boring.with_subtype(Kleur)\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The extra fields are now available, and should be included in the output of `get_fields()`. E.g. to get more details about the `kleur` field:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", "
\n", "

kleur - Grondkleur voor het diepte-interval

  • type: string
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False
\n", "
\n", " " ], "text/plain": [ "{'name': 'kleur', 'type': 'string', 'multivalue': False, 'definition': 'Grondkleur voor het diepte-interval', 'notnull': False, 'query': False, 'cost': 10}" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "boring_search.get_fields()['kleur']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the color data is returned when querying:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[000/001] .\n", "[000/001] .\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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_boringboornummerxymv_mtawstart_boring_mtawgemeentediepte_boring_vandiepte_boring_totdatum_aanvanguitvoerderboorgatmetingdiepte_kleur_vandiepte_kleur_totkleur
0https://www.dov.vlaanderen.be/data/boring/1966...GEO-66/037-IIA-b202157647.0186350.0NaN7.45NaN0.06.01966-06-28Rijksinstituut voor GrondmechanicaFalse0.001.25bruin
1https://www.dov.vlaanderen.be/data/boring/1966...GEO-66/037-IIA-b202157647.0186350.0NaN7.45NaN0.06.01966-06-28Rijksinstituut voor GrondmechanicaFalse1.252.30bruinroest
2https://www.dov.vlaanderen.be/data/boring/1966...GEO-66/037-IIA-b202157647.0186350.0NaN7.45NaN0.06.01966-06-28Rijksinstituut voor GrondmechanicaFalse2.302.75bruin
3https://www.dov.vlaanderen.be/data/boring/1966...GEO-66/037-IIA-b202157647.0186350.0NaN7.45NaN0.06.01966-06-28Rijksinstituut voor GrondmechanicaFalse2.752.90bruin
4https://www.dov.vlaanderen.be/data/boring/1966...GEO-66/037-IIA-b202157647.0186350.0NaN7.45NaN0.06.01966-06-28Rijksinstituut voor GrondmechanicaFalse2.903.40groenzwart
5https://www.dov.vlaanderen.be/data/boring/1966...GEO-66/037-IIA-b202157647.0186350.0NaN7.45NaN0.06.01966-06-28Rijksinstituut voor GrondmechanicaFalse3.404.30donkerbruin
6https://www.dov.vlaanderen.be/data/boring/1966...GEO-66/037-IIA-b202157647.0186350.0NaN7.45NaN0.06.01966-06-28Rijksinstituut voor GrondmechanicaFalse4.304.75grijs
7https://www.dov.vlaanderen.be/data/boring/1966...GEO-66/037-IIA-b202157647.0186350.0NaN7.45NaN0.06.01966-06-28Rijksinstituut voor GrondmechanicaFalse4.756.00grijs
\n", "
" ], "text/plain": [ " pkey_boring boornummer \\\n", "0 https://www.dov.vlaanderen.be/data/boring/1966... GEO-66/037-IIA-b202 \n", "1 https://www.dov.vlaanderen.be/data/boring/1966... GEO-66/037-IIA-b202 \n", "2 https://www.dov.vlaanderen.be/data/boring/1966... GEO-66/037-IIA-b202 \n", "3 https://www.dov.vlaanderen.be/data/boring/1966... GEO-66/037-IIA-b202 \n", "4 https://www.dov.vlaanderen.be/data/boring/1966... GEO-66/037-IIA-b202 \n", "5 https://www.dov.vlaanderen.be/data/boring/1966... GEO-66/037-IIA-b202 \n", "6 https://www.dov.vlaanderen.be/data/boring/1966... GEO-66/037-IIA-b202 \n", "7 https://www.dov.vlaanderen.be/data/boring/1966... GEO-66/037-IIA-b202 \n", "\n", " x y mv_mtaw start_boring_mtaw gemeente \\\n", "0 157647.0 186350.0 NaN 7.45 NaN \n", "1 157647.0 186350.0 NaN 7.45 NaN \n", "2 157647.0 186350.0 NaN 7.45 NaN \n", "3 157647.0 186350.0 NaN 7.45 NaN \n", "4 157647.0 186350.0 NaN 7.45 NaN \n", "5 157647.0 186350.0 NaN 7.45 NaN \n", "6 157647.0 186350.0 NaN 7.45 NaN \n", "7 157647.0 186350.0 NaN 7.45 NaN \n", "\n", " diepte_boring_van diepte_boring_tot datum_aanvang \\\n", "0 0.0 6.0 1966-06-28 \n", "1 0.0 6.0 1966-06-28 \n", "2 0.0 6.0 1966-06-28 \n", "3 0.0 6.0 1966-06-28 \n", "4 0.0 6.0 1966-06-28 \n", "5 0.0 6.0 1966-06-28 \n", "6 0.0 6.0 1966-06-28 \n", "7 0.0 6.0 1966-06-28 \n", "\n", " uitvoerder boorgatmeting diepte_kleur_van \\\n", "0 Rijksinstituut voor Grondmechanica False 0.00 \n", "1 Rijksinstituut voor Grondmechanica False 1.25 \n", "2 Rijksinstituut voor Grondmechanica False 2.30 \n", "3 Rijksinstituut voor Grondmechanica False 2.75 \n", "4 Rijksinstituut voor Grondmechanica False 2.90 \n", "5 Rijksinstituut voor Grondmechanica False 3.40 \n", "6 Rijksinstituut voor Grondmechanica False 4.30 \n", "7 Rijksinstituut voor Grondmechanica False 4.75 \n", "\n", " diepte_kleur_tot kleur \n", "0 1.25 bruin \n", "1 2.30 bruinroest \n", "2 2.75 bruin \n", "3 2.90 bruin \n", "4 3.40 groenzwart \n", "5 4.30 donkerbruin \n", "6 4.75 grijs \n", "7 6.00 grijs " ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "boring_search.search(\n", " location=WithinDistance(Point(157647.0, 186350.0, epsg=31370), 10))" ] } ], "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 }