Introductory tutorial

Binder

pydov provides machine access to the data that can be visualized with the DOV viewer.

All the pydov functionalities rely on the existing DOV webservices. An in-depth overview of the available services and endpoints is provided on the accessing DOV data page. To retrieve data, pydov uses a combination of the available WFS services and the XML representation of the core DOV data.

As pydov relies on the XML data returned by the existing DOV webservices, downloading DOV data with pydov is governed by the same disclaimer that applies to the other DOV services. Be sure to consult it when using pydov!

pydov interfaces data and services hosted by the Flemish governement. Therefore, some syntax of the API as well as the descriptions provided by the backend are in Dutch.

Use case: gather data for a hydrogeological model

[1]:
%matplotlib inline
import inspect, sys
[2]:
import pydov
import pandas as pd

pydov: general info

To get started with pydov you should first determine which information you want to search for. DOV provides a lot of different datasets about soil, subsoil and groundwater of Flanders, some of which can be queried using pydov. Supported datasets are listed in the quickstart.

In this case, to start with a hydrogeological model, we are interested in the hydrostratigraphic interpretation of the borehole data and the groundwater level. These datasets can be found with the following search objects:

Indeed, each of the datasets can be queried using a search object for the specific dataset. While the search objects are different, the workflow is the same for each dataset. Relevant classes can be imported from the pydov.search package, for example if we’d like to query the dataset with hydrostratigraphic interpretations of borehole data:

[3]:
from pydov.search.interpretaties import HydrogeologischeStratigrafieSearch
hs = HydrogeologischeStratigrafieSearch()

If you would like some more information or metadata about the data you can retrieve, you can query the search object. Since pydov interfaces services and metadata from Flemish government agencies, the descriptions are in Dutch:

[4]:
hs.get_description()
[4]:
'De hydrostratigrafie geeft, op basis van de (gecodeerde) lithologie, een indeling weer naar de al dan niet watervoerende eigenschappen van een bepaald beschreven diepte-interval. Deze interpretatie respecteert de lithostratigrafie van het Tertiair, maar deelt deze anders in. De hiervoor gebruikte standaard is de Hydrogeologische Codering van de Ondergrond van Vlaanderen (HCOV). Deze kan beschouwd worden als de officiele hydrogeologische codering voor het Vlaams Gewest.'

The different fields that are available for objects of the ‘Hydrogeologische Stratigrafie’ datatype can be requested with the get_fields() method:

[5]:
fields = hs.get_fields()
# print available fields
for f in fields.values():
    print(f['name'])
pkey_interpretatie
Type_proef
Proefnummer
pkey_boring
x
y
start_interpretatie_mtaw
diepte_tot_m
gemeente
Auteurs
Datum
Opdrachten
betrouwbaarheid_interpretatie
Geldig_van
Geldig_tot
eerste_invoer
geom
diepte_laag_van
diepte_laag_tot
aquifer

You can get more information of a field by requesting it from the fields dictionary:

  • name: name of the field

  • definition: definition of this field

  • cost: currently this is either 1 or 10, depending on the datasource of the field. It is an indication of the expected time it will take to retrieve this field in the output dataframe.

  • notnull: whether the field is mandatory or not

  • type: datatype of the values of this field

  • query: whether you can use this field in an attribute query

Alternatively, you can either list all fields by consulting the output of the get_fields() method, or the search instance itself:

[6]:
hs
[6]:
pydov.search.interpretaties.HydrogeologischeStratigrafieSearch

De hydrostratigrafie geeft, op basis van de (gecodeerde) lithologie, een indeling weer naar de al dan niet watervoerende eigenschappen van een bepaald beschreven diepte-interval. Deze interpretatie respecteert de lithostratigrafie van het Tertiair, maar deelt deze anders in. De hiervoor gebruikte standaard is de Hydrogeologische Codering van de Ondergrond van Vlaanderen (HCOV). Deze kan beschouwd worden als de officiele hydrogeologische codering voor het Vlaams Gewest.

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

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

Type_proef - Het type van de proef waarvan de hydrogeologische stratigrafie een interpretatie is. Bij een hydrogeologische stratigrafie zal dit altijd 'Boring' zijn.

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

    Boring - Boring - De hydrogeologische stratigrafie is een interpretatie van een boring.

Proefnummer - Het proefnummer van de boring waarvan de hydrogeologische stratigrafie een interpretatie is.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

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

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

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

  • type: float
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

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

  • type: float
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

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

  • type: float
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

diepte_tot_m - None

  • type: float
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

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

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

Auteurs - De auteur of auteurs van de hydrogeologische stratigrafie.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

Datum - De datum waarop de hydrogeologische stratigrafie werd beschreven.

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

Opdrachten - De opdracht(en) waaraan de hydrogeologische stratigrafie gekoppeld is.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

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

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

Geldig_van - Het tijdstip vanaf wanneer de hydrogeologische stratigrafie geldig is.

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

Geldig_tot - Het tijdstip tot wanneer de hydrogeologische stratigrafie geldig is.

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

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

  • type: datetime
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

geom - None

  • type: geometry
  • notnull: False
  • query: False
  • cost: 1
  • multivalue: False

diepte_laag_van - Diepte van de bovenkant van de laag hydrogeologische stratigrafie in meter.

  • type: float
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False

diepte_laag_tot - Diepte van de onderkant van de laag hydrogeologische stratigrafie in meter.

  • type: float
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False

aquifer - Code van de watervoerende laag waarin de laag Hydrogeologische stratigrafie zich bevindt (HCOVv1)

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

    0000 - 0000 - Onbekend

    0100 - 0100 - Quartaire aquifersystemen

    0110 - 0110 - Ophogingen

    0120 - 0120 - Duinen

    0130 - 0130 - Polderafzettingen

    0131 - 0131 - Kleiige polderafzettingen van de kustvlakte

    0132 - 0132 - Kleiige polderafzettingen van het Meetjesland

    0133 - 0133 - Kleiige polderafzettingen van Waasland-Antwerpen

    0134 - 0134 - Zandige kreekruggen

    0135 - 0135 - Veen-kleiige poelgronden

    0140 - 0140 - Alluviale deklagen

    0150 - 0150 - Deklagen

    0151 - 0151 - Zandige deklagen

    0152 - 0152 - Zand-lemige deklagen

    0153 - 0153 - Lemige deklagen

    0154 - 0154 - Kleiige deklagen

    0160 - 0160 - Pleistocene afzettingen

    0161 - 0161 - Pleistoceen van de kustvlakte

    0162 - 0162 - Pleistoceen van de Vlaamse Vallei

    0163 - 0163 - Pleistoceen van de riviervalleien

    0170 - 0170 - Maas- en Rijnafzettingen

    0171 - 0171 - Afzettingen Hoofdterras

    0172 - 0172 - Afzettingen Tussenterassen

    0173 - 0173 - Afzettingen Maasvlakte

    0200 - 0200 - Kempens Aquifersysteem

    0210 - 0210 - Kiezeloolietformatie ten noorden van Feldbiss

    0211 - 0211 - Zandige eenheid boven de Brunssum I-klei

    0212 - 0212 - Brunssum I-Klei

    0213 - 0213 - Zand van Pey

    0214 - 0214 - Brunssum II-klei

    0215 - 0215 - Zand van Waubach

    0220 - 0220 - Klei-zand-complex van de Kempen

    0221 - 0221 - Klei van Turnhout

    0222 - 0222 - Zand van Beerse

    0223 - 0223 - Klei van Rijkevorsel

    0230 - 0230 - Pleistoceen en Plioceen aquifer

    0231 - 0231 - Zanden van Brasschaat en/of Merksplas

    0232 - 0232 - Zand van Mol

    0233 - 0233 - Zandige top van Lillo

    0234 - 0234 - Zand van Poederlee en/of zandige top van Kasterlee

    0240 - 0240 - Pliocene kleiige laag

    0241 - 0241 - Kleiig deel van Lillo en/of van de overgang Lillo-Kattendijk

    0242 - 0242 - Kleiige overgang tussen de zanden van Kasterlee en Diest

    0250 - 0250 - Mioceen Aquifersysteem

    0251 - 0251 - Zand van Kattendijk en/of onderste zandlaag van Lillo

    0252 - 0252 - Zand van Diest

    0253 - 0253 - Zand van Bolderberg

    0254 - 0254 - Zanden van Berchem en/of Voort

    0255 - 0255 - Klei van Veldhoven

    0256 - 0256 - Zand van Eigenbilzen

    0300 - 0300 - Boom Aquitard

    0301 - 0301 - Kleiig deel van Eigenbilzen

    0302 - 0302 - Klei van Putte

    0303 - 0303 - Klei van Terhagen

    0304 - 0304 - Klei van Belsele-Waas

    0400 - 0400 - Oligoceen Aquifersysteem

    0410 - 0410 - Zand van Kerniel

    0420 - 0420 - Klei van Kleine-Spouwen

    0430 - 0430 - Ruisbroek-Berg Aquifer

    0431 - 0431 - Zand van Berg

    0432 - 0432 - Zand van Kerkom

    0433 - 0433 - Kleiig zand van Oude Biezen

    0434 - 0434 - Zand van Boutersem

    0435 - 0435 - Zand van Ruisbroek

    0436 - 0436 - Zand van Wintham

    0440 - 0440 - Tongeren Aquitard

    0441 - 0441 - Klei van Henis

    0442 - 0442 - Klei van Watervliet

    0450 - 0450 - Onder-Oligoceen Aquifersysteem

    0451 - 0451 - Zand van Neerrepen

    0452 - 0452 - Zand-Klei van Grimmertingen

    0453 - 0453 - Kleiig zand van Bassevelde

    0500 - 0500 - Bartoon Aquitardsysteem

    0501 - 0501 - Klei van Onderdijke

    0502 - 0502 - Zand van Buisputten

    0503 - 0503 - Klei van Zomergem

    0504 - 0504 - Zand van Onderdaele

    0505 - 0505 - Kleien van Ursel en/of Asse

    0600 - 0600 - Ledo Paniseliaan Brusseliaan Aquifersysteem

    0610 - 0610 - Wemmel-Lede Aquifer

    0611 - 0611 - Zand van Wemmel

    0612 - 0612 - Zand van Lede

    0620 - 0620 - Zand van Brussel

    0630 - 0630 - Afzettingen van het Boven-Paniseliaan

    0631 - 0631 - Zanden van Aanlter en/of Oedelem

    0632 - 0632 - Zandige klei van Beernem

    0640 - 0640 - Zandige afzettingen van het Onder-Paniseliaan (Vlierzele en/of Aalterbrugge)

    0700 - 0700 - Paniseliaan Aquitard

    0701 - 0701 - Klei van Pittem

    0702 - 0702 - Klei van Merelbeke

    0800 - 0800 - Ieperiaan Aquifer (Egem en of Mont-Panisel)

    0900 - 0900 - Ieperiaan aquitardsysteem

    0910 - 0910 - Silt van Kortemark

    0920 - 0920 - Afzettingen van Kortrijk

    0921 - 0921 - Klei van Aalbeke

    0922 - 0922 - Klei van Moen

    0923 - 0923 - Zand van Mons-en-Pévèle

    0924 - 0924 - Klei van Saint-Maur

    0925 - 0925 - Klei van Mont-Héribu

    1000 - 1000 - Paleoceen Aquifersysteem

    1010 - 1010 - Landeniaan Aquifersysteem

    1011 - 1011 - Zand van Knokke

    1012 - 1012 - Zandige afzettingen van Loksbergen en/of Dormaal

    1013 - 1013 - Zand van Grandglise en/of Hoegaarden

    1014 - 1014 - Kleiig deel van Lincent

    1015 - 1015 - Versteend deel van Lincent

    1020 - 1020 - Landeniaan en Heersiaan Aquitard

    1021 - 1021 - Siltige afzetting van Halen

    1022 - 1022 - Klei van Waterschei

    1023 - 1023 - Slecht doorlatend deel van de mergels van Gelinden

    1030 - 1030 - Heersiaan en Opglabbeek Aquifersysteem

    1031 - 1031 - Doorlatend deel van de Mergels van Gelinden

    1032 - 1032 - Zand van Orp

    1033 - 1033 - Zand van Eisden

    1034 - 1034 - Klei van Opoeteren

    1035 - 1035 - Zand van Maasmechelen

    1100 - 1100 - Krijt Aquifersysteem

    1110 - 1110 - Krijt Aquifer

    1111 - 1111 - Kalksteen van Houthem

    1112 - 1112 - Tufkrijt van Maastricht

    1113 - 1113 - Krijt van Gulpen

    1120 - 1120 - Afzettingen van Vaals (Smectiet van Herve)

    1130 - 1130 - Zand van Aken

    1140 - 1140 - Turoonmergels op Massief van Brabant

    1150 - 1150 - Wealdiaan

    1200 - 1200 - Jura-Trias-Perm

    1210 - 1210 - Jura

    1220 - 1220 - Trias

    1230 - 1230 - Perm

    1300 - 1300 - Sokkel

    1310 - 1310 - Boven-Carboon

    1320 - 1320 - Kolenkalk

    1330 - 1330 - Devoon

    1340 - 1340 - Cambro-Siluur Massief van Brabant

[7]:
fields['pkey_interpretatie']
[7]:

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

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

The fields pkey_interpretatie and pkey_boring are important identifiers. In this case pkey_interpretatie is the unique identifier of this interpretation and is also the permanent url where the data can be consulted (~https://www.dov.vlaanderen.be/data/interpretatie/…). You can retrieve an XML representation by appending ‘.xml’ to the URL, or a JSON equivalent by appending ‘.json’.

The pkey_boring is the identifier of the borehole from which this interpretation was made. As mentioned before, it is also the permanent url (~https://www.dov.vlaanderen.be/data/boring/…).

Optionally, if the field has an associated codelist, this is listed as codelist:

[8]:
fields['Type_proef']
[8]:

Type_proef - Het type van de proef waarvan de hydrogeologische stratigrafie een interpretatie is. Bij een hydrogeologische stratigrafie zal dit altijd 'Boring' zijn.

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

    Boring - Boring - De hydrogeologische stratigrafie is een interpretatie van een boring.

Query the data with pydov

Attributes

The data can be queried on attributes, location or both. To query on attributes, the OGC filter functions from OWSLib are used:

[9]:
# list available query methods
methods = [i for i,j in inspect.getmembers(sys.modules['owslib.fes2'],
                                           inspect.isclass)
           if 'Property' in i]
print(*methods, sep = "\n")
PropertyIsBetween
PropertyIsEqualTo
PropertyIsGreaterThan
PropertyIsGreaterThanOrEqualTo
PropertyIsLessThan
PropertyIsLessThanOrEqualTo
PropertyIsLike
PropertyIsNotEqualTo
PropertyIsNull
SortProperty

If you are for example interested in all the hydrostratigraphic interpretations in the city of Leuven, you compose the query like below (mind that the values are in Dutch):

[10]:
from owslib.fes2 import PropertyIsEqualTo
query = PropertyIsEqualTo(
            propertyname='gemeente',
            literal='Leuven')
dfhs = hs.search(query=query)
dfhs.head()
[000/001] .
[000/036] cccccccccccccccccccccccccccccccccccc
[10]:
pkey_interpretatie pkey_boring betrouwbaarheid_interpretatie x y start_interpretatie_mtaw diepte_laag_van diepte_laag_tot aquifer
0 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 0.0 4.5 0162
1 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 4.5 59.0 0620
2 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 59.0 90.7 0900
3 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 90.7 110.0 1013
4 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 110.0 130.0 1014

This yielded 36 interpretations from 36, or less, boreholes. It can be less than 36 boreholes because multiple interpretations can be made of a single borehole.

If you would like to narrow the search down to for example interpretations deeper than 200 meters, you can combine features in the search using the logical operators And, Or provided by OWSLib:

[11]:
from owslib.fes2 import And
from owslib.fes2 import PropertyIsGreaterThan
query = And([
    PropertyIsEqualTo(
            propertyname='gemeente',
            literal='Leuven'),
    PropertyIsGreaterThan(
            propertyname='diepte_tot_m',
            literal='200')
    ])
dfhs = hs.search(query=query)
dfhs.head()
[000/001] .
[000/001] c
[11]:
pkey_interpretatie pkey_boring betrouwbaarheid_interpretatie x y start_interpretatie_mtaw diepte_laag_van diepte_laag_tot aquifer
0 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 0.0 4.5 0162
1 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 4.5 59.0 0620
2 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 59.0 90.7 0900
3 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 90.7 110.0 1013
4 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 110.0 130.0 1014

Mind the difference between attributes diepte_tot_m and diepte_laag_.... The former is defined in the WFS service and can be used as attribute in the query. The latter attributes are defined in the linked XML document, from which the information is only available after it has been gathered from the DOV webservice. All the attributes with cannot be used in the intial query and should be used in a subsequent filtering of the Pandas DataFrame.

More information on querying attribute properties is given in the docs. Worth mentioning is the query using lists where pydov extends the default OGC filter expressions described with a new expression PropertyInList that allows you to use lists (of strings) in search queries.

One last goodie is the possibility to join searches using common attibutes. For example the pkey_boring field, denoting the borehole. As such, you can get the boreholes for which a hydrostratigraphical interpretation is available, and also query the lithological description of that borehole. Like below:

[12]:
from pydov.util.query import Join
from pydov.search.interpretaties import LithologischeBeschrijvingenSearch

ls = LithologischeBeschrijvingenSearch()
dfls = ls.search(query=Join(dfhs, 'pkey_boring'))
df_joined = pd.merge(dfhs, dfls.loc[:, ['pkey_boring','diepte_laag_van', 'diepte_laag_tot', 'beschrijving']],
                     how='left',
                     left_on=['pkey_boring','diepte_laag_van', 'diepte_laag_tot'],
                     right_on = ['pkey_boring','diepte_laag_van', 'diepte_laag_tot']
                    )
df_joined.head()
[000/001] .
[000/001] c
[12]:
pkey_interpretatie pkey_boring betrouwbaarheid_interpretatie x y start_interpretatie_mtaw diepte_laag_van diepte_laag_tot aquifer beschrijving
0 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 0.0 4.5 0162 NaN
1 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 4.5 59.0 0620 sable gris quartzeux, avec grès gris quartzeux...
2 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 59.0 90.7 0900 argile grise finement sableuse
3 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 90.7 110.0 1013 NaN
4 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1932... goed 173252.0 179257.0 17.0 110.0 130.0 1014 sable argileux gris, avec petits débris broyés...

Location

One can also query on location, using the location objects and spatial filters from the pydov.util.location module. For example, to request all hydrostratigraphic interpretations in a given bounding box:

[13]:
from pydov.util.location import Within, Box
location = Within(Box(170000, 171000, 172000, 173000, epsg=31370))
df = hs.search(location=location)
df.head()
[000/001] .
[000/005] ccccc
[13]:
pkey_interpretatie pkey_boring betrouwbaarheid_interpretatie x y start_interpretatie_mtaw diepte_laag_van diepte_laag_tot aquifer
0 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/2016... goed 170853.0 172888.0 44.0 0.0 5.0 0153
1 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/2016... goed 170853.0 172888.0 44.0 5.0 42.0 0620
2 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/2016... goed 170853.0 172888.0 44.0 42.0 43.0 0922
3 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1946... goed 170355.0 171118.0 24.4 0.0 9.0 0163
4 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1946... goed 170355.0 171118.0 24.4 9.0 10.5 0920

Alternatively, you can define a Point or a GML document for the spatial query as is described in the docs. For example, if you are interested in a site you can define the point with a search radius of for example 500 meters like this:

[14]:
from pydov.util.location import WithinDistance, Point
location = WithinDistance(
            Point(171500, 172500, epsg=31370),
            500,
            distance_unit='meter'
            )
df = hs.search(location=location)
df.head()
[000/001] .
[000/001] c
[14]:
pkey_interpretatie pkey_boring betrouwbaarheid_interpretatie x y start_interpretatie_mtaw diepte_laag_van diepte_laag_tot aquifer
0 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1974... goed 171548.77 172680.92 26.39 0.0 0.6 0110
1 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1974... goed 171548.77 172680.92 26.39 0.6 14.4 0100
2 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1974... goed 171548.77 172680.92 26.39 14.4 95.1 0000
3 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1974... goed 171548.77 172680.92 26.39 95.1 118.9 1100
4 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1974... goed 171548.77 172680.92 26.39 118.9 124.5 1300

Groundwater head data

Querying the groundwater head data follows the same workflow as mentioned above for the interpretation of borehole data with the instantiation of a search object and the subsequent query with selection on attribute or location properties.

[15]:
from pydov.search.grondwaterfilter import GrondwaterFilterSearch
gws = GrondwaterFilterSearch()
gws
[15]:
pydov.search.grondwaterfilter.GrondwaterFilterSearch

In de Databank Ondergrond Vlaanderen zijn verschillende grondwatermeetnetten opgenomen. Deze meetnetten staan in functie van uitgebreide monitoringprogramma’s met de bedoeling een goed beeld te krijgen van de beschikbare grondwaterkwantiteit en grondwaterkwaliteit van de watervoerende lagen in Vlaanderen.

gw_id - Identificatie van de grondwaterlocatie. Dit veld was vroeger bekend als 'putnummer'.

  • type: string
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

pkey_grondwaterlocatie - URL die verwijst naar de gegevens van de grondwaterlocatie 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

filternummer - Het filternummer van de filter.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

pkey_filter - URL die verwijst naar de gegevens van de filter op de website. Voeg '.xml' toe om een XML voorstelling van deze gegevens te verkrijgen. Wanneer dit veld leeg is betreft dit record een put zonder filters.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

namen - Andere namen voor deze grondwaterlocatie

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

filtergrafiek - URL die verwijst naar een interactieve grafiek van de filter op de website. Wanneer dit veld leeg is betreft dit record een grondwaterlocatie zonder filters

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

putgrafiek - URL die verwijst naar een interactieve grafiek van alle filters van de grondwaterlocatie op de website.

  • type: string
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

Aquifer_HCOVv1 - None

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

Aquifer_HCOVv2 - None

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

diepte_onderkant_filter - De diepte van de onderkant van de filter (in meter, positief onder aanvangspeil put gegeven in attribuut Z_mTAW)

  • type: float
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

lengte_filter - De lengte van de filter (in meter).

  • type: float
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

putsoort - de soort grondwaterlocatie

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

    Installatie - Installatie

    batterijput - batterijput

    bodemlus - bodemlus

    bron, natuurlijke holte - bron, natuurlijke holte

    bronbemaling - bronbemaling

    draineringsinrichting - draineringsinrichting

    galerij - galerij

    graverij, mijn, groeve - graverij, mijn, groeve

    niet-verbuisde boorput - niet-verbuisde boorput

    onbekend - onbekend

    ring- of steenput - ring- of steenput

    verbuisde boorput - verbuisde boorput

    vijver - vijver

filtertype - Het type van de filter. Wanneer dit veld leeg is betreft dit record een put zonder filters.

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

    infiltratiefilter - infiltratiefilter

    natuurlijke filter - natuurlijke filter

    omkeerbare filter - omkeerbare filter

    peilfilter - peilfilter

    pompfilter - pompfilter

meetnet - Het meetnet waartoe de filter behoort.

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

    meetnet 1 - primair meetnet - afdeling Water - meetnet 1 - primair meetnet - afdeling Water

    meetnet 10 - rubriek 55 (verticale boringen) - meetnet 10 - rubriek 55 (verticale boringen)

    meetnet 11 - rubriek 53.6 (koude-warmtepompen) - meetnet 11 - rubriek 53.6 (koude-warmtepompen)

    meetnet 3 - tijdelijk meetnet - afdeling Water - meetnet 3 - tijdelijk meetnet - afdeling Water

    meetnet 4 - externe instanties - meetnet 4 - externe instanties

    meetnet 5 - peilputten drinkwatermaatschappijen - meetnet 5 - peilputten drinkwatermaatschappijen

    meetnet 6 - peilputten individuele bedrijven - meetnet 6 - peilputten individuele bedrijven

    meetnet 7 - winningsputten - meetnet 7 - winningsputten

    meetnet 8 - freatisch meetnet - afdeling water - meetnet 8 - freatisch meetnet - afdeling water

    meetnet 9 - peilputten INBO en natuurorganisaties - meetnet 9 - peilputten INBO en natuurorganisaties

    onbekend - onbekend

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

  • type: float
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

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

  • type: float
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

start_grondwaterlocatie_mtaw - De hoogte van het aanvangspeil van de put in het TAW stelsel (in meter).

  • type: float
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

gemeente - De gemeente waarin de put gelegen is

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

grondwaterlichaam - Het grondwaterlichaam waarin de filter hangt. Als tekst, opgebouwd uit de afkorting en de naam gescheiden door " - "

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

afgesloten_volgens_gwdecreet - None

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

datum_in_filter - De datum wanneer de filter in gebruik genomen is

  • type: date
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

datum_uit_filter - De datum wanneer de filter uit gebruik genomen is

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

stijghoogterapport - URL die verwijst naar het stijghoogterapport van de grondwaterlocatie in PDF formaat.

  • type: string
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

analyserapport - URL die verwijst naar het analyserapport van de grondwaterlocatie in PDF formaat.

  • type: string
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

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

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

boringfiche - 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: False
  • query: True
  • cost: 1
  • multivalue: False

peilmetingen_van - Datum waarop de eerste peilmeting werd uitgevoerd.

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

peilmetingen_tot - Datum waarop de laatste peilmeting werd uitgevoerd.

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

kwaliteitsmetingen_van - Datum waarop het eerste grondwaterstaal op deze filter werd genomen

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

kwaliteitsmetingen_tot - Datum waarop het laatste grondwaterstaal op deze filter werd genomen.

  • type: date
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

recentste_exploitant - De recentste exploitant van een grondwaterlocatie (installatieput)

  • type: string
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

beheerder - De huidige beheerder van een grondwaterlocatie (meetnetput)

  • type: string
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

aantal_dagen_sinds_laatste_meting - None

  • type: integer
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

eerste_invoer - Het tijdstip waarop deze filter voor het eerst in DOV ingevoerd werd. In het geval van een grondwaterlocatie zonder filter: het tijdstip waarop deze grondwaterlocatie voor het eerst in DOV ingevoerd werd.

  • type: datetime
  • notnull: True
  • query: True
  • cost: 1
  • multivalue: False

recentste_installatie - De unieke identificatie van de meest recente installatie waaraan deze grondwaterlocatie gekoppeld is.

  • type: string
  • notnull: False
  • query: True
  • cost: 1
  • multivalue: False

geom - None

  • type: geometry
  • notnull: False
  • query: False
  • cost: 1
  • multivalue: False

meetnet_code - Tot welk meetnet behoort deze filter.

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

    0 - 0 - onbekend

    1 - 1 - meetnet 1 - primair meetnet - afdeling Water

    10 - 10 - meetnet10 - rubriek 55 (verticale boringen)

    100 - 100 - meetnet 100 - Geotechniek

    11 - 11 - meetnet 11 - rubriek 53.6 (koude-warmtepompen)

    12 - 12 - meetnet 12 - lokale besturen

    2 - 2 - meetnet 2 - onzekere kwaliteit - afdeling Water

    3 - 3 - meetnet 3 - tijdelijk meetnet - afdeling Water

    4 - 4 - meetnet 4 - externe instanties

    5 - 5 - meetnet 5 - peilputten drinkwatermaatschappijen

    6 - 6 - meetnet 6 - peilputten individuele bedrijven

    7 - 7 - meetnet 7 - winningsputten

    8 - 8 - meetnet 8 - freatisch meetnet - afdeling water

    9 - 9 - meetnet 9 - peilputten INBO en natuurorganisaties

    edov - edov - meetnet 20 – eDOV erkende boorbedrijven

aquifer_code - De aquifer (watervoerende laag) waarin de filter hangt (code) (HCOVv2)

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

    A0000 - A0000 - Onbepaald

    A0100 - A0100 - Quartaire Aquifersystemen

    A0110 - A0110 - Ophogingen

    A0120 - A0120 - Duinen

    A0130 - A0130 - Polderafzettingen

    A0131 - A0131 - Kleiige polderafzettingen

    A0132 - A0132 - Zandige Kreekruggen

    A0133 - A0133 - Veen-kleiige poelgronden

    A0134 - A0134 - Strandafzettingen***

    A0140 - A0140 - Alluviale deklagen

    A0150 - A0150 - Eolische deklagen buiten de Roerdalslenk

    A0151 - A0151 - Zandige deklagen

    A0152 - A0152 - Zand-lemige deklagen

    A0153 - A0153 - Lemige deklagen

    A0160 - A0160 - Fluvio-eolische deklagen binnen de Roerdalslenk

    A0161 - A0161 - Boxtel zand 1

    A0162 - A0162 - Boxtel klei 1

    A0163 - A0163 - Boxtel zand 2

    A0164 - A0164 - Boxtel klei 2

    A0165 - A0165 - Boxtel zand 3

    A0170 - A0170 - Pleistocene afzettingen

    A0180 - A0180 - Maas- en Rijnafzettingen

    A0181 - A0181 - Beegden zand 1

    A0182 - A0182 - Beegden klei 1

    A0183 - A0183 - Beegden zand 2

    A0184 - A0184 - Beegden klei 2

    A0185 - A0185 - Beegden zand 3

    A0186 - A0186 - Beegden ongedifferentieerd

    A0187 - A0187 - Sterksel zand 1

    A0188 - A0188 - Sterksel klei 1

    A0189 - A0189 - Sterksel zand 2

    A0200 - A0200 - Kempens Aquifersysteem

    A0210 - A0210 - Klei-zand complex van de Kempen

    A0220 - A0220 - Pleistoceen en Plioceen Aquifersysteem - west

    A0221 - A0221 - Kleiig zand van Malle

    A0222 - A0222 - Zand van Merksplas

    A0223 - A0223 - Zanden van Zandvliet en Merksem

    A0224 - A0224 - Kleiig zand van Kruisschans

    A0225 - A0225 - Zanden van Oorderen en Luchtbal

    A0226 - A0226 - Ongedifferentieerde zanden van Lillo en Poederlee

    A0230 - A0230 - Pleistoceen en Plioceen Aquifersysteem - oost

    A0231 - A0231 - Zand van Mol

    A0232 - A0232 - Kiezeloöliet zand 1

    A0233 - A0233 - Kiezeloöliet klei 1

    A0234 - A0234 - Kiezeloöliet zand 2

    A0235 - A0235 - Kiezeloöliet klei 2

    A0236 - A0236 - Kiezeloöliet zand 3

    A0237 - A0237 - Kiezeloöliet klei 3

    A0238 - A0238 - Kiezeloöliet zand 4

    A0240 - A0240 - Kleiige zanden van Kattendijk en Kasterlee

    A0250 - A0250 - Mioceen Aquifersysteem

    A0251 - A0251 - Zand van Diest buiten de Roerdalslenk

    A0252 - A0252 - Zanden van Diest en Bolderberg binnen de Roerdalslenk

    A0253 - A0253 - Zand van Bolderberg buiten de Roerdalslenk

    A0254 - A0254 - Zanden van Berchem en Voort buiten de Roerdalslenk

    A0255 - A0255 - Voort zand 1

    A0256 - A0256 - Voort klei 1

    A0257 - A0257 - Voort zand 2

    A0258 - A0258 - Zandig deel van Eigenbilzen

    A0300 - A0300 - Boom Aquitard

    A0301 - A0301 - Kleiig deel van Eigenbilzen

    A0302 - A0302 - Klei-silt van Boeretang

    A0303 - A0303 - Klei van Putte

    A0304 - A0304 - Klei van Terhagen

    A0305 - A0305 - Silt van Belsele-Waas

    A0400 - A0400 - Oligoceen Aquifersysteem

    A0410 - A0410 - Zand van Kerniel

    A0420 - A0420 - Klei van Kleine-Spouwen

    A0430 - A0430 - Ruisbroek-Berg Aquifer

    A0431 - A0431 - Zand van Berg

    A0432 - A0432 - Zand van Ruisbroek

    A0433 - A0433 - Zand van Kerkom

    A0434 - A0434 - Kleiig zand van Alden Biesen

    A0440 - A0440 - Tongeren Aquitard

    A0441 - A0441 - Klei van Henis

    A0442 - A0442 - Zandige klei van Watervliet

    A0450 - A0450 - Onder-Oligoceen Aquifersysteem

    A0451 - A0451 - Zand van Neerrepen

    A0452 - A0452 - Kleiig zand van Grimmertingen

    A0453 - A0453 - Kleiig zand van Bassevelde

    A0500 - A0500 - Bartoon Aquitardsysteem

    A0501 - A0501 - Bartoon klei 1

    A0502 - A0502 - Bartoon zand 1

    A0503 - A0503 - Bartoon klei 2

    A0504 - A0504 - Bartoon zand 2

    A0505 - A0505 - Bartoon klei 3

    A0600 - A0600 - Ledo Paniseliaan Brusseliaan Aquifersysteem

    A0610 - A0610 - Wemmel-Lede Aquifer

    A0611 - A0611 - Zand van Wemmel

    A0612 - A0612 - Zand van Lede

    A0620 - A0620 - Zand van Brussel

    A0630 - A0630 - Afzettingen van het Paniseliaan

    A0631 - A0631 - Zand van Oedelem

    A0632 - A0632 - Zandige klei van Beernem

    A0633 - A0633 - Zanden van Aalterbrugge en Vlierzele

    A0700 - A0700 - Paniseliaan Aquitardsysteem

    A0701 - A0701 - Kleiig zand van Pittem

    A0702 - A0702 - Klei van Merelbeke

    A0800 - A0800 - Ieperiaan Aquifersysteem

    A0801 - A0801 - Zand van Egem

    A0802 - A0802 - Klei van Egemkapel

    A0803 - A0803 - Silt van Kortemark en zand van Mont-Panisel

    A0900 - A0900 - Ieperiaan Aquitardsysteem

    A0901 - A0901 - Klei van Aalbeke

    A0902 - A0902 - Zandige klei van Roubaix

    A0903 - A0903 - Kleiig zand van Mons-en-Pévèle

    A0904 - A0904 - Kleien van Orchies, Mont-Héribu en Het Zoute

    A1000 - A1000 - Paleoceen Aquifersysteem

    A1010 - A1010 - Landeniaan Aquifersysteem

    A1011 - A1011 - Zand van Knokke

    A1012 - A1012 - Zandige afzettingen van Loksbergen en Dormaal

    A1013 - A1013 - Zand van Grandglise

    A1020 - A1020 - Landeniaan en Heersiaan Aquitard

    A1021 - A1021 - Siltige afzettingen van Halen en Tufsteen van Lincent

    A1022 - A1022 - Kleien van Waterschei en Beselare

    A1030 - A1030 - Heersiaan en Opglabbeek Aquifersysteem

    A1031 - A1031 - Kleiige mergels van Maaseik

    A1032 - A1032 - Mergels van Gelinden

    A1033 - A1033 - Zand van Orp

    A1034 - A1034 - Zand van Eisden

    A1035 - A1035 - Klei van Opoeteren

    A1100 - A1100 - Krijt Aquifersysteem

    A1101 - A1101 - Kalkareniet van Houthem

    A1102 - A1102 - Kalkarenieten van Maastricht en Kunrade

    A1103 - A1103 - Krijtafzettingen van Gulpen en Nevele, zanden en mergels van Vaals en Dorne en de Turoonmergels

    A1104 - A1104 - Zand van Aken

    A1200 - A1200 - Jura - Trias - Perm

    A1210 - A1210 - Jura (incl. Sleen)

    A1220 - A1220 - Trias (excl. Sleen) en Perm

    A1300 - A1300 - Sokkel

    A1310 - A1310 - Boven-Carboon (steenkoolterrein en -lagen)

    A1320 - A1320 - Kolenkalk (incl. Wealdiaan)

    A1330 - A1330 - Devoon

    A1340 - A1340 - Cambro-Siluur Massief van Brabant

grondwaterlichaam_code -

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

    BLKS_0160_GWL_1M - BLKS_0160_GWL_1M - Quartaire Maas- en Rijnafzettingen, freatisch

    BLKS_0160_GWL_1S - BLKS_0160_GWL_1S - Pleistoceen Rivierafzettingen, lokaal gespannen

    BLKS_0400_GWL_1M - BLKS_0400_GWL_1M - Oligoceen Aquifersysteem, freatisch

    BLKS_0400_GWL_1S - BLKS_0400_GWL_1S - Oligoceen Aquifersysteem, lokaal freatisch

    BLKS_0400_GWL_2M - BLKS_0400_GWL_2M - Oligoceen Aquifersysteem, gespannen

    BLKS_0400_GWL_2S - BLKS_0400_GWL_2S - Oligoceen Aquifersysteem, gespannen

    BLKS_0600_GWL_1 - BLKS_0600_GWL_1 - Brusseliaan Aquifer, freatisch

    BLKS_0600_GWL_2 - BLKS_0600_GWL_2 - Brusseliaan Aquifer, gespannen

    BLKS_0600_GWL_3 - BLKS_0600_GWL_3 - Brusseliaan venster: contact met Diestiaan, lokaal gespannen

    BLKS_1000_GWL_1S - BLKS_1000_GWL_1S - Landeniaan Aquifersysteem, lokaal gespannen

    BLKS_1000_GWL_2S - BLKS_1000_GWL_2S - Landeniaan Aquifersysteem, gespannen

    BLKS_1100_GWL_1M - BLKS_1100_GWL_1M - Krijt Aquifersysteem, freatisch

    BLKS_1100_GWL_1S - BLKS_1100_GWL_1S - Krijt Aquifersysteem, freatisch

    BLKS_1100_GWL_2M - BLKS_1100_GWL_2M - Krijt Aquifersysteem, gespannen

    BLKS_1100_GWL_2S - BLKS_1100_GWL_2S - Krijt Aquifersysteem, gespannen

    CKS_0200_GWL_1 - CKS_0200_GWL_1 - Centrale zanden van de Kempen, freatisch

    CKS_0200_GWL_2 - CKS_0200_GWL_2 - Noordelijke Zanden van de Kempen, freatisch, plaatselijk semi-freatisch

    CKS_0220_GWL_1 - CKS_0220_GWL_1 - Complex van de Kempen, freatisch

    CKS_0250_GWL_1 - CKS_0250_GWL_1 - Diestiaangeul: contact Brusseliaan, freatisch

    CVS_0100_GWL_1 - CVS_0100_GWL_1 - Dun Quartair dek boven op Paleogeen klei, freatisch

    CVS_0160_GWL_1 - CVS_0160_GWL_1 - Pleistoceen afzettingen, freatisch

    CVS_0400_GWL_1 - CVS_0400_GWL_1 - Oligoceen Aquifersysteem, lokaal freatisch

    CVS_0600_GWL_1 - CVS_0600_GWL_1 - Ledo-Paniseliaan Aquifersysteem, freatisch

    CVS_0600_GWL_2 - CVS_0600_GWL_2 - Ledo-Paniseliaan Aquifersysteem, gespannen

    CVS_0800_GWL_1 - CVS_0800_GWL_1 - Ieperiaan Aquifer, freatisch

    CVS_0800_GWL_2 - CVS_0800_GWL_2 - Ieperiaan Aquifer, gespannen

    CVS_0800_GWL_3 - CVS_0800_GWL_3 - Ieperiaan Aquifer Heuvelstreken, lokaal gespannen

    KPS_0120_GWL_1 - KPS_0120_GWL_1 - Duin- en kreekgebieden in het kustgebied, freatisch

    KPS_0120_GWL_2 - KPS_0120_GWL_2 - Duin- en kreekgebieden in de Oost-Vlaamse Polders, freatisch

    KPS_0160_GWL_1 - KPS_0160_GWL_1 - verzilt Quartair en Eoceen van het kustgebied, freatisch

    KPS_0160_GWL_2 - KPS_0160_GWL_2 - verzilt Quartair en Oligoceen van Oost-Vlaamse Polders, freatisch

    KPS_0160_GWL_3 - KPS_0160_GWL_3 - verzilt Quartair, Plioceen en Mioceen van Scheldepolders, freatisch

    MS_0100_GWL_1 - MS_0100_GWL_1 - Quartair Aquifersysteem, freatisch

    MS_0200_GWL_1 - MS_0200_GWL_1 - Kempens Aquifersysteem, freatisch, plaatselijk semi-freatisch

    MS_0200_GWL_2 - MS_0200_GWL_2 - Kempens Aquifersysteem in de Centrale Slenk, freatisch, plaatselijk semi-freatisch

    SS_1000_GWL_1 - SS_1000_GWL_1 - Landeniaan Aquifersysteem, depressietrechter, gespannen

    SS_1000_GWL_2 - SS_1000_GWL_2 - Landeniaan Aquifersysteem, gespannen

    SS_1300_GWL_1 - SS_1300_GWL_1 - Kolenkalk, gespannen

    SS_1300_GWL_2 - SS_1300_GWL_2 - Sokkel + Krijt Aquifersysteem, lokaal freatisch, voedingsgebied

    SS_1300_GWL_3 - SS_1300_GWL_3 - Sokkel + Krijt Aquifersysteem, depressietrechter, gespannen

    SS_1300_GWL_4 - SS_1300_GWL_4 - Sokkel + Krijt Aquifersysteem, gespannen

    SS_1300_GWL_5 - SS_1300_GWL_5 - Sokkel + Krijt Aquifersysteem, depressietrechter, gespannen

    X_BLKS_0400_GWL_2 - X_BLKS_0400_GWL_2 - Ten noorden van de grens van het BLKS, in het Oligoceen Aquifersysteem, gespannen

    X_BLKS_0600_GWL_2 - X_BLKS_0600_GWL_2 - Ten N van de grens van het BLKS, in de Brusseliaan Aquifer, gespannen

    X_BLKS_1000_GWL_2 - X_BLKS_1000_GWL_2 - Ten N van de grens van het BLKS, in het Landeniaan Aquifersysteem, gespannen

    X_BLKS_1100_GWL_2 - X_BLKS_1100_GWL_2 - Ten N van de grens van het BLKS, in het Krijt Aquifersysteem, gespannen

    meerdere GWL - meerdere GWL - Bevat filters in meerder grondwaterlichamen

    onbekend - onbekend - onbekend

regime -

  • type: string
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False

datum - Datum waarop de peilmeting uitgevoerd werd.

  • type: date
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False

tijdstip - Tijdstip waarop de peilmeting uitgevoerd werd (optioneel).

  • type: string
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False

peil_mtaw - Diepte van de peilmeting, uitgedrukt in mTAW.

  • type: float
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False

betrouwbaarheid - Betrouwbaarheid van de peilmeting (goed, onbekend of twijfelachtig).

  • type: string
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False

methode - Methode waarop de peilmeting uitgevoerd werd.

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

    Dieptelood - Dieptelood

    Onbekend - Onbekend

    andere methode - andere methode

    automatische sonde - automatische sonde

    borrelbuis - borrelbuis

    gemiddelde van loggermetingen - gemiddelde van loggermetingen

    manometer - manometer

    peillint - peillint

    peilmeting onmogelijk - peilmeting onmogelijk

filterstatus - Status van de filter tijdens de peilmeting (in rust - werking).

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

    in rust - in rust

    onbekend - onbekend

    werking - werking

filtertoestand - Filtertoestand bij de peilmeting. Standaardwaarde is '1' = Normaal.

  • type: integer
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False
  • codelist:
  • pydov.util.codelists.XsdType

    -999 - -999 - Vertrouwelijk (SCK-meting)

    -998 - -998 - Past niet in de stijghoogtereeks

    -990 - -990 - Verdwenen

    -985 - -985 - Infiltratie

    -981 - -981 - Buiten bereik Diver (VMW-980)

    -980 - -980 - Afpomping

    -971 - -971 - "Meting onder filter (VMW-970)"

    -970 - -970 - Onder water

    -960 - -960 - Loopt over

    -950 - -950 - Vervallen

    -940 - -940 - Verstopt

    -930 - -930 - Beschadigd/defekt

    -920 - -920 - Bevroren

    -910 - -910 - droog

    -905 - -905 - "Geen meting (onbereikbaar)

    -903 - -903 - Afgesloten van het net (VMW)

    -902 - -902 - Vee in de weide (VMW)

    -901 - -901 - Werken aan de put (VMW)

    -900 - -900 - Geen waarneming

    1 - 1 - normaal

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

  • type: float
  • notnull: False
  • query: False
  • cost: 10
  • multivalue: False

For example query all data in a bounding box:

[16]:
location = Within(Box(170000, 171000, 173000, 174000, epsg=31370))
df = gws.search(location=location)
df.head()
[000/001] .
[000/055] ....c...cc.....c..c...c..........c...........c.cc.
[050/055] .....
[16]:
pkey_filter pkey_grondwaterlocatie gw_id filternummer filtertype x y start_grondwaterlocatie_mtaw mv_mtaw gemeente ... regime diepte_onderkant_filter lengte_filter datum tijdstip peil_mtaw betrouwbaarheid methode filterstatus filtertoestand
0 https://www.dov.vlaanderen.be/data/filter/2000... https://www.dov.vlaanderen.be/data/put/2018-00... DYLP162 1 peilfilter 170716.0 172051.0 24.48 24.48 Leuven ... onbekend 2.18 0.5 2000-09-01 NaN 23.48 onbekend peillint onbekend 1.0
1 https://www.dov.vlaanderen.be/data/filter/2000... https://www.dov.vlaanderen.be/data/put/2018-00... DYLP162 1 peilfilter 170716.0 172051.0 24.48 24.48 Leuven ... onbekend 2.18 0.5 2000-09-15 NaN 23.65 onbekend peillint onbekend 1.0
2 https://www.dov.vlaanderen.be/data/filter/2000... https://www.dov.vlaanderen.be/data/put/2018-00... DYLP162 1 peilfilter 170716.0 172051.0 24.48 24.48 Leuven ... onbekend 2.18 0.5 2000-09-27 NaN 23.67 onbekend peillint onbekend 1.0
3 https://www.dov.vlaanderen.be/data/filter/2000... https://www.dov.vlaanderen.be/data/put/2018-00... DYLP162 1 peilfilter 170716.0 172051.0 24.48 24.48 Leuven ... onbekend 2.18 0.5 2000-10-09 NaN 23.73 onbekend peillint onbekend 1.0
4 https://www.dov.vlaanderen.be/data/filter/2000... https://www.dov.vlaanderen.be/data/put/2018-00... DYLP162 1 peilfilter 170716.0 172051.0 24.48 24.48 Leuven ... onbekend 2.18 0.5 2000-10-18 NaN 23.77 onbekend peillint onbekend 1.0

5 rows × 23 columns

One important difference is the presence of time-related data. More specifically the attributes datum and tijdstip. These can be combined to create a date.datetime object that can be used in the subsequent manipuliation of the Pandas DataFrame. Make sure to remove the records without a valid datum and fill the empty tijdstip fields with a default timestamp (!)

[17]:
import pandas as pd
df.reset_index(inplace=True)
df = df.loc[~df.datum.isna()]
df['tijdstip'] = df.tijdstip.fillna('00:00:00')
df['tijd'] = pd.to_datetime(df.datum.astype(str) + ' ' + df.tijdstip.astype(str))
df.tijd.head()
[17]:
0   2000-09-01
1   2000-09-15
2   2000-09-27
3   2000-10-09
4   2000-10-18
Name: tijd, dtype: datetime64[ns]

More examples for the timeseries processing and analysis is available in the Notebooks of pydov.

Data cache

Notice the cc in the progress bar while loading of the data? It means the data was loaded from your local cache instead of being downloaded, as it was already part of an earlier data request. See the caching documentation for more in-depth information about the default directory, how to change and/or clean it, and even how to create some custom cache format.

Putting it all together

[18]:
# imports
import pandas as pd
import pydov
from pydov.util.location import WithinDistance, Point
from pydov.util.query import Join
from pydov.search.interpretaties import LithologischeBeschrijvingenSearch
from pydov.search.interpretaties import HydrogeologischeStratigrafieSearch
from pydov.search.grondwaterfilter import GrondwaterFilterSearch
from owslib.fes2 import PropertyIsEqualTo

# define search objects
hs = HydrogeologischeStratigrafieSearch()
ls = LithologischeBeschrijvingenSearch()
gws = GrondwaterFilterSearch()

# search hydrostratigraphic interpretations based on location
location = WithinDistance(
    Point(171500, 172500, epsg=31370),
    500,
    distance_unit='meter'
    )
dfhs = hs.search(location=location)

# join the lithostratigraphic desriptions
dfls = ls.search(query=Join(dfhs, 'pkey_boring'))
df_joined = pd.merge(dfhs, dfls.loc[:, ['pkey_boring','diepte_laag_van', 'diepte_laag_tot', 'beschrijving']],
                     how='left',
                     left_on=['pkey_boring','diepte_laag_van', 'diepte_laag_tot'],
                     right_on = ['pkey_boring','diepte_laag_van', 'diepte_laag_tot']
                    )

# search the groundwater head data in the neighbourhoud
dfgw = gws.search(location=location)

# create date.datetime objects for further processing
dfgw.reset_index(inplace=True)
dfgw = dfgw.loc[~dfgw.datum.isna()]
dfgw['tijdstip'] = dfgw.tijdstip.fillna('00:00:00')
dfgw['tijd'] = pd.to_datetime(dfgw.datum.astype(str) + ' ' + dfgw.tijdstip.astype(str))
[000/001] .
[000/001] c
[000/001] .
[000/002] cc
[000/001] .
[000/010] cccccccccc
[19]:
df_joined.head()
[19]:
pkey_interpretatie pkey_boring betrouwbaarheid_interpretatie x y start_interpretatie_mtaw diepte_laag_van diepte_laag_tot aquifer beschrijving
0 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1974... goed 171548.77 172680.92 26.39 0.0 0.6 0110 aangevulde grond
1 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1974... goed 171548.77 172680.92 26.39 0.6 14.4 0100 NaN
2 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1974... goed 171548.77 172680.92 26.39 14.4 95.1 0000 Brusseliaan - Ieperiaan en Landeniaan
3 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1974... goed 171548.77 172680.92 26.39 95.1 118.9 1100 Krijt
4 https://www.dov.vlaanderen.be/data/interpretat... https://www.dov.vlaanderen.be/data/boring/1974... goed 171548.77 172680.92 26.39 118.9 124.5 1300 Primair
[20]:
dfgw.head()
[20]:
index pkey_filter pkey_grondwaterlocatie gw_id filternummer filtertype x y start_grondwaterlocatie_mtaw mv_mtaw ... diepte_onderkant_filter lengte_filter datum tijdstip peil_mtaw betrouwbaarheid methode filterstatus filtertoestand tijd
0 0 https://www.dov.vlaanderen.be/data/filter/1974... https://www.dov.vlaanderen.be/data/put/2017-00... 2-0005 1 peilfilter 171548.77 172680.92 26.39 26.39 ... 118.95 31.5 1984-01-26 00:00:00 12.53 goed peillint in rust 1.0 1984-01-26
1 1 https://www.dov.vlaanderen.be/data/filter/1974... https://www.dov.vlaanderen.be/data/put/2017-00... 2-0005 1 peilfilter 171548.77 172680.92 26.39 26.39 ... 118.95 31.5 1984-09-30 00:00:00 12.53 goed peillint in rust 1.0 1984-09-30
2 2 https://www.dov.vlaanderen.be/data/filter/1974... https://www.dov.vlaanderen.be/data/put/2017-00... 2-0005 1 peilfilter 171548.77 172680.92 26.39 26.39 ... 118.95 31.5 1985-11-01 00:00:00 11.57 goed peillint in rust 1.0 1985-11-01
3 3 https://www.dov.vlaanderen.be/data/filter/1974... https://www.dov.vlaanderen.be/data/put/2017-00... 2-0005 1 peilfilter 171548.77 172680.92 26.39 26.39 ... 118.95 31.5 1986-04-04 00:00:00 11.28 goed peillint in rust 1.0 1986-04-04
4 4 https://www.dov.vlaanderen.be/data/filter/1974... https://www.dov.vlaanderen.be/data/put/2017-00... 2-0005 1 peilfilter 171548.77 172680.92 26.39 26.39 ... 118.95 31.5 1986-10-01 00:00:00 10.86 goed peillint in rust 1.0 1986-10-01

5 rows × 25 columns