Example of DOV search methods for groundwater permits (grondwatervergunningen)
Mind that the data source of groundwater permits is just a WFS. It can be accessed with simple WFS calls from OWSLib. It is included in the pydov API for ease of access for less experienced users. And to provide a general interface with unit testing to all considered objects.
Use cases explained below
Get permits in a bounding box
Get permits in a bounding box based on specific properties
Select permits in a municipality and return depth
Get permits, returning fields not available in the standard output dataframe
Get for a certain permit the measured water quality parameters if available
[1]:
%matplotlib inline
import inspect, sys
import warnings; warnings.simplefilter('ignore')
[2]:
# check pydov path
import pydov
Get information about the datatype ‘GrondwaterVergunning’
[3]:
from pydov.search.grondwatervergunning import GrondwaterVergunningSearch
gwv = GrondwaterVergunningSearch()
A description is provided for the ‘Gwvergunningen’ datatype (in Dutch):
[4]:
gwv.get_description()
[4]:
'Vergunningen verleend voor het winnen van grondwater kunnen gevisualiseerd en bevraagd worden in de Databank Ondergrond Vlaanderen. \r\nSinds 1999 zijn vergunningen verleend volgens de VLAREM-wetgeving. Ze zijn ingedeeld in klasse 1, 2 of 3, waarbij er voor klasse 1 en 2 een vergunningsplicht geldt en voor klasse 3 een meldingsplicht. De indelingslijst is terug te vinden in VLAREM I (het winnen van grondwater is opgenomen onder rubriek 53). Oudere aanvragen zijn verleend volgens het Grondwaterdecreet. Deze zijn ingedeeld in categorie A, B en C.'
The different fields that are available for objects of the ‘Gwvergunningen’ datatype can be requested with the get_fields() method:
[5]:
fields = gwv.get_fields()
# print available fields
for f in fields.values():
print(f['name'])
id_vergunning
pkey_installatie
exploitant
exploitant_naam
inrichtingsnummer
watnr
vergunning
vlaremrubriek
vergund_jaardebiet
vergund_dagdebiet
vergund_volume_per_projectdebiet
van_datum_termijn
tot_datum_termijn
aquifer_HCOVv1_vergunning
aquifer_vergunning
diepte
vergund_aantal_putten
inrichtingsklasse
vergunningverlenende_overheid_VVO
referentie_VVO
nacebelcode
IIOA_CBBnr
IIOA_adres
grondwaterlichaam
actie_waakgebied
x
y
exploitant_adres
cbbnr
kbonr
heffingsnummer
exploitant_namen
eerste_invoer
geom
Alternatively, you can list all the fields and their details by inspecting the get_fields() output or the search instance itself in a notebook:
[6]:
gwv
[6]:
Vergunningen verleend voor het winnen van grondwater kunnen gevisualiseerd en bevraagd worden in de Databank Ondergrond Vlaanderen. Sinds 1999 zijn vergunningen verleend volgens de VLAREM-wetgeving. Ze zijn ingedeeld in klasse 1, 2 of 3, waarbij er voor klasse 1 en 2 een vergunningsplicht geldt en voor klasse 3 een meldingsplicht. De indelingslijst is terug te vinden in VLAREM I (het winnen van grondwater is opgenomen onder rubriek 53). Oudere aanvragen zijn verleend volgens het Grondwaterdecreet. Deze zijn ingedeeld in categorie A, B en C.
id_vergunning - Uniek volgnummer ter identificatie
- type: string
- notnull: True
- query: True
- cost: 1
- multivalue: False
pkey_installatie - ID van de installatie (permkey). Een installatie is een verzameling van grondwaterlocaties van een IIOA (ingedeelde inrichting of activiteit) die 1 of meerdere filters hebben die betrekking hebben op dezelfde aquifer (watervoerende laag). Hyperlink naar de installatiefiche.
- type: string
- notnull: True
- query: True
- cost: 1
- multivalue: False
exploitant - De ID van de exploitant (de natuurlijke of rechtspersoon) van een grondwaterwinning. Deze exploiteert de IIOA voor een bepaalde periode. Hyperlink naar de exploitantfiche.
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
exploitant_naam - De naam van de exploitant (de natuurlijke of rechtspersoon) van een grondwaterwinning. Deze exploiteert de IIOA voor een bepaalde periode.
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
inrichtingsnummer - Een inrichtingsnummer is de (unieke) identificatie die gegenereerd wordt in het omgevingsloket.
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
watnr - Dossiernummer dat door VMM-afdeling bevoegd voor Grondwater gebruikt wordt voor hun interne werking. Hyperlink naar de vergunningfiche.
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
vergunning - ID van de vergunning (permkey)
- type: string
- notnull: True
- query: True
- cost: 1
- multivalue: False
vlaremrubriek - Code die gebruikt wordt in VLAREM (bijlage 1 VLAREM II) om een rubriek aan te duiden
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
vergund_jaardebiet - Vergunde hoeveelheid grondwater dat volgens de vergunning voor een grondwaterwinning mag opgepompt worden per jaar (in m³).
- type: float
- notnull: False
- query: True
- cost: 1
- multivalue: False
vergund_dagdebiet - Vergunde hoeveelheid grondwater dat volgens de vergunning voor een grondwaterwinning mag opgepompt worden per dag(in m³).
- type: float
- notnull: False
- query: True
- cost: 1
- multivalue: False
vergund_volume_per_projectdebiet - None
- type: integer
- notnull: False
- query: True
- cost: 1
- multivalue: False
van_datum_termijn - Startdatum van de deeltermijn van een vergunning.
- type: date
- notnull: False
- query: True
- cost: 1
- multivalue: False
tot_datum_termijn - Einddatum van de deeltermijn van een vergunning.
- type: date
- notnull: False
- query: True
- cost: 1
- multivalue: False
aquifer_HCOVv1_vergunning - None
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
aquifer_vergunning - None
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
diepte - Maximale vergunde diepte (in meter)
- type: float
- notnull: False
- query: True
- cost: 1
- multivalue: False
vergund_aantal_putten - Maximaal aantal pompputten dat in de vergunde watervoerende laag op een bepaalde locatie mag aangelegd worden (uit de vergunningfiche).
- type: integer
- notnull: False
- query: True
- cost: 1
- multivalue: False
inrichtingsklasse - Klasse van de omgevingsvergunning/milieuvergunning bepaald in VLAREM.
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
vergunningverlenende_overheid_VVO - Vergunning Verlenende Overheid: de overheid of instantie die het vergunningsbesluit of de beroepsbeslissing heeft genomen.
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
referentie_VVO - Nummer zoals het door de vergunning verlenende overheid gebruikt wordt voor communicatie. Sinds de inwerkingtreding van het omgevingsloket wordt hier het OMG-projectnummer ingevuld. Het nummer bestaat steeds uit 10 cijfers. De eerste 4 zijn het jaartal, nadien komt er een volgnummer.
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
nacebelcode - Activiteiten uitgevoerd door de meest recente exploitant op de IIOA
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
IIOA_CBBnr - Nummer uit het Centraal Bedrijven Bestand voor de IIOA (Ingedeelde Inrichting of Activiteit)
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
IIOA_adres - Adres van de IIOA (ligging van de grondwaterwinning)
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
grondwaterlichaam - Grondwaterlichaam van de installatie, zoals afgebakend in uitvoering van de Europese Kaderrichtlijn Water
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
actie_waakgebied - de actie- en waakgebieden afgebakend i.k.v. het gebiedspecifieke beleid zoals vastgesteld in de herstelprogrammas voor grondwaterlichamen in ontoereikende kwantitatieve toestand binnen het Centraal Vlaams Systeem, het Brulandkrijtsysteem en het Sokkelsysteem (2016-2021)
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
x - De x-coördinaat van de installatie 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 installatie in het Lambert72 coördinaatsysteem (in meter, EPSG:31370).
- type: float
- notnull: False
- query: True
- cost: 1
- multivalue: False
exploitant_adres - Adres van de exploitant (maatschappelijke zetel).
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
cbbnr - Nummer uit het Centraal Bedrijven Bestand van de exploitant.
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
kbonr - Elke exploitant krijgt in de Kruispunt Bank voor Ondernemingen een uniek identificatienummer.
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
heffingsnummer - Nummer dat gebruikt wordt bij de VMM-afdeling bevoegd voor heffingen voor hun interne werking.
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
exploitant_namen - Eventueel alternatieve namen voor de exploitant (afkorting, commerciële naam, oude namen, ...)
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
eerste_invoer - Het tijdstip waarop deze grondwatervergunning 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
Example use cases
Get permits in a bounding box
Get data for all the permits that are geographically located within the bounds of the specified box.
The coordinates are in the Belgian Lambert72 (EPSG:31370) coordinate system and are given in the order of lower left x, lower left y, upper right x, upper right y.
[7]:
from pydov.util.location import Within, Box
df = gwv.search(location=Within(Box(153145, 206930, 163150, 216935, epsg=31370)))
df.head()
[000/001] .
[7]:
| id_vergunning | pkey_installatie | x | y | diepte | exploitant_naam | watnr | vlaremrubriek | vergund_jaardebiet | vergund_dagdebiet | van_datum_termijn | tot_datum_termijn | aquifer_vergunning | inrichtingsklasse | nacebelcode | actie_waakgebied | cbbnr | kbonr | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 70509 | https://www.dov.vlaanderen.be/data/installatie... | 157118.69 | 210256.80 | 7.5 | BOUWONDERNEMING VOORUITZICHT | ANT-02373-A | 53.2.2.b)2<25 | 116363.0 | NaN | 2021-04-30 | 2026-04-29 | A0200: Kempens Aquifersysteem | Klasse 2 | 41201: Algemene bouw van residentiële gebouwen | geen actie/waakgebieden | NaN | 0404678357 |
| 1 | 61750 | https://www.dov.vlaanderen.be/data/installatie... | 157158.00 | 210393.00 | 9.0 | BOUWONDERNEMING VOORUITZICHT | ANT-00091-A | 53.2.2.b)2<25 | 205020.0 | NaN | 2018-05-25 | 2018-11-25 | A0200: Kempens Aquifersysteem | Klasse 2 | 41201: Algemene bouw van residentiële gebouwen... | NaN | NaN | 0404678357 |
| 2 | 64227 | https://www.dov.vlaanderen.be/data/installatie... | 157158.00 | 210393.00 | 9.0 | BOUWONDERNEMING VOORUITZICHT | ANT-00589-A | 53.2.2.b)2<25 | 205020.0 | NaN | 2019-06-07 | 2020-06-07 | A0200: Kempens Aquifersysteem | Klasse 2 | 41201: Algemene bouw van residentiële gebouwen... | NaN | NaN | 0404678357 |
| 3 | 67692 | https://www.dov.vlaanderen.be/data/installatie... | 154171.79 | 214241.69 | NaN | AQUAFIN | ANT-01287-A | 53.2.2.b)2<25 | 200000.0 | NaN | 2021-03-08 | 2023-09-08 | A0100: Quartaire Aquifersystemen | Klasse 2 | 37: Afvalwaterafvoer | geen actie/waakgebieden | 00418870000022 | 0440691388 |
| 4 | 66155 | https://www.dov.vlaanderen.be/data/installatie... | 154146.74 | 213791.84 | 8.0 | SAMBER COLLEGE | ANT-00514-A | 53.2.2.b)2<25 | 31000.0 | NaN | 2019-05-03 | 2020-05-03 | A0100: Quartaire Aquifersystemen | Klasse 2 | 41101: Ontwikkeling van residentiële bouwproje... | geen actie/waakgebieden | NaN | 0670629393 |
[8]:
len(df)
[8]:
697
697 permits were obtained in this bbox. However, not all permits are stil active, indicated by tot_datum_termijn. For more information about the extracted volumes, referenced by vlaremrubriek, see Vlarem II. See this link for more information about the potential definitions.
[10]:
fields['vlaremrubriek']
[10]:
vlaremrubriek - Code die gebruikt wordt in VLAREM (bijlage 1 VLAREM II) om een rubriek aan te duiden
- type: string
- notnull: False
- query: True
- cost: 1
- multivalue: False
Get permits in a bounding box with specific properties
Next to querying permits based on their geographic location within a bounding box, we can also search for permits matching a specific set of properties. For this we can build a query using a combination of the ‘Gwvergunningen’ fields and operators provided by the WFS protocol.
A list of possible operators can be found below:
[11]:
[i for i,j in inspect.getmembers(sys.modules['owslib.fes2'], inspect.isclass) if 'Property' in i]
[11]:
['PropertyIsBetween',
'PropertyIsEqualTo',
'PropertyIsGreaterThan',
'PropertyIsGreaterThanOrEqualTo',
'PropertyIsLessThan',
'PropertyIsLessThanOrEqualTo',
'PropertyIsLike',
'PropertyIsNotEqualTo',
'PropertyIsNull',
'SortProperty']
In this example we build a query using the PropertyIsGreaterThan operator in addition to the earlier bbox, to restrict the query to active permits:
[12]:
from owslib.fes2 import PropertyIsGreaterThan
query = PropertyIsGreaterThan(propertyname='tot_datum_termijn',
literal='2020-09-01')
df = gwv.search(query=query,
location=Within(Box(153145, 206930, 163150, 216935, epsg=31370)))
df.head()
[000/001] .
[12]:
| id_vergunning | pkey_installatie | x | y | diepte | exploitant_naam | watnr | vlaremrubriek | vergund_jaardebiet | vergund_dagdebiet | van_datum_termijn | tot_datum_termijn | aquifer_vergunning | inrichtingsklasse | nacebelcode | actie_waakgebied | cbbnr | kbonr | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 70509 | https://www.dov.vlaanderen.be/data/installatie... | 157118.69 | 210256.80 | 7.5 | BOUWONDERNEMING VOORUITZICHT | ANT-02373-A | 53.2.2.b)2<25 | 116363.0 | NaN | 2021-04-30 | 2026-04-29 | A0200: Kempens Aquifersysteem | Klasse 2 | 41201: Algemene bouw van residentiële gebouwen | geen actie/waakgebieden | NaN | 0404678357 |
| 1 | 67692 | https://www.dov.vlaanderen.be/data/installatie... | 154171.79 | 214241.69 | NaN | AQUAFIN | ANT-01287-A | 53.2.2.b)2<25 | 200000.0 | NaN | 2021-03-08 | 2023-09-08 | A0100: Quartaire Aquifersystemen | Klasse 2 | 37: Afvalwaterafvoer | geen actie/waakgebieden | 00418870000022 | 0440691388 |
| 2 | 56901 | https://www.dov.vlaanderen.be/data/installatie... | 160621.00 | 215168.00 | 65.0 | VAN DE VELDE KATHY | ANT/gw2-6688 | 53.6.1<25 | 10800.0 | 30.0 | 2013-12-03 | 2033-12-03 | A0254: Zanden van Berchem en Voort buiten de R... | Klasse 2 | 0000: onbekend | geen actie/waakgebieden | NaN | NaN |
| 3 | 56904 | https://www.dov.vlaanderen.be/data/installatie... | 157300.00 | 214115.00 | 45.0 | VENNESHOP BVBA | ANT-gw2/6919 | 53.8.2<17 | 5000.0 | 20.0 | 2014-10-24 | 2034-10-24 | A0254: Zanden van Berchem en Voort buiten de R... | Klasse 2 | 9601: Wassen en (chemisch) reinigen van textie... | geen actie/waakgebieden | NaN | NaN |
| 4 | 56979 | https://www.dov.vlaanderen.be/data/installatie... | 160161.00 | 215342.00 | 50.0 | JAGERS RIEN | ANT/gw2-6306 | 53.6.1<25 | 5037.0 | 13.8 | 2012-11-22 | 2032-06-26 | A0254: Zanden van Berchem en Voort buiten de R... | Klasse 2 | 0000: onbekend | geen actie/waakgebieden | NaN | NaN |
[13]:
len(df)
[13]:
325
Contrary to the earlier query, this result contains considerably less active permits in the considered bbox.
Mind that among these permits, there could also be permits for dewatering works, or ATES systems. Both of these are mostly not important in the development of a hydrogeological model. For dewatering works, it is currently not possible to see the operational status. These works could have well been finished some time ago, or not. See this link for more information about vlaremrubriek codes.
Select permits in a municipality and return depth
We can limit the columns in the output dataframe by specifying the return_fields parameter in our search.
In this example we query all the permits in the city of Ghent and return their depth. For this a remote WFS GML query is used as described in this notebook:
[14]:
from owslib.etree import etree
from owslib.wfs import WebFeatureService
from owslib.fes import PropertyIsEqualTo
from pydov.util.location import GmlFilter
gemeentegrenzen = WebFeatureService(
'https://geo.api.vlaanderen.be/VRBG/wfs',
version='1.1.0')
naam_filter = PropertyIsEqualTo(propertyname='NAAM', literal='Gent')
gemeente_poly = gemeentegrenzen.getfeature(
typename='VRBG:Refgem',
filter=etree.tostring(naam_filter.toXML()).decode("utf8"),
outputFormat='text/xml; subtype=gml/3.2').read()
df = gwv.search(
location=GmlFilter(gemeente_poly, Within),
return_fields=('id_vergunning', 'diepte'))
df.hist(column='diepte')
[000/001] .
[14]:
array([[<Axes: title={'center': 'diepte'}>]], dtype=object)
[15]:
df.describe()
[15]:
| diepte | |
|---|---|
| count | 1879.000000 |
| mean | 17.469729 |
| std | 28.925402 |
| min | -1.000000 |
| 25% | 5.000000 |
| 50% | 7.000000 |
| 75% | 17.000000 |
| max | 385.000000 |
Get permit data, returning fields not available in the standard output dataframe
Not all fields are available in the default output frame. However, you can examine the available fields with the get_fields() method and pass the desired field name to the return_fields parameter.
[16]:
from owslib.fes2 import PropertyIsGreaterThanOrEqualTo
query = PropertyIsGreaterThanOrEqualTo(
propertyname='diepte',
literal='200')
df = gwv.search(
location=GmlFilter(gemeente_poly, Within),
return_fields=('id_vergunning', 'diepte', 'vergunningverlenende_overheid_VVO'))
df.head()
[000/001] .
[16]:
| id_vergunning | diepte | vergunningverlenende_overheid_VVO | |
|---|---|---|---|
| 0 | 69758 | 2.2 | Gemeentebestuur GENT |
| 1 | 64011 | NaN | Gemeentebestuur GENT |
| 2 | 63640 | 3.0 | Vlaams Gewest |
| 3 | 63638 | NaN | Vlaams Gewest |
| 4 | 63938 | 7.0 | Gemeentebestuur GENT |
Estimate groundwater quality data for a certain permit
[17]:
from pydov.util.location import Within, Box
from owslib.fes2 import PropertyIsEqualTo
import pandas as pd
query = PropertyIsEqualTo(propertyname='inrichtingsnummer',
literal='20181004-0018')
df_permit = gwv.search(query=query)
df_permit.head()
[000/001] .
[17]:
| id_vergunning | pkey_installatie | x | y | diepte | exploitant_naam | watnr | vlaremrubriek | vergund_jaardebiet | vergund_dagdebiet | van_datum_termijn | tot_datum_termijn | aquifer_vergunning | inrichtingsklasse | nacebelcode | actie_waakgebied | cbbnr | kbonr | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 64279 | https://www.dov.vlaanderen.be/data/installatie... | 174097.89 | 174672.54 | 11.0 | Rialto Holding | VLB-00133-A | 53.2.2.a)<25 | 22450.0 | 445.0 | 2019-05-29 | 2023-03-16 | A0620: Zand van Brussel | Klasse 3 | 64200: Holdings | NaN | NaN | 0675544028 |
[18]:
from pydov.search.grondwaterfilter import GrondwaterFilterSearch
from pydov.search.monster import MonsterSearch
from pydov.util.query import Join
gfs = GrondwaterFilterSearch()
fields = gfs.get_fields()
# print available fields
for f in fields.values():
print(f['name'])
gw_id
pkey_grondwaterlocatie
filternummer
pkey_filter
namen
filtergrafiek
putgrafiek
Aquifer_HCOVv1
Aquifer_HCOVv2
diepte_onderkant_filter
lengte_filter
putsoort
filtertype
meetnet
x
y
start_grondwaterlocatie_mtaw
gemeente
grondwaterlichaam
afgesloten_volgens_gwdecreet
datum_in_filter
datum_uit_filter
stijghoogterapport
analyserapport
boornummer
boringfiche
peilmetingen_van
peilmetingen_tot
kwaliteitsmetingen_van
kwaliteitsmetingen_tot
recentste_exploitant
beheerder
aantal_dagen_sinds_laatste_meting
eerste_invoer
recentste_installatie
geom
meetnet_code
aquifer_code
grondwaterlichaam_code
regime
datum
tijdstip
peil_mtaw
betrouwbaarheid
methode
filterstatus
filtertoestand
mv_mtaw
[19]:
from pydov.search.grondwaterfilter import GrondwaterFilterSearch
from pydov.search.monster import MonsterSearch
from pydov.search.observatie import ObservatieSearch
from pydov.util.query import FuzzyJoin, PropertyInList
from owslib.fes2 import And
filter = GrondwaterFilterSearch()
monster = MonsterSearch()
observatie = ObservatieSearch()
# Find the groundwater screens
df_filters = filter.search(location=Within(Box(170000, 174000, 190000, 180000, epsg=31370)),
return_fields=['pkey_filter', 'x', 'y', 'Aquifer_HCOVv2', 'diepte_onderkant_filter'])
df_filters = df_filters[(df_filters['Aquifer_HCOVv2'].str.contains('0620'))]
df_filters.head()
[000/001] .
[19]:
| pkey_filter | x | y | Aquifer_HCOVv2 | diepte_onderkant_filter | |
|---|---|---|---|---|---|
| 0 | https://www.dov.vlaanderen.be/data/filter/1967... | 170932.00 | 177130.00 | 0620 - Zand van Brussel | 42.0 |
| 3 | https://www.dov.vlaanderen.be/data/filter/2014... | 171603.90 | 174596.62 | 0620 - Zand van Brussel | 66.0 |
| 13 | https://www.dov.vlaanderen.be/data/filter/2006... | 171800.00 | 179870.00 | 0620 - Zand van Brussel | NaN |
| 19 | https://www.dov.vlaanderen.be/data/filter/2024... | 176420.07 | 176010.01 | 0620 - Zand van Brussel | 37.1 |
| 20 | https://www.dov.vlaanderen.be/data/filter/1900... | 173804.20 | 175098.74 | 0620 - Zand van Brussel | 24.0 |
Now select the according water quality data:
[20]:
# Find the samples linked to the groundwater screens
df_monsters = monster.search(
query=FuzzyJoin(df_filters, on='pkey_parents', using='pkey_filter'),
return_fields=['pkey_monster'])
# Find the iron observations linked to the samples
df_observaties = observatie.search(
query=And([
Join(df_monsters, on='pkey_parent', using='pkey_monster'),
PropertyInList('parameter', [
'Ijzer (Fe)',
'Ijzer II (Fe2+)',
'Ijzer III (Fe3+)',
'Ijzer - Totaal (Fe(Tot.))'
])
])
)
# Make sure results are numeric
df_observaties['resultaat'] = pd.to_numeric(df_observaties.resultaat)
# Group stats per parameter
df_stat = df_observaties.loc[:, ['parameter', 'resultaat']].groupby('parameter').describe().unstack(1)
df_stat
[000/001] .
[000/001] .
[20]:
parameter
resultaat count Ijzer (Fe) 223.000000
Ijzer II (Fe2+) 75.000000
mean Ijzer (Fe) 1.412457
Ijzer II (Fe2+) 0.701560
std Ijzer (Fe) 1.929072
Ijzer II (Fe2+) 1.268594
min Ijzer (Fe) 0.000000
Ijzer II (Fe2+) 0.000000
25% Ijzer (Fe) 0.020000
Ijzer II (Fe2+) 0.020000
50% Ijzer (Fe) 0.164000
Ijzer II (Fe2+) 0.070000
75% Ijzer (Fe) 3.245000
Ijzer II (Fe2+) 0.649000
max Ijzer (Fe) 12.300000
Ijzer II (Fe2+) 4.400000
dtype: float64
Mind the units of the values.
[21]:
df_observaties.eenheid.unique()
[21]:
array(['mg/l'], dtype=object)
As such, the iron content of the considered hydrogeological layer is on average 1.4 mg/L with a stdev of 1.93 mg/L. This is most likely above the standards for use as irrigation water (see this link). Mind that further processing with a limited selection of the two nearest monitoring screens is possible. And even further, an indication of the nearest OVAM sites can be obtained from the WFS with (in Dutch) ‘Dossierinfo’ as available from this link.