Introductory tutorial
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]:
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:
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:
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:
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]:
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:
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:
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:
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:
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:
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:
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:
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:
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:
-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