Repository: DOV-Vlaanderen/pydov

Issue:
Box and Point locations do not serialize into stable XML
<!-- You can ask questions about the DOV webservices or about the `pydov` package. If you have a question about the `pydov` Python package, please use following template. -->

* PyDOV version: master
* Python version: 3.10.6
* Operating System: ubuntu

### Description

The pydov.util.location.Box and pydov.util.location.Point classes use a random gml:id since pydov 3.0.0 and GML 3.2. This has as a consequence that they do not serialize into stable XML anymore, causing issues in the RepeatableLog(Recorder|Replayer).

### What I Did

```python
from pydov.util.location import Point
from owslib.etree import etree

p1 = Point(10, 10)
p1_xml = etree.tostring(p1.get_element())
print(p1_xml)

p2 = Point(10, 10)
p2_xml = etree.tostring(p2.get_element())
print(p2_xml)

print('XML is equal:', p1_xml == p2_xml)
```
```
b'<gml32:Point xmlns:gml32="http://www.opengis.net/gml/3.2" srsDimension="2" srsName="http://www.opengis.net/gml/srs/epsg.xml#31370" gml32:id="pydov.1D2pYSHo"><gml32:pos>10.000000 10.000000</gml32:pos></gml32:Point>'
b'<gml32:Point xmlns:gml32="http://www.opengis.net/gml/3.2" srsDimension="2" srsName="http://www.opengis.net/gml/srs/epsg.xml#31370" gml32:id="pydov.tlRGFRLY"><gml32:pos>10.000000 10.000000</gml32:pos></gml32:Point>'
XML is equal: False
```

Discussion:

Patch:
diff --git a/contrib/PFAS_concentrations/PFAS_concentrations.py b/contrib/PFAS_concentrations/PFAS_concentrations.py
deleted file mode 100644
index b304bbe..0000000
--- a/contrib/PFAS_concentrations/PFAS_concentrations.py
+++ /dev/null
@@ -1,790 +0,0 @@
-import os
-import pandas as pd
-from pydov.search.generic import WfsSearch
-from pydov.search.grondwatermonster import GrondwaterMonsterSearch
-from pydov.search.grondwaterfilter import GrondwaterFilterSearch
-from pydov.util.location import Within, Box
-from pydov.util.query import Join
-from loguru import logger
-from owslib.fes2 import PropertyIsEqualTo, And, Or
-from tqdm.auto import tqdm
-from datetime import datetime
-from importlib.metadata import version
-import json
-
-
-class RequestPFASdata:
-
-    def __init__(self):
-        """Initialize the class.
-
-        Create a metadata file that contains the date and necessary package versions.
-        """
-
-        def json_serial(obj):
-            """JSON serializer for objects not serializable by default json code
-
-            Parameters
-            ----------
-            obj : datetime
-                The date and time.
-
-            Returns
-            -------
-            The date as a string.
-            """
-
-            if isinstance(obj, datetime):
-                return obj.isoformat()
-            raise TypeError("Type %s not serializable" % type(obj))
-
-        date = datetime.now()
-        date = json_serial(date)
-
-        package_versions = (f'pandas: {version("pandas")}', f'pydov: {version("pydov")}')
-
-        self.dictionary = {"date": date, "versions": package_versions, "nb_datapoints": [{}]}
-
-    def wfs_request(self, layer, location, max_features, query=None, sort_by=None):
-        """Download the available PFAS-data through a wfs request.
-
-        Parameters
-        ----------
-        layer : str
-            The name of the layer containing the PFAS-data.
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        query:
-            Find data based on one or more of its attribute values.
-            (https://pydov.readthedocs.io/en/stable/query_attribute.html)
-        sort_by:
-            Sort on one or multiple attributes.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded PFAS-data.
-        """
-
-        wfsSearch = WfsSearch(layer)
-        return wfsSearch.search(
-            location=location,
-            query=query,
-            sort_by=sort_by,
-            max_features=max_features)
-
-    def pydov_request(self, location, max_features, query=None, sort_by=None):
-        """Function to download the groundwater monster and according filter data for a specific bounding box.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        query:
-            Find data based on one or more of its attribute values.
-            (https://pydov.readthedocs.io/en/stable/query_attribute.html)
-        sort_by:
-            Sort on one or multiple attributes.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded groundwater monster and filter data for a given bounding box.
-        """
-
-        gwmonster = GrondwaterMonsterSearch()
-        if query is not None:
-            query = And([PropertyIsEqualTo(propertyname='chemisch_PFAS', literal='true'), query])
-        else:
-            query = PropertyIsEqualTo(propertyname='chemisch_PFAS', literal='true')
-        df = gwmonster.search(location=location, query=query, sort_by=sort_by, max_features=max_features)
-        df = df[df.parametergroep == "Grondwater_chemisch_PFAS"]
-        df = pd.DataFrame(df)
-        data = df
-
-        try:
-            gwfilter = GrondwaterFilterSearch()
-            filter_elements = gwfilter.search(query=Join(data, "pkey_filter"), return_fields=[
-                "pkey_filter",
-                "aquifer_code",
-                "diepte_onderkant_filter",
-                "lengte_filter"])
-
-            data["datum_monstername"] = pd.to_datetime(
-                data["datum_monstername"])
-            data = pd.merge(data, filter_elements)
-        except ValueError as e:
-            logger.info(f"Empty dataframe: {e}")
-        return data
-
-    def biota(self, location, max_features, query=None, sort_by=None):
-        """
-        Download the biota data.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        query:
-            Find data based on one or more of its attribute values.
-            (https://pydov.readthedocs.io/en/stable/query_attribute.html)
-        sort_by:
-            Sort on one or multiple attributes.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded biota data.
-        """
-        logger.info(f"Downloading biota data")
-        data_wfs_VMM_biota = self.wfs_request(
-            'pfas:pfas_biota',
-            location, max_features, query, sort_by)
-
-        data_wfs_VMM_biota = data_wfs_VMM_biota.drop_duplicates(
-            subset=data_wfs_VMM_biota.columns)
-
-        data_wfs_VMM_biota_len = len(data_wfs_VMM_biota)
-
-        nb_datapoints = {"Biota_VMM" : data_wfs_VMM_biota_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-
-        return data_wfs_VMM_biota
-
-    def effluent(self, location, max_features, query=None, sort_by=None):
-        """
-        Download the effluent data.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        query:
-            Find data based on one or more of its attribute values.
-            (https://pydov.readthedocs.io/en/stable/query_attribute.html)
-        sort_by:
-            Sort on one or multiple attributes.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded effluent data.
-        """
-        logger.info(f"Downloading effluent data")
-
-        if query is not None:
-            query = And([query, PropertyIsEqualTo(propertyname='medium', literal='Effluent')])
-        else:
-            query = PropertyIsEqualTo(propertyname='medium', literal='Effluent')
-
-        data_wfs_OVAM = self.wfs_request(
-            layer='pfas:pfas_analyseresultaten',
-            location=location,
-            max_features=max_features,
-            query=query,
-            sort_by=sort_by)
-
-        data_wfs_OVAM = data_wfs_OVAM.drop_duplicates(
-            subset=data_wfs_OVAM.columns)
-
-        data_wfs_OVAM_len = len(data_wfs_OVAM)
-
-        nb_datapoints = {"Effluent_OVAM" : data_wfs_OVAM_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-
-        return data_wfs_OVAM
-
-    def groundwater(self, location, max_features):
-        """
-        Download the groundwater data.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded groundwater data.
-        """
-        logger.info(f"Downloading groundwater data")
-
-        data_pydov_VMM_gw = self.pydov_request(
-            location=location,
-            max_features=max_features)
-        data_wfs_OVAM = self.wfs_request(
-            layer='pfas:pfas_analyseresultaten',
-            location=location,
-            max_features=max_features,
-            query=PropertyIsEqualTo(propertyname='medium', literal='Grondwater'))
-        data_wfs_Lantis_gw = self.wfs_request(
-            layer='pfas:lantis_gw_metingen_publiek',
-            location=location,
-            max_features=max_features)
-
-        data_pydov_VMM_gw = data_pydov_VMM_gw.drop_duplicates(
-            subset=data_pydov_VMM_gw.columns)
-        data_wfs_OVAM = data_wfs_OVAM.drop_duplicates(
-            subset=data_wfs_OVAM.columns)
-        data_wfs_Lantis_gw = data_wfs_Lantis_gw.drop_duplicates(
-            subset=data_wfs_Lantis_gw.columns)
-
-        data_pydov_VMM_gw_len = len(data_pydov_VMM_gw)
-        data_wfs_OVAM_len = len(data_wfs_OVAM)
-        data_wfs_Lantis_gw_len = len(data_wfs_Lantis_gw)
-
-        nb_datapoints = {"Groundwater_VMM" : data_pydov_VMM_gw_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-        nb_datapoints = {"Groundwater_OVAM" : data_wfs_OVAM_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-        nb_datapoints = {"Groundwater_Lantis" : data_wfs_Lantis_gw_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-
-        return data_pydov_VMM_gw, data_wfs_OVAM, data_wfs_Lantis_gw
-
-    def migration(self, location, max_features, query=None, sort_by=None):
-        """
-        Download the migration data.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        query:
-            Find data based on one or more of its attribute values.
-            (https://pydov.readthedocs.io/en/stable/query_attribute.html)
-        sort_by:
-            Sort on one or multiple attributes.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded migration data.
-        """
-        logger.info(f"Downloading migration data")
-
-        if query is not None:
-            query = And([query, PropertyIsEqualTo(propertyname='medium', literal='Migratie')])
-        else:
-            query = PropertyIsEqualTo(propertyname='medium', literal='Migratie')
-
-        data_wfs_OVAM = self.wfs_request(
-            layer='pfas:pfas_analyseresultaten',
-            location=location,
-            max_features=max_features,
-            query=query,
-            sort_by=sort_by)
-
-        data_wfs_OVAM = data_wfs_OVAM.drop_duplicates(
-            subset=data_wfs_OVAM.columns)
-
-        data_wfs_OVAM_len = len(data_wfs_OVAM)
-
-        nb_datapoints = {"Migration_OVAM" : data_wfs_OVAM_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-
-        return data_wfs_OVAM
-
-    def pure_product(self, location, max_features, query=None, sort_by=None):
-        """
-        Download the pure product data.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        query:
-            Find data based on one or more of its attribute values.
-            (https://pydov.readthedocs.io/en/stable/query_attribute.html)
-        sort_by:
-            Sort on one or multiple attributes.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded pure product data.
-        """
-        logger.info(f"Downloading pure product data")
-
-        if query is not None:
-            query = And([query, PropertyIsEqualTo(propertyname='medium', literal='Puur product')])
-        else:
-            query = PropertyIsEqualTo(propertyname='medium', literal='Puur product')
-
-        data_wfs_OVAM = self.wfs_request(
-            layer='pfas:pfas_analyseresultaten',
-            location=location,
-            max_features=max_features,
-            query=query,
-            sort_by=sort_by)
-
-        data_wfs_OVAM = data_wfs_OVAM.drop_duplicates(
-            subset=data_wfs_OVAM.columns)
-
-        data_wfs_OVAM_len = len(data_wfs_OVAM)
-
-        nb_datapoints = {"Pure_product_OVAM" : data_wfs_OVAM_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-
-        return data_wfs_OVAM
-
-    def rainwater(self, location, max_features, query=None, sort_by=None):
-        """
-        Download the rainwater data.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        query:
-            Find data based on one or more of its attribute values.
-            (https://pydov.readthedocs.io/en/stable/query_attribute.html)
-        sort_by:
-            Sort on one or multiple attributes.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded rainwater data.
-        """
-        logger.info(f"Downloading rainwater data")
-
-        if query is not None:
-            query = And([query, PropertyIsEqualTo(propertyname='medium', literal='Regenwater')])
-        else:
-            query = PropertyIsEqualTo(propertyname='medium', literal='Regenwater')
-
-        data_wfs_OVAM = self.wfs_request(
-            layer='pfas:pfas_analyseresultaten',
-            location=location,
-            max_features=max_features,
-            query=query,
-            sort_by=sort_by)
-
-        data_wfs_OVAM = data_wfs_OVAM.drop_duplicates(
-            subset=data_wfs_OVAM.columns)
-
-        data_wfs_OVAM_len = len(data_wfs_OVAM)
-
-        nb_datapoints = {"Rainwater_OVAM" : data_wfs_OVAM_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-
-        return data_wfs_OVAM
-
-    def soil(self, location, max_features):
-        """
-        Download the soil data.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded soil data.
-        """
-        logger.info(f"Downloading soil data")
-        data_wfs_OVAM = self.wfs_request(
-            layer='pfas:pfas_analyseresultaten',
-            location=location,
-            max_features=max_features,
-            query=PropertyIsEqualTo('medium', 'Vaste deel van de aarde'))
-        data_wfs_Lantis_soil = self.wfs_request(
-            layer='pfas:lantis_bodem_metingen',
-            location=location,
-            max_features=max_features)
-
-        data_wfs_OVAM = data_wfs_OVAM.drop_duplicates(
-            subset=data_wfs_OVAM.columns)
-        data_wfs_Lantis_soil = data_wfs_Lantis_soil.drop_duplicates(
-            subset=data_wfs_Lantis_soil.columns)
-
-        data_wfs_OVAM_len = len(data_wfs_OVAM)
-        data_wfs_Lantis_soil_len = len(data_wfs_Lantis_soil)
-
-        nb_datapoints = {"Soil_OVAM" : data_wfs_OVAM_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-        nb_datapoints = {"Soil_Lantis" : data_wfs_Lantis_soil_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-
-        return data_wfs_OVAM, data_wfs_Lantis_soil
-
-    def soil_water(self, location, max_features):
-        """
-        Download the soil water data.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        query:
-            Find data based on one or more of its attribute values.
-            (https://pydov.readthedocs.io/en/stable/query_attribute.html)
-        sort_by:
-            Sort on one or multiple attributes.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded soil water data.
-        """
-        logger.info(f"Downloading soilwater data")
-        data_wfs_VMM_ws = self.wfs_request(
-            layer='waterbodems:pfas_meetpunten_fcs',
-            location=location,
-            max_features=max_features)
-        data_wfs_OVAM = self.wfs_request(
-            layer='pfas:pfas_analyseresultaten',
-            location=location,
-            max_features=max_features,
-            query=Or([
-                PropertyIsEqualTo('medium', 'Waterbodem - sediment'),
-                PropertyIsEqualTo('medium', 'Waterbodem - vaste deel van waterbodem')]))
-
-        data_wfs_VMM_ws = data_wfs_VMM_ws.drop_duplicates(
-            subset=data_wfs_VMM_ws.columns)
-        data_wfs_OVAM = data_wfs_OVAM.drop_duplicates(
-            subset=data_wfs_OVAM.columns)
-        data_wfs_OVAM_sediment = data_wfs_OVAM[data_wfs_OVAM['medium'] == 'Waterbodem - sediment']
-        data_wfs_OVAM_fixed = data_wfs_OVAM[data_wfs_OVAM['medium'] == 'Waterbodem - vaste deel van waterbodem']
-
-        data_wfs_VMM_ws_len = len(data_wfs_VMM_ws)
-        data_wfs_OVAM_sediment_len = len(data_wfs_OVAM_sediment)
-        data_wfs_OVAM_fixed_len = len(data_wfs_OVAM_fixed)
-
-        nb_datapoints = {"Soil_water_VMM" : data_wfs_VMM_ws_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-        nb_datapoints = {"Soil_water_sediment_OVAM" : data_wfs_OVAM_sediment_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-        nb_datapoints = {"Soil_water_fixed_OVAM": data_wfs_OVAM_fixed_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-
-        return data_wfs_VMM_ws, data_wfs_OVAM_sediment, data_wfs_OVAM_fixed
-
-    def surface_water(self, location, max_features):
-        """
-        Download the surface water data.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        query:
-            Find data based on one or more of its attribute values.
-            (https://pydov.readthedocs.io/en/stable/query_attribute.html)
-        sort_by:
-            Sort on one or multiple attributes.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded surface water data.
-        """
-        logger.info(f"Downloading surface water data")
-        data_wfs_VMM_sw = self.wfs_request(
-            layer='pfas:pfas_oppwater',
-            location=location,
-            max_features=max_features)
-        data_wfs_OVAM = self.wfs_request(
-            layer='pfas:pfas_analyseresultaten',
-            location=location,
-            max_features=max_features,
-            query=PropertyIsEqualTo('medium', 'Oppervlaktewater'))
-
-        data_wfs_VMM_sw = data_wfs_VMM_sw.drop_duplicates(
-            subset=data_wfs_VMM_sw.columns)
-        data_wfs_OVAM = data_wfs_OVAM.drop_duplicates(
-            subset=data_wfs_OVAM.columns)
-
-        data_wfs_VMM_sw_len = len(data_wfs_VMM_sw)
-        data_wfs_OVAM_len = len(data_wfs_OVAM)
-
-
-        nb_datapoints = {"Surface_water_VMM" : data_wfs_VMM_sw_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-        nb_datapoints = {"Surface_water_OVAM": data_wfs_OVAM_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-
-        return data_wfs_VMM_sw, data_wfs_OVAM
-
-    def waste_water(self, location, max_features, query=None, sort_by=None):
-        """
-        Download the waste water data.
-
-        Parameters
-        ----------
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        query:
-            Find data based on one or more of its attribute values.
-            (https://pydov.readthedocs.io/en/stable/query_attribute.html)
-        sort_by:
-            Sort on one or multiple attributes.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-
-        Returns
-        -------
-        The downloaded waste water data.
-        """
-        logger.info(f"Downloading waste water data")
-        data_wfs_VMM_ww = self.wfs_request(
-            layer='pfas:pfas_afvalwater',
-            location=location,
-            max_features=max_features,
-            query=query,
-            sort_by=sort_by)
-
-        data_wfs_VMM_ww = data_wfs_VMM_ww.drop_duplicates(
-            subset=data_wfs_VMM_ww.columns)
-
-        data_wfs_VMM_ww_len = len(data_wfs_VMM_ww)
-
-        nb_datapoints = {"Waste_water_VMM": data_wfs_VMM_ww_len}
-        self.dictionary["nb_datapoints"][0].update(nb_datapoints)
-
-        return data_wfs_VMM_ww
-
-    def main(self, medium, location=None, max_features=None, save=False):
-
-        """
-        Call the functions to download the requested data and save the result in an Excel-file, with the different mediums as seperate tabs.
-
-        Parameters
-        ----------
-        medium: list of str
-            The requested medium(s).
-
-            Possibilities:
-                    - 'all'
-                    - 'biota'
-                    - 'effluent'
-                    - 'groundwater'
-                    - 'migration'
-                    - 'pure product'
-                    - 'rainwater'
-                    - 'soil'
-                    - 'soil water'
-                    - 'surface water'
-                    - 'waste water'
-        location:
-            Query on location.
-            (https://pydov.readthedocs.io/en/stable/query_location.html)
-        max_features: int
-            Limit the number of WFS features you want to be returned.
-            (https://pydov.readthedocs.io/en/stable/sort_limit.html)
-        save: boolean
-            Option to save the downloaded data if True.
-
-        Returns
-        -------
-        The requested data in separate dataframe(s) and the metadata.
-        """
-        start_time = datetime.now()
-
-        return_list = []
-
-        for i in medium:
-            if i == 'all':
-                data_wfs_VMM_biota = self.biota(location, max_features)
-                data_wfs_OVAM_effluent = self.effluent(location, max_features)
-                data_pydov_VMM_gw, data_wfs_OVAM_gw, data_wfs_Lantis_gw = self.groundwater(location, max_features)
-                data_wfs_OVAM_migration = self.migration(location, max_features)
-                data_wfs_OVAM_pp = self.pure_product(location, max_features)
-                data_wfs_OVAM_rainwater = self.rainwater(location, max_features)
-                data_wfs_OVAM_soil, data_wfs_Lantis_soil = self.soil(location, max_features)
-                data_wfs_VMM_ws, data_wfs_OVAM_ws_sediment, data_wfs_OVAM_ws_fixed = self.soil_water(location, max_features)
-                data_wfs_VMM_sw, data_wfs_OVAM_sw = self.surface_water(location, max_features)
-                data_wfs_VMM_ww = self.waste_water(location, max_features)
-                return_list.extend([data_wfs_VMM_biota, data_wfs_OVAM_effluent, data_pydov_VMM_gw, data_wfs_OVAM_gw,
-                        data_wfs_Lantis_gw, data_wfs_OVAM_migration, data_wfs_OVAM_pp, data_wfs_OVAM_rainwater,
-                        data_wfs_OVAM_soil, data_wfs_Lantis_soil, data_wfs_VMM_ws, data_wfs_OVAM_ws_sediment, data_wfs_OVAM_ws_fixed, data_wfs_VMM_sw,
-                        data_wfs_OVAM_sw, data_wfs_VMM_ww])
-            elif i == 'biota':
-                data_wfs_VMM_biota = self.biota(location, max_features)
-                return_list.extend([data_wfs_VMM_biota])
-            elif i == 'effluent':
-                data_wfs_OVAM_effluent = self.effluent(location,max_features)
-                return_list.extend([data_wfs_OVAM_effluent])
-            elif i == 'groundwater':
-                data_pydov_VMM_gw, data_wfs_OVAM_gw, data_wfs_Lantis_gw = self.groundwater(location, max_features)
-                return_list.extend([data_pydov_VMM_gw, data_wfs_OVAM_gw, data_wfs_Lantis_gw])
-            elif i == 'migration':
-                data_wfs_OVAM_migration = self.migration(location, max_features)
-                return_list.extend([data_wfs_OVAM_migration])
-            elif i == 'pure product':
-                data_wfs_OVAM_pp = self.pure_product(location, max_features)
-                return_list.extend([data_wfs_OVAM_pp])
-            elif i == 'rainwater':
-                data_wfs_OVAM_rainwater = self.rainwater(location, max_features)
-                return_list.extend([data_wfs_OVAM_rainwater])
-            elif i == 'soil':
-                data_wfs_OVAM_soil, data_wfs_Lantis_soil = self.soil(location, max_features)
-                return_list.extend([data_wfs_OVAM_soil, data_wfs_Lantis_soil])
-            elif i == 'soil water':
-                data_wfs_VMM_ws, data_wfs_OVAM_ws_sediment, data_wfs_OVAM_ws_fixed = self.soil_water(location, max_features)
-                return_list.extend([data_wfs_VMM_ws, data_wfs_OVAM_ws_sediment, data_wfs_OVAM_ws_fixed])
-            elif i == 'surface water':
-                data_wfs_VMM_sw, data_wfs_OVAM_sw = self.surface_water(location, max_features)
-                return_list.extend([data_wfs_VMM_sw, data_wfs_OVAM_sw])
-            elif i == 'waste water':
-                data_wfs_VMM_ww = self.waste_water(location, max_features)
-                return_list.extend([data_wfs_VMM_ww])
-
-        metadata = json.dumps(self.dictionary, indent=3)
-
-        if save:
-            path = os.getcwd()
-            path1 = f"{path}/results"
-            if os.path.exists(path1):
-                path2 = f"{path}/results/metadata.json"
-                with open(path2, "w") as outfile:
-                    outfile.write(metadata)
-            else:
-                os.mkdir(f"{path}/results")
-
-            with open(f"{path}/results/metadata.json") as metadata_file:
-                metadata = json.load(metadata_file)
-
-            pbar = tqdm(total=sum(metadata['nb_datapoints'][0].values()))
-            with pd.ExcelWriter(f'{path}/results/data.xlsx') as writer:
-                for i in medium:
-                    if i == 'all':
-                        data_wfs_VMM_biota.to_excel(writer, sheet_name='Biota_VMM')
-                        pbar.update(metadata['nb_datapoints'][0]['Biota_VMM'])
-                        data_wfs_OVAM_effluent.to_excel(writer, sheet_name='Effluent_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Effluent_OVAM'])
-                        data_pydov_VMM_gw.to_excel(writer, sheet_name='Groundwater_VMM')
-                        pbar.update(metadata['nb_datapoints'][0]['Groundwater_VMM'])
-                        data_wfs_OVAM_gw.to_excel(writer, sheet_name='Groundwater_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Groundwater_OVAM'])
-                        data_wfs_Lantis_gw.to_excel(writer, sheet_name='Groundwater_Lantis')
-                        pbar.update(metadata['nb_datapoints'][0]['Groundwater_Lantis'])
-                        data_wfs_OVAM_migration.to_excel(writer, sheet_name='Migration_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Migration_OVAM'])
-                        data_wfs_OVAM_pp.to_excel(writer, sheet_name='Pure_product_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Pure_product_OVAM'])
-                        data_wfs_OVAM_rainwater.to_excel(writer, sheet_name='Rainwater_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Rainwater_OVAM'])
-                        data_wfs_OVAM_soil.to_excel(writer, sheet_name='Soil_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Soil_OVAM'])
-                        data_wfs_Lantis_soil.to_excel(writer, sheet_name='Soil_Lantis')
-                        pbar.update(metadata['nb_datapoints'][0]['Soil_Lantis'])
-                        data_wfs_VMM_ws.to_excel(writer, sheet_name='Soil_water_VMM')
-                        pbar.update(metadata['nb_datapoints'][0]['Soil_water_VMM'])
-                        data_wfs_OVAM_ws_sediment.to_excel(writer, sheet_name='Soil_water_sediment_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Soil_water_sediment_OVAM'])
-                        data_wfs_OVAM_ws_fixed.to_excel(writer, sheet_name='Soil_water_fixed_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Soil_water_fixed_OVAM'])
-                        data_wfs_VMM_sw.to_excel(writer, sheet_name='Surface_water_VMM')
-                        pbar.update(metadata['nb_datapoints'][0]['Surface_water_VMM'])
-                        data_wfs_OVAM_sw.to_excel(writer, sheet_name='Surface_water_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Surface_water_OVAM'])
-                        data_wfs_VMM_ww.to_excel(writer, sheet_name='Waste_water_VMM')
-                        pbar.update(metadata['nb_datapoints'][0]['Waste_water_VMM'])
-                    elif i == 'biota':
-                        data_wfs_VMM_biota.to_excel(writer, sheet_name='Biota_VMM')
-                        pbar.update(metadata['nb_datapoints'][0]['Biota_VMM'])
-                    elif i == 'effluent':
-                        data_wfs_OVAM_effluent.to_excel(writer, sheet_name='Effluent_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Effluent_OVAM'])
-                    elif i == 'groundwater':
-                        data_pydov_VMM_gw.to_excel(writer, sheet_name='Groundwater_VMM')
-                        pbar.update(metadata['nb_datapoints'][0]['Groundwater_VMM'])
-                        data_wfs_OVAM_gw.to_excel(writer, sheet_name='Groundwater_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Groundwater_OVAM'])
-                        data_wfs_Lantis_gw.to_excel(writer, sheet_name='Groundwater_Lantis')
-                        pbar.update(metadata['nb_datapoints'][0]['Groundwater_Lantis'])
-                    elif i == 'migration':
-                        data_wfs_OVAM_migration.to_excel(writer, sheet_name='Migration_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Migration_OVAM'])
-                    elif i == 'pure product':
-                        data_wfs_OVAM_pp.to_excel(writer, sheet_name='Pure_product_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Pure_product_OVAM'])
-                    elif i == 'rainwater':
-                        data_wfs_OVAM_rainwater.to_excel(writer, sheet_name='Rainwater_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Rainwater_OVAM'])
-                    elif i == 'soil':
-                        data_wfs_OVAM_soil.to_excel(writer, sheet_name='Soil_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Soil_OVAM'])
-                        data_wfs_Lantis_soil.to_excel(writer, sheet_name='Soil_Lantis')
-                        pbar.update(metadata['nb_datapoints'][0]['Soil_Lantis'])
-                    elif i == 'soil water':
-                        data_wfs_VMM_ws.to_excel(writer, sheet_name='Soil_water_VMM')
-                        pbar.update(metadata['nb_datapoints'][0]['Soil_water_VMM'])
-                        data_wfs_OVAM_ws_sediment.to_excel(writer, sheet_name='Soil_water_sediment_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Soil_water_sediment_OVAM'])
-                        data_wfs_OVAM_ws_fixed.to_excel(writer, sheet_name='Soil_water_fixed_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Soil_water_fixed_OVAM'])
-                    elif i == 'surface water':
-                        data_wfs_VMM_sw.to_excel(writer, sheet_name='Surface_water_VMM')
-                        pbar.update(metadata['nb_datapoints'][0]['Surface_water_VMM'])
-                        data_wfs_OVAM_sw.to_excel(writer, sheet_name='Surface_water_OVAM')
-                        pbar.update(metadata['nb_datapoints'][0]['Surface_water_OVAM'])
-                    elif i == 'waste water':
-                        data_wfs_VMM_ww.to_excel(writer, sheet_name='Waste_water_VMM')
-                        pbar.update(metadata['nb_datapoints'][0]['Waste_water_VMM'])
-            pbar.close()
-
-        return return_list, metadata
-
-        end_time = datetime.now()
-        duration = end_time-start_time
-        logger.info(f'The program was executed in {duration}.')
-
-
-if __name__ == '__main__':
-    medium = ['all']
-    location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders
-    rd = RequestPFASdata()
-    df = rd.main(medium, location=location, save=True)[0]
-    #print(df[0])
-
diff --git a/contrib/PFAS_concentrations/PFAS_concentrations_tutorial.ipynb b/contrib/PFAS_concentrations/PFAS_concentrations_tutorial.ipynb
deleted file mode 100644
index 38fb705..0000000
--- a/contrib/PFAS_concentrations/PFAS_concentrations_tutorial.ipynb
+++ /dev/null
@@ -1,2040 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "markdown",
-   "id": "b7f1ea51",
-   "metadata": {},
-   "source": [
-    "# Tutorial to download (and save) PFAS-data from DOV through pydov"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "id": "99bf998c",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:01:42.259708400Z",
-     "start_time": "2023-06-06T14:01:37.540922400Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "pyproj not installed\n"
-     ]
-    }
-   ],
-   "source": [
-    "from PFAS_concentrations import RequestPFASdata\n",
-    "from pydov.util.location import Within, Box"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "4ce5f6ce",
-   "metadata": {},
-   "source": [
-    "Check out the query and customization options from pydov.\\\n",
-    "You can query on [location](https://pydov.readthedocs.io/en/stable/query_location.html) and also [restrict the number of WFS features returned](https://pydov.readthedocs.io/en/stable/sort_limit.html)."
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "995cc301",
-   "metadata": {},
-   "source": [
-    "## Case 1 : You want to save the data"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "551acadd",
-   "metadata": {},
-   "source": [
-    "### Example 1 : You want to download and save all the PFAS data of Flanders"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "id": "565052e6",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:20:35.825941700Z",
-     "start_time": "2023-06-06T14:01:42.263914600Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:01:42.357\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mbiota\u001B[0m:\u001B[36m151\u001B[0m - \u001B[1mDownloading biota data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:01:45.794\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36meffluent\u001B[0m:\u001B[36m189\u001B[0m - \u001B[1mDownloading effluent data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:01:50.595\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mgroundwater\u001B[0m:\u001B[36m230\u001B[0m - \u001B[1mDownloading groundwater data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n",
-      "[000/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/233] ccccccccccccccccccccccccccccccccc\n",
-      "[000/001] .\n",
-      "[000/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/229] ccccccccccccccccccccccccccccc\n",
-      "[000/012] ............\n",
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:04:33.914\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mmigration\u001B[0m:\u001B[36m288\u001B[0m - \u001B[1mDownloading migration data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:04:39.736\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mpure_product\u001B[0m:\u001B[36m335\u001B[0m - \u001B[1mDownloading pure product data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:04:45.163\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mrainwater\u001B[0m:\u001B[36m382\u001B[0m - \u001B[1mDownloading rainwater data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:04:50.102\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36msoil\u001B[0m:\u001B[36m423\u001B[0m - \u001B[1mDownloading soil data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/018] ..................\n",
-      "[000/011] ...........\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:07:41.662\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36msoil_water\u001B[0m:\u001B[36m472\u001B[0m - \u001B[1mDownloading soilwater data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n",
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:07:51.756\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36msurface_water\u001B[0m:\u001B[36m528\u001B[0m - \u001B[1mDownloading surface water data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/007] .......\n",
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:08:31.132\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mwaste_water\u001B[0m:\u001B[36m578\u001B[0m - \u001B[1mDownloading waste water data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/012] ............\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "  0%|          | 0/584738 [00:00<?, ?it/s]",
-      "application/vnd.jupyter.widget-view+json": {
-       "version_major": 2,
-       "version_minor": 0,
-       "model_id": "22696349b8de4c66b3175bc5aed69394"
-      }
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "medium = ['all']\n",
-    "location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders\n",
-    "\n",
-    "rd = RequestPFASdata()\n",
-    "df = rd.main(medium, location=location, max_features=None, save=True)[0]"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "5576f28b",
-   "metadata": {},
-   "source": [
-    "### Example 2 : You only want to download and save the groundwater data of Flanders"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "id": "d733dede",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:24:37.756385100Z",
-     "start_time": "2023-06-06T14:20:35.861954400Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:20:35.973\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mgroundwater\u001B[0m:\u001B[36m230\u001B[0m - \u001B[1mDownloading groundwater data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n",
-      "[000/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/233] ccccccccccccccccccccccccccccccccc\n",
-      "[000/001] .\n",
-      "[000/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/229] ccccccccccccccccccccccccccccc\n",
-      "[000/012] ............\n",
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "  0%|          | 0/127272 [00:00<?, ?it/s]",
-      "application/vnd.jupyter.widget-view+json": {
-       "version_major": 2,
-       "version_minor": 0,
-       "model_id": "35b474e6e6424352991643147113eb99"
-      }
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "medium = ['groundwater']\n",
-    "location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders\n",
-    "\n",
-    "rd = RequestPFASdata()\n",
-    "df = rd.main(medium, location=location, max_features=None, save=True)[0]"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "17bb2d20",
-   "metadata": {},
-   "source": [
-    "### Example 3 : You want to download and save the soil and groundwater data of Flanders"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 4,
-   "id": "7b3fce56",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:35:57.078903300Z",
-     "start_time": "2023-06-06T14:24:37.778046600Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:24:37.855\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36msoil\u001B[0m:\u001B[36m423\u001B[0m - \u001B[1mDownloading soil data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/018] ..................\n",
-      "[000/011] ...........\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:27:08.362\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mgroundwater\u001B[0m:\u001B[36m230\u001B[0m - \u001B[1mDownloading groundwater data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n",
-      "[000/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/233] ccccccccccccccccccccccccccccccccc\n",
-      "[000/001] .\n",
-      "[000/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/229] ccccccccccccccccccccccccccccc\n",
-      "[000/012] ............\n",
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "  0%|          | 0/400319 [00:00<?, ?it/s]",
-      "application/vnd.jupyter.widget-view+json": {
-       "version_major": 2,
-       "version_minor": 0,
-       "model_id": "4f91afadc9ca4b08ae6bea1ebd3c343b"
-      }
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "medium = ['soil', 'groundwater']\n",
-    "location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders\n",
-    "\n",
-    "rd = RequestPFASdata()\n",
-    "df = rd.main(medium, location=location, max_features=None, save=True)[0]"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "0ce6037a",
-   "metadata": {},
-   "source": [
-    "## Case 2 : You want the data in a dataframe to integrate it in your python script"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "0a0fe4bb",
-   "metadata": {},
-   "source": [
-    "### Example 1 : You want to download all the PFAS data of Flanders"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
-   "id": "d1e91bbb",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:25.177817Z",
-     "start_time": "2023-06-06T14:35:57.097531600Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:35:57.138\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mbiota\u001B[0m:\u001B[36m151\u001B[0m - \u001B[1mDownloading biota data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:36:01.669\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36meffluent\u001B[0m:\u001B[36m189\u001B[0m - \u001B[1mDownloading effluent data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:36:07.079\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mgroundwater\u001B[0m:\u001B[36m230\u001B[0m - \u001B[1mDownloading groundwater data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n",
-      "[000/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/233] ccccccccccccccccccccccccccccccccc\n",
-      "[000/001] .\n",
-      "[000/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/229] ccccccccccccccccccccccccccccc\n",
-      "[000/012] ............\n",
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:37:39.183\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mmigration\u001B[0m:\u001B[36m288\u001B[0m - \u001B[1mDownloading migration data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:37:43.304\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mpure_product\u001B[0m:\u001B[36m335\u001B[0m - \u001B[1mDownloading pure product data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:37:47.158\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mrainwater\u001B[0m:\u001B[36m382\u001B[0m - \u001B[1mDownloading rainwater data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:37:50.899\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36msoil\u001B[0m:\u001B[36m423\u001B[0m - \u001B[1mDownloading soil data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/018] ..................\n",
-      "[000/011] ...........\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:39:45.827\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36msoil_water\u001B[0m:\u001B[36m472\u001B[0m - \u001B[1mDownloading soilwater data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n",
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:39:52.899\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36msurface_water\u001B[0m:\u001B[36m528\u001B[0m - \u001B[1mDownloading surface water data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/007] .......\n",
-      "[000/001] .\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:40:25.818\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mwaste_water\u001B[0m:\u001B[36m578\u001B[0m - \u001B[1mDownloading waste water data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/012] ............\n"
-     ]
-    }
-   ],
-   "source": [
-    "medium = ['all']\n",
-    "location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders\n",
-    "rd = RequestPFASdata()\n",
-    "df = rd.main(medium, location=location, max_features=None)[0]"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 6,
-   "id": "e42590b0",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:25.295144500Z",
-     "start_time": "2023-06-06T14:41:25.187662Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 1266 entries, 0 to 1265\n",
-      "Data columns (total 12 columns):\n",
-      " #   Column            Non-Null Count  Dtype  \n",
-      "---  ------            --------------  -----  \n",
-      " 0   ogc_fid           1266 non-null   int64  \n",
-      " 1   meetplaats        1266 non-null   object \n",
-      " 2   x_mL72            1266 non-null   int64  \n",
-      " 3   y_mL72            1266 non-null   int64  \n",
-      " 4   jaar              1266 non-null   int64  \n",
-      " 5   datum             1266 non-null   object \n",
-      " 6   parameter         1266 non-null   object \n",
-      " 7   detectieconditie  1266 non-null   object \n",
-      " 8   meetwaarde        1266 non-null   float64\n",
-      " 9   meeteenheid       1266 non-null   object \n",
-      " 10  omschrijving      1266 non-null   object \n",
-      " 11  vha_segment_code  1266 non-null   int64  \n",
-      "dtypes: float64(1), int64(5), object(6)\n",
-      "memory usage: 118.8+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "   ogc_fid meetplaats  x_mL72  y_mL72  jaar       datum parameter   \n0       24      12000  104330  218850  2016  2016-10-14    PFTrDA  \\\n1       23      12000  104330  218850  2016  2016-10-14    PFTrDA   \n2       22      12000  104330  218850  2016  2016-10-14    PFTeDA   \n3       21      12000  104330  218850  2016  2016-10-14    PFTeDA   \n4       20      12000  104330  218850  2016  2016-10-14     PFPeA   \n\n  detectieconditie  meetwaarde meeteenheid   \n0                <    0.128000    µg/kg ng  \\\n1                =    0.205724    µg/kg ng   \n2                <    0.017000    µg/kg ng   \n3                =    0.301815    µg/kg ng   \n4                <    0.531000    µg/kg ng   \n\n                               omschrijving  vha_segment_code  \n0  Philippine,Isabellahaven,Dijckmeesterweg           6019988  \n1  Philippine,Isabellahaven,Dijckmeesterweg           6019988  \n2  Philippine,Isabellahaven,Dijckmeesterweg           6019988  \n3  Philippine,Isabellahaven,Dijckmeesterweg           6019988  \n4  Philippine,Isabellahaven,Dijckmeesterweg           6019988  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>ogc_fid</th>\n      <th>meetplaats</th>\n      <th>x_mL72</th>\n      <th>y_mL72</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>omschrijving</th>\n      <th>vha_segment_code</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>24</td>\n      <td>12000</td>\n      <td>104330</td>\n      <td>218850</td>\n      <td>2016</td>\n      <td>2016-10-14</td>\n      <td>PFTrDA</td>\n      <td>&lt;</td>\n      <td>0.128000</td>\n      <td>µg/kg ng</td>\n      <td>Philippine,Isabellahaven,Dijckmeesterweg</td>\n      <td>6019988</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>23</td>\n      <td>12000</td>\n      <td>104330</td>\n      <td>218850</td>\n      <td>2016</td>\n      <td>2016-10-14</td>\n      <td>PFTrDA</td>\n      <td>=</td>\n      <td>0.205724</td>\n      <td>µg/kg ng</td>\n      <td>Philippine,Isabellahaven,Dijckmeesterweg</td>\n      <td>6019988</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>22</td>\n      <td>12000</td>\n      <td>104330</td>\n      <td>218850</td>\n      <td>2016</td>\n      <td>2016-10-14</td>\n      <td>PFTeDA</td>\n      <td>&lt;</td>\n      <td>0.017000</td>\n      <td>µg/kg ng</td>\n      <td>Philippine,Isabellahaven,Dijckmeesterweg</td>\n      <td>6019988</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>21</td>\n      <td>12000</td>\n      <td>104330</td>\n      <td>218850</td>\n      <td>2016</td>\n      <td>2016-10-14</td>\n      <td>PFTeDA</td>\n      <td>=</td>\n      <td>0.301815</td>\n      <td>µg/kg ng</td>\n      <td>Philippine,Isabellahaven,Dijckmeesterweg</td>\n      <td>6019988</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>20</td>\n      <td>12000</td>\n      <td>104330</td>\n      <td>218850</td>\n      <td>2016</td>\n      <td>2016-10-14</td>\n      <td>PFPeA</td>\n      <td>&lt;</td>\n      <td>0.531000</td>\n      <td>µg/kg ng</td>\n      <td>Philippine,Isabellahaven,Dijckmeesterweg</td>\n      <td>6019988</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 6,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Biota_VMM\n",
-    "df[0].info()\n",
-    "df[0].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 7,
-   "id": "7f2a098d",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:25.455615500Z",
-     "start_time": "2023-06-06T14:41:25.295144500Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 93 entries, 0 to 92\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count  Dtype  \n",
-      "---  ------             --------------  -----  \n",
-      " 0   id                 93 non-null     int64  \n",
-      " 1   opdracht           93 non-null     int64  \n",
-      " 2   pfasdossiernr      93 non-null     int64  \n",
-      " 3   profielnaam        93 non-null     object \n",
-      " 4   top_in_m           93 non-null     float64\n",
-      " 5   basis_in_m         93 non-null     float64\n",
-      " 6   jaar               93 non-null     int64  \n",
-      " 7   datum              93 non-null     object \n",
-      " 8   parameter          93 non-null     object \n",
-      " 9   detectieconditie   93 non-null     object \n",
-      " 10  meetwaarde         93 non-null     float64\n",
-      " 11  meeteenheid        93 non-null     object \n",
-      " 12  medium             93 non-null     object \n",
-      " 13  profieltype        93 non-null     object \n",
-      " 14  plaatsing_profiel  0 non-null      float64\n",
-      " 15  commentaar         93 non-null     object \n",
-      " 16  x_ml72             93 non-null     float64\n",
-      " 17  y_ml72             93 non-null     float64\n",
-      "dtypes: float64(6), int64(4), object(8)\n",
-      "memory usage: 13.2+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr    profielnaam  top_in_m  basis_in_m   \n0  31426742  13269077            732  Effluent WWTP       0.0         0.0  \\\n1  31426743  13269077            732  Effluent WWTP       0.0         0.0   \n2  31426744  13269077            732  Effluent WWTP       0.0         0.0   \n3  31426745  13269077            732  Effluent WWTP       0.0         0.0   \n4  31426746  13269077            732  Effluent WWTP       0.0         0.0   \n\n   jaar       datum   parameter detectieconditie  meetwaarde meeteenheid   \n0  2019  2019-07-31  PFHxStotal                <       0.152        µg/l  \\\n1  2019  2019-07-31   PFOAtotal                <       0.252        µg/l   \n2  2019  2019-07-31  PFOSAtotal                <       0.256        µg/l   \n3  2019  2019-07-31   PFOStotal                <       0.185        µg/l   \n4  2019  2019-04-25  PFOSAtotal                =       0.223        µg/l   \n\n     medium profieltype  plaatsing_profiel commentaar     x_ml72     y_ml72  \n0  Effluent       Staal                NaN             147811.54  213425.03  \n1  Effluent       Staal                NaN             147811.54  213425.03  \n2  Effluent       Staal                NaN             147811.54  213425.03  \n3  Effluent       Staal                NaN             147811.54  213425.03  \n4  Effluent       Staal                NaN             147811.54  213425.03  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>31426742</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>Effluent WWTP</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2019</td>\n      <td>2019-07-31</td>\n      <td>PFHxStotal</td>\n      <td>&lt;</td>\n      <td>0.152</td>\n      <td>µg/l</td>\n      <td>Effluent</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147811.54</td>\n      <td>213425.03</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>31426743</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>Effluent WWTP</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2019</td>\n      <td>2019-07-31</td>\n      <td>PFOAtotal</td>\n      <td>&lt;</td>\n      <td>0.252</td>\n      <td>µg/l</td>\n      <td>Effluent</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147811.54</td>\n      <td>213425.03</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>31426744</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>Effluent WWTP</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2019</td>\n      <td>2019-07-31</td>\n      <td>PFOSAtotal</td>\n      <td>&lt;</td>\n      <td>0.256</td>\n      <td>µg/l</td>\n      <td>Effluent</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147811.54</td>\n      <td>213425.03</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>31426745</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>Effluent WWTP</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2019</td>\n      <td>2019-07-31</td>\n      <td>PFOStotal</td>\n      <td>&lt;</td>\n      <td>0.185</td>\n      <td>µg/l</td>\n      <td>Effluent</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147811.54</td>\n      <td>213425.03</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>31426746</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>Effluent WWTP</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2019</td>\n      <td>2019-04-25</td>\n      <td>PFOSAtotal</td>\n      <td>=</td>\n      <td>0.223</td>\n      <td>µg/l</td>\n      <td>Effluent</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147811.54</td>\n      <td>213425.03</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 7,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Effluent_OVAM\n",
-    "df[1].info()\n",
-    "df[1].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 8,
-   "id": "b73259af",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:25.698553400Z",
-     "start_time": "2023-06-06T14:41:25.346755600Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 10817 entries, 0 to 10816\n",
-      "Data columns (total 20 columns):\n",
-      " #   Column                        Non-Null Count  Dtype         \n",
-      "---  ------                        --------------  -----         \n",
-      " 0   pkey_grondwatermonster        10817 non-null  object        \n",
-      " 1   grondwatermonsternummer       10817 non-null  object        \n",
-      " 2   pkey_grondwaterlocatie        10817 non-null  object        \n",
-      " 3   gw_id                         10817 non-null  object        \n",
-      " 4   pkey_filter                   10817 non-null  object        \n",
-      " 5   filternummer                  10817 non-null  object        \n",
-      " 6   x                             10817 non-null  float64       \n",
-      " 7   y                             10817 non-null  float64       \n",
-      " 8   start_grondwaterlocatie_mtaw  10817 non-null  float64       \n",
-      " 9   gemeente                      10817 non-null  object        \n",
-      " 10  datum_monstername             10817 non-null  datetime64[ns]\n",
-      " 11  parametergroep                10817 non-null  object        \n",
-      " 12  parameter                     10817 non-null  object        \n",
-      " 13  detectie                      9377 non-null   object        \n",
-      " 14  waarde                        10817 non-null  float64       \n",
-      " 15  eenheid                       10817 non-null  object        \n",
-      " 16  veld_labo                     10817 non-null  object        \n",
-      " 17  aquifer_code                  10817 non-null  object        \n",
-      " 18  diepte_onderkant_filter       10817 non-null  float64       \n",
-      " 19  lengte_filter                 10817 non-null  float64       \n",
-      "dtypes: datetime64[ns](1), float64(6), object(13)\n",
-      "memory usage: 1.7+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "                              pkey_grondwatermonster grondwatermonsternummer   \n0  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101  \\\n1  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n2  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n3  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n4  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n\n                              pkey_grondwaterlocatie     gw_id   \n0  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2  \\\n1  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n2  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n3  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n4  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n\n                                         pkey_filter filternummer   \n0  https://www.dov.vlaanderen.be/data/filter/2003...            2  \\\n1  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n2  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n3  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n4  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n\n              x             y  start_grondwaterlocatie_mtaw gemeente   \n0  143922.46875  214154.21875                           3.0  Beveren  \\\n1  143922.46875  214154.21875                           3.0  Beveren   \n2  143922.46875  214154.21875                           3.0  Beveren   \n3  143922.46875  214154.21875                           3.0  Beveren   \n4  143922.46875  214154.21875                           3.0  Beveren   \n\n  datum_monstername            parametergroep  parameter detectie  waarde   \n0        2021-07-27  Grondwater_chemisch_PFAS      PFOSA        <     1.0  \\\n1        2021-07-27  Grondwater_chemisch_PFAS       PFOA      NaN     2.0   \n2        2021-07-27  Grondwater_chemisch_PFAS       PFDA        <     1.0   \n3        2021-07-27  Grondwater_chemisch_PFAS  PFOStotal      NaN     1.0   \n4        2021-07-27  Grondwater_chemisch_PFAS       PFBS      NaN    32.0   \n\n  eenheid veld_labo aquifer_code  diepte_onderkant_filter  lengte_filter  \n0    ng/l      LABO         0233                      5.0            0.5  \n1    ng/l      LABO         0233                      5.0            0.5  \n2    ng/l      LABO         0233                      5.0            0.5  \n3    ng/l      LABO         0233                      5.0            0.5  \n4    ng/l      LABO         0233                      5.0            0.5  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>pkey_grondwatermonster</th>\n      <th>grondwatermonsternummer</th>\n      <th>pkey_grondwaterlocatie</th>\n      <th>gw_id</th>\n      <th>pkey_filter</th>\n      <th>filternummer</th>\n      <th>x</th>\n      <th>y</th>\n      <th>start_grondwaterlocatie_mtaw</th>\n      <th>gemeente</th>\n      <th>datum_monstername</th>\n      <th>parametergroep</th>\n      <th>parameter</th>\n      <th>detectie</th>\n      <th>waarde</th>\n      <th>eenheid</th>\n      <th>veld_labo</th>\n      <th>aquifer_code</th>\n      <th>diepte_onderkant_filter</th>\n      <th>lengte_filter</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFOSA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFOA</td>\n      <td>NaN</td>\n      <td>2.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFDA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFOStotal</td>\n      <td>NaN</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFBS</td>\n      <td>NaN</td>\n      <td>32.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 8,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Groundwater_VMM\n",
-    "df[2].info()\n",
-    "df[2].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 9,
-   "id": "a29fada6",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:25.870040900Z",
-     "start_time": "2023-06-06T14:41:25.414977Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 110860 entries, 0 to 110859\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count   Dtype  \n",
-      "---  ------             --------------   -----  \n",
-      " 0   id                 110860 non-null  int64  \n",
-      " 1   opdracht           110860 non-null  int64  \n",
-      " 2   pfasdossiernr      110860 non-null  int64  \n",
-      " 3   profielnaam        110860 non-null  object \n",
-      " 4   top_in_m           110769 non-null  float64\n",
-      " 5   basis_in_m         110769 non-null  float64\n",
-      " 6   jaar               110860 non-null  int64  \n",
-      " 7   datum              110860 non-null  object \n",
-      " 8   parameter          110860 non-null  object \n",
-      " 9   detectieconditie   110860 non-null  object \n",
-      " 10  meetwaarde         110860 non-null  float64\n",
-      " 11  meeteenheid        110741 non-null  object \n",
-      " 12  medium             110860 non-null  object \n",
-      " 13  profieltype        110860 non-null  object \n",
-      " 14  plaatsing_profiel  108731 non-null  object \n",
-      " 15  commentaar         110860 non-null  object \n",
-      " 16  x_ml72             110860 non-null  float64\n",
-      " 17  y_ml72             110860 non-null  float64\n",
-      "dtypes: float64(5), int64(4), object(9)\n",
-      "memory usage: 15.2+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr profielnaam  top_in_m  basis_in_m  jaar   \n0  31063070  13077062           6180        PB31       0.2         2.2  2021  \\\n1  31063071  13077062           6180        PB31       0.2         2.2  2021   \n2  31063072  13077062           6180        PB31       0.2         2.2  2021   \n3  31063073  13077062           6180        PB31       0.2         2.2  2021   \n4  31063074  13077062           6180        PB31       0.2         2.2  2021   \n\n        datum parameter detectieconditie  meetwaarde meeteenheid      medium   \n0  2021-06-16     PFHpS                <        0.02        µg/l  Grondwater  \\\n1  2021-06-16      PFBS                <        0.02        µg/l  Grondwater   \n2  2021-06-16   HFPO-DA                <        0.02        µg/l  Grondwater   \n3  2021-06-16     PFODA                <        0.02        µg/l  Grondwater   \n4  2021-06-16      PFBA                <        0.02        µg/l  Grondwater   \n\n  profieltype plaatsing_profiel commentaar    x_ml72    y_ml72  \n0    Peilbuis               NaN             237529.0  204908.0  \n1    Peilbuis               NaN             237529.0  204908.0  \n2    Peilbuis               NaN             237529.0  204908.0  \n3    Peilbuis               NaN             237529.0  204908.0  \n4    Peilbuis               NaN             237529.0  204908.0  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>31063070</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFHpS</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>31063071</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFBS</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>31063072</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>HFPO-DA</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>31063073</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFODA</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>31063074</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFBA</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 9,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Groundwater_OVAM\n",
-    "df[3].info()\n",
-    "df[3].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 10,
-   "id": "86d33d14",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:25.917002100Z",
-     "start_time": "2023-06-06T14:41:25.567085Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 5595 entries, 0 to 5594\n",
-      "Data columns (total 14 columns):\n",
-      " #   Column              Non-Null Count  Dtype  \n",
-      "---  ------              --------------  -----  \n",
-      " 0   projectdeel         5595 non-null   object \n",
-      " 1   peilbuis            5595 non-null   object \n",
-      " 2   filter_van_m        4778 non-null   float64\n",
-      " 3   filter_tot_m        5122 non-null   float64\n",
-      " 4   nummer              5595 non-null   int64  \n",
-      " 5   analysemonster      5595 non-null   object \n",
-      " 6   datum_bemonstering  5595 non-null   object \n",
-      " 7   gegevens            5595 non-null   object \n",
-      " 8   parameter           5595 non-null   object \n",
-      " 9   detectieconditie    5595 non-null   object \n",
-      " 10  waarde              5595 non-null   float64\n",
-      " 11  eenheid             5595 non-null   object \n",
-      " 12  x_ml72              5595 non-null   float64\n",
-      " 13  y_ml72              5595 non-null   float64\n",
-      "dtypes: float64(5), int64(1), object(8)\n",
-      "memory usage: 612.1+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "  projectdeel       peilbuis  filter_van_m  filter_tot_m  nummer   \n0        R1O1           PBC3           NaN          14.9     182  \\\n1        R1O1           P406           4.1           6.1      88   \n2          KZ    StadAnt_280           3.4           4.4     248   \n3        R1O1          P402a           9.1          10.1      77   \n4        STLO  PFAS-Diep-PB5          21.0          23.0     195   \n\n                    analysemonster datum_bemonstering    gegevens parameter   \n0                             PBC3         2022/02/04   RoTS/WiBo     PFHxS  \\\n1                           LD_406         2021/09/23   RoTS/WiBo   8:2 FTS   \n2      StadAnt_280-1-1 StadAnt_280         2022/01/25  RoTS/Sweco    PFHxDA   \n3                          LD_402a         2021/08/19   RoTS/WiBo  10:2 FTS   \n4  PFAS-Diep-PB5-1-2 PFAS-Diep-PB5         2021/12/08  RoTS/Sweco    PFHxDA   \n\n  detectieconditie  waarde eenheid         x_ml72        y_ml72  \n0                =     5.0    ng/l  154735.956833  213286.10449  \n1                <     2.0    ng/l  154457.340000  213702.00000  \n2                <     1.0    ng/l  152803.809990  214595.20000  \n3                <     4.0    ng/l  154374.470000  213884.06000  \n4                <     1.0    ng/l  149800.908600  214023.70810  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>projectdeel</th>\n      <th>peilbuis</th>\n      <th>filter_van_m</th>\n      <th>filter_tot_m</th>\n      <th>nummer</th>\n      <th>analysemonster</th>\n      <th>datum_bemonstering</th>\n      <th>gegevens</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>waarde</th>\n      <th>eenheid</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>R1O1</td>\n      <td>PBC3</td>\n      <td>NaN</td>\n      <td>14.9</td>\n      <td>182</td>\n      <td>PBC3</td>\n      <td>2022/02/04</td>\n      <td>RoTS/WiBo</td>\n      <td>PFHxS</td>\n      <td>=</td>\n      <td>5.0</td>\n      <td>ng/l</td>\n      <td>154735.956833</td>\n      <td>213286.10449</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>R1O1</td>\n      <td>P406</td>\n      <td>4.1</td>\n      <td>6.1</td>\n      <td>88</td>\n      <td>LD_406</td>\n      <td>2021/09/23</td>\n      <td>RoTS/WiBo</td>\n      <td>8:2 FTS</td>\n      <td>&lt;</td>\n      <td>2.0</td>\n      <td>ng/l</td>\n      <td>154457.340000</td>\n      <td>213702.00000</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>KZ</td>\n      <td>StadAnt_280</td>\n      <td>3.4</td>\n      <td>4.4</td>\n      <td>248</td>\n      <td>StadAnt_280-1-1 StadAnt_280</td>\n      <td>2022/01/25</td>\n      <td>RoTS/Sweco</td>\n      <td>PFHxDA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>152803.809990</td>\n      <td>214595.20000</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>R1O1</td>\n      <td>P402a</td>\n      <td>9.1</td>\n      <td>10.1</td>\n      <td>77</td>\n      <td>LD_402a</td>\n      <td>2021/08/19</td>\n      <td>RoTS/WiBo</td>\n      <td>10:2 FTS</td>\n      <td>&lt;</td>\n      <td>4.0</td>\n      <td>ng/l</td>\n      <td>154374.470000</td>\n      <td>213884.06000</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>STLO</td>\n      <td>PFAS-Diep-PB5</td>\n      <td>21.0</td>\n      <td>23.0</td>\n      <td>195</td>\n      <td>PFAS-Diep-PB5-1-2 PFAS-Diep-PB5</td>\n      <td>2021/12/08</td>\n      <td>RoTS/Sweco</td>\n      <td>PFHxDA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>149800.908600</td>\n      <td>214023.70810</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 10,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Groundwater_Lantis\n",
-    "df[4].info()\n",
-    "df[4].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 11,
-   "id": "42d113c9",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:25.917002100Z",
-     "start_time": "2023-06-06T14:41:25.617325100Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 480 entries, 0 to 479\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count  Dtype  \n",
-      "---  ------             --------------  -----  \n",
-      " 0   id                 480 non-null    int64  \n",
-      " 1   opdracht           480 non-null    int64  \n",
-      " 2   pfasdossiernr      480 non-null    int64  \n",
-      " 3   profielnaam        480 non-null    object \n",
-      " 4   top_in_m           480 non-null    float64\n",
-      " 5   basis_in_m         480 non-null    float64\n",
-      " 6   jaar               480 non-null    int64  \n",
-      " 7   datum              480 non-null    object \n",
-      " 8   parameter          480 non-null    object \n",
-      " 9   detectieconditie   480 non-null    object \n",
-      " 10  meetwaarde         480 non-null    float64\n",
-      " 11  meeteenheid        480 non-null    object \n",
-      " 12  medium             480 non-null    object \n",
-      " 13  profieltype        480 non-null    object \n",
-      " 14  plaatsing_profiel  480 non-null    object \n",
-      " 15  commentaar         480 non-null    object \n",
-      " 16  x_ml72             480 non-null    float64\n",
-      " 17  y_ml72             480 non-null    float64\n",
-      "dtypes: float64(5), int64(4), object(9)\n",
-      "memory usage: 67.6+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr                             profielnaam   \n0  32502917  13777505          98809  Volkstuinlekkeroever bosbes ongewassen  \\\n1  32502918  13777505          98809  Volkstuinlekkeroever bosbes ongewassen   \n2  32502919  13777505          98809  Volkstuinlekkeroever bosbes ongewassen   \n3  32502920  13777505          98809  Volkstuinlekkeroever bosbes ongewassen   \n4  32502921  13777505          98809  Volkstuinlekkeroever bosbes ongewassen   \n\n   top_in_m  basis_in_m  jaar       datum   parameter detectieconditie   \n0       0.0         0.1  2021  2021-09-02      PFHxDA                <  \\\n1       0.0         0.1  2021  2021-09-02  PFOSAtotal                <   \n2       0.0         0.1  2021  2021-09-02        PFDA                <   \n3       0.0         0.1  2021  2021-09-02     8:2 FTS                <   \n4       0.0         0.1  2021  2021-09-02        PFBA                =   \n\n   meetwaarde meeteenheid    medium profieltype plaatsing_profiel commentaar   \n0        1.00       µg/kg  Migratie       Staal        2021-09-02             \\\n1        0.10       µg/kg  Migratie       Staal        2021-09-02              \n2        0.10       µg/kg  Migratie       Staal        2021-09-02              \n3        0.30       µg/kg  Migratie       Staal        2021-09-02              \n4        6.78       µg/kg  Migratie       Staal        2021-09-02              \n\n     x_ml72    y_ml72  \n0  151127.0  212951.0  \n1  151127.0  212951.0  \n2  151127.0  212951.0  \n3  151127.0  212951.0  \n4  151127.0  212951.0  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>32502917</td>\n      <td>13777505</td>\n      <td>98809</td>\n      <td>Volkstuinlekkeroever bosbes ongewassen</td>\n      <td>0.0</td>\n      <td>0.1</td>\n      <td>2021</td>\n      <td>2021-09-02</td>\n      <td>PFHxDA</td>\n      <td>&lt;</td>\n      <td>1.00</td>\n      <td>µg/kg</td>\n      <td>Migratie</td>\n      <td>Staal</td>\n      <td>2021-09-02</td>\n      <td></td>\n      <td>151127.0</td>\n      <td>212951.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>32502918</td>\n      <td>13777505</td>\n      <td>98809</td>\n      <td>Volkstuinlekkeroever bosbes ongewassen</td>\n      <td>0.0</td>\n      <td>0.1</td>\n      <td>2021</td>\n      <td>2021-09-02</td>\n      <td>PFOSAtotal</td>\n      <td>&lt;</td>\n      <td>0.10</td>\n      <td>µg/kg</td>\n      <td>Migratie</td>\n      <td>Staal</td>\n      <td>2021-09-02</td>\n      <td></td>\n      <td>151127.0</td>\n      <td>212951.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>32502919</td>\n      <td>13777505</td>\n      <td>98809</td>\n      <td>Volkstuinlekkeroever bosbes ongewassen</td>\n      <td>0.0</td>\n      <td>0.1</td>\n      <td>2021</td>\n      <td>2021-09-02</td>\n      <td>PFDA</td>\n      <td>&lt;</td>\n      <td>0.10</td>\n      <td>µg/kg</td>\n      <td>Migratie</td>\n      <td>Staal</td>\n      <td>2021-09-02</td>\n      <td></td>\n      <td>151127.0</td>\n      <td>212951.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>32502920</td>\n      <td>13777505</td>\n      <td>98809</td>\n      <td>Volkstuinlekkeroever bosbes ongewassen</td>\n      <td>0.0</td>\n      <td>0.1</td>\n      <td>2021</td>\n      <td>2021-09-02</td>\n      <td>8:2 FTS</td>\n      <td>&lt;</td>\n      <td>0.30</td>\n      <td>µg/kg</td>\n      <td>Migratie</td>\n      <td>Staal</td>\n      <td>2021-09-02</td>\n      <td></td>\n      <td>151127.0</td>\n      <td>212951.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>32502921</td>\n      <td>13777505</td>\n      <td>98809</td>\n      <td>Volkstuinlekkeroever bosbes ongewassen</td>\n      <td>0.0</td>\n      <td>0.1</td>\n      <td>2021</td>\n      <td>2021-09-02</td>\n      <td>PFBA</td>\n      <td>=</td>\n      <td>6.78</td>\n      <td>µg/kg</td>\n      <td>Migratie</td>\n      <td>Staal</td>\n      <td>2021-09-02</td>\n      <td></td>\n      <td>151127.0</td>\n      <td>212951.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 11,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Migration_OVAM\n",
-    "df[5].info()\n",
-    "df[5].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 12,
-   "id": "53baa81b",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:25.917002100Z",
-     "start_time": "2023-06-06T14:41:25.670587Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 537 entries, 0 to 536\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count  Dtype  \n",
-      "---  ------             --------------  -----  \n",
-      " 0   id                 537 non-null    int64  \n",
-      " 1   opdracht           537 non-null    int64  \n",
-      " 2   pfasdossiernr      537 non-null    int64  \n",
-      " 3   profielnaam        537 non-null    object \n",
-      " 4   top_in_m           537 non-null    float64\n",
-      " 5   basis_in_m         537 non-null    float64\n",
-      " 6   jaar               537 non-null    int64  \n",
-      " 7   datum              537 non-null    object \n",
-      " 8   parameter          537 non-null    object \n",
-      " 9   detectieconditie   537 non-null    object \n",
-      " 10  meetwaarde         537 non-null    float64\n",
-      " 11  meeteenheid        537 non-null    object \n",
-      " 12  medium             537 non-null    object \n",
-      " 13  profieltype        537 non-null    object \n",
-      " 14  plaatsing_profiel  537 non-null    object \n",
-      " 15  commentaar         537 non-null    object \n",
-      " 16  x_ml72             537 non-null    float64\n",
-      " 17  y_ml72             537 non-null    float64\n",
-      "dtypes: float64(5), int64(4), object(9)\n",
-      "memory usage: 75.6+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr profielnaam  top_in_m  basis_in_m  jaar   \n0  32936065  14048724          97883         S02       3.0         3.2  2022  \\\n1  32936066  14048724          97883         S02       3.0         3.2  2022   \n2  32936067  14048724          97883         S02       3.0         3.2  2022   \n3  32936068  14048724          97883         S02       3.0         3.2  2022   \n4  32936069  14048724          97883         S02       3.0         3.2  2022   \n\n        datum            parameter detectieconditie  meetwaarde meeteenheid   \n0  2022-05-27               PFTeDA                <        0.47    µg/kg ds  \\\n1  2022-05-27              4:2 FTS                <        0.47    µg/kg ds   \n2  2022-05-27                 PFNS                <        0.47    µg/kg ds   \n3  2022-05-27  PFAS Som indicatief                <        2.82    µg/kg ds   \n4  2022-05-27         MePFOSAtotal                <        0.47    µg/kg ds   \n\n         medium      profieltype plaatsing_profiel commentaar    x_ml72   \n0  Puur product  Waterbodemstaal        2022-04-27             166758.0  \\\n1  Puur product  Waterbodemstaal        2022-04-27             166758.0   \n2  Puur product  Waterbodemstaal        2022-04-27             166758.0   \n3  Puur product  Waterbodemstaal        2022-04-27             166758.0   \n4  Puur product  Waterbodemstaal        2022-04-27             166758.0   \n\n     y_ml72  \n0  205647.0  \n1  205647.0  \n2  205647.0  \n3  205647.0  \n4  205647.0  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>32936065</td>\n      <td>14048724</td>\n      <td>97883</td>\n      <td>S02</td>\n      <td>3.0</td>\n      <td>3.2</td>\n      <td>2022</td>\n      <td>2022-05-27</td>\n      <td>PFTeDA</td>\n      <td>&lt;</td>\n      <td>0.47</td>\n      <td>µg/kg ds</td>\n      <td>Puur product</td>\n      <td>Waterbodemstaal</td>\n      <td>2022-04-27</td>\n      <td></td>\n      <td>166758.0</td>\n      <td>205647.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>32936066</td>\n      <td>14048724</td>\n      <td>97883</td>\n      <td>S02</td>\n      <td>3.0</td>\n      <td>3.2</td>\n      <td>2022</td>\n      <td>2022-05-27</td>\n      <td>4:2 FTS</td>\n      <td>&lt;</td>\n      <td>0.47</td>\n      <td>µg/kg ds</td>\n      <td>Puur product</td>\n      <td>Waterbodemstaal</td>\n      <td>2022-04-27</td>\n      <td></td>\n      <td>166758.0</td>\n      <td>205647.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>32936067</td>\n      <td>14048724</td>\n      <td>97883</td>\n      <td>S02</td>\n      <td>3.0</td>\n      <td>3.2</td>\n      <td>2022</td>\n      <td>2022-05-27</td>\n      <td>PFNS</td>\n      <td>&lt;</td>\n      <td>0.47</td>\n      <td>µg/kg ds</td>\n      <td>Puur product</td>\n      <td>Waterbodemstaal</td>\n      <td>2022-04-27</td>\n      <td></td>\n      <td>166758.0</td>\n      <td>205647.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>32936068</td>\n      <td>14048724</td>\n      <td>97883</td>\n      <td>S02</td>\n      <td>3.0</td>\n      <td>3.2</td>\n      <td>2022</td>\n      <td>2022-05-27</td>\n      <td>PFAS Som indicatief</td>\n      <td>&lt;</td>\n      <td>2.82</td>\n      <td>µg/kg ds</td>\n      <td>Puur product</td>\n      <td>Waterbodemstaal</td>\n      <td>2022-04-27</td>\n      <td></td>\n      <td>166758.0</td>\n      <td>205647.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>32936069</td>\n      <td>14048724</td>\n      <td>97883</td>\n      <td>S02</td>\n      <td>3.0</td>\n      <td>3.2</td>\n      <td>2022</td>\n      <td>2022-05-27</td>\n      <td>MePFOSAtotal</td>\n      <td>&lt;</td>\n      <td>0.47</td>\n      <td>µg/kg ds</td>\n      <td>Puur product</td>\n      <td>Waterbodemstaal</td>\n      <td>2022-04-27</td>\n      <td></td>\n      <td>166758.0</td>\n      <td>205647.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 12,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Pure_product_OVAM\n",
-    "df[6].info()\n",
-    "df[6].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 13,
-   "id": "be803a41",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:26.084560100Z",
-     "start_time": "2023-06-06T14:41:25.718809200Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 95 entries, 0 to 94\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count  Dtype  \n",
-      "---  ------             --------------  -----  \n",
-      " 0   id                 95 non-null     int64  \n",
-      " 1   opdracht           95 non-null     int64  \n",
-      " 2   pfasdossiernr      95 non-null     int64  \n",
-      " 3   profielnaam        95 non-null     object \n",
-      " 4   top_in_m           95 non-null     float64\n",
-      " 5   basis_in_m         95 non-null     float64\n",
-      " 6   jaar               95 non-null     int64  \n",
-      " 7   datum              95 non-null     object \n",
-      " 8   parameter          95 non-null     object \n",
-      " 9   detectieconditie   95 non-null     object \n",
-      " 10  meetwaarde         95 non-null     float64\n",
-      " 11  meeteenheid        95 non-null     object \n",
-      " 12  medium             95 non-null     object \n",
-      " 13  profieltype        95 non-null     object \n",
-      " 14  plaatsing_profiel  0 non-null      float64\n",
-      " 15  commentaar         95 non-null     object \n",
-      " 16  x_ml72             95 non-null     float64\n",
-      " 17  y_ml72             95 non-null     float64\n",
-      "dtypes: float64(6), int64(4), object(8)\n",
-      "memory usage: 13.5+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr    profielnaam  top_in_m  basis_in_m   \n0  31427010  13269077            732  Collector pit       0.0         0.0  \\\n1  31427011  13269077            732  Collector pit       0.0         0.0   \n2  31427012  13269077            732  Collector pit       0.0         0.0   \n3  31427013  13269077            732  Collector pit       0.0         0.0   \n4  31427014  13269077            732  Collector pit       0.0         0.0   \n\n   jaar       datum   parameter detectieconditie  meetwaarde meeteenheid   \n0  2018  2018-07-10  PFHxStotal                =       19.20        µg/l  \\\n1  2018  2018-07-10   PFOStotal                =      203.00        µg/l   \n2  2018  2018-07-10   PFOStotal                =      176.00        µg/l   \n3  2018  2018-07-10  PFOSAtotal                =       14.40        µg/l   \n4  2018  2018-07-10  PFOSAtotal                =        8.31        µg/l   \n\n       medium profieltype  plaatsing_profiel commentaar     x_ml72    y_ml72  \n0  Regenwater       Staal                NaN             147744.05  213419.4  \n1  Regenwater       Staal                NaN             147744.05  213419.4  \n2  Regenwater       Staal                NaN             147744.05  213419.4  \n3  Regenwater       Staal                NaN             147744.05  213419.4  \n4  Regenwater       Staal                NaN             147744.05  213419.4  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>31427010</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>Collector pit</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2018</td>\n      <td>2018-07-10</td>\n      <td>PFHxStotal</td>\n      <td>=</td>\n      <td>19.20</td>\n      <td>µg/l</td>\n      <td>Regenwater</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147744.05</td>\n      <td>213419.4</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>31427011</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>Collector pit</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2018</td>\n      <td>2018-07-10</td>\n      <td>PFOStotal</td>\n      <td>=</td>\n      <td>203.00</td>\n      <td>µg/l</td>\n      <td>Regenwater</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147744.05</td>\n      <td>213419.4</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>31427012</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>Collector pit</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2018</td>\n      <td>2018-07-10</td>\n      <td>PFOStotal</td>\n      <td>=</td>\n      <td>176.00</td>\n      <td>µg/l</td>\n      <td>Regenwater</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147744.05</td>\n      <td>213419.4</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>31427013</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>Collector pit</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2018</td>\n      <td>2018-07-10</td>\n      <td>PFOSAtotal</td>\n      <td>=</td>\n      <td>14.40</td>\n      <td>µg/l</td>\n      <td>Regenwater</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147744.05</td>\n      <td>213419.4</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>31427014</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>Collector pit</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2018</td>\n      <td>2018-07-10</td>\n      <td>PFOSAtotal</td>\n      <td>=</td>\n      <td>8.31</td>\n      <td>µg/l</td>\n      <td>Regenwater</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147744.05</td>\n      <td>213419.4</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 13,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Rainwater_OVAM\n",
-    "df[7].info()\n",
-    "df[7].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 14,
-   "id": "c5bf5d50",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:26.360112800Z",
-     "start_time": "2023-06-06T14:41:25.777619500Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 172249 entries, 0 to 172248\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count   Dtype  \n",
-      "---  ------             --------------   -----  \n",
-      " 0   id                 172249 non-null  int64  \n",
-      " 1   opdracht           172249 non-null  int64  \n",
-      " 2   pfasdossiernr      172249 non-null  int64  \n",
-      " 3   profielnaam        172249 non-null  object \n",
-      " 4   top_in_m           172249 non-null  float64\n",
-      " 5   basis_in_m         172249 non-null  float64\n",
-      " 6   jaar               172249 non-null  int64  \n",
-      " 7   datum              172249 non-null  object \n",
-      " 8   parameter          172249 non-null  object \n",
-      " 9   detectieconditie   172249 non-null  object \n",
-      " 10  meetwaarde         172249 non-null  float64\n",
-      " 11  meeteenheid        172249 non-null  object \n",
-      " 12  medium             172249 non-null  object \n",
-      " 13  profieltype        172249 non-null  object \n",
-      " 14  plaatsing_profiel  167612 non-null  object \n",
-      " 15  commentaar         172249 non-null  object \n",
-      " 16  x_ml72             172249 non-null  float64\n",
-      " 17  y_ml72             172249 non-null  float64\n",
-      "dtypes: float64(5), int64(4), object(9)\n",
-      "memory usage: 23.7+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr profielnaam  top_in_m  basis_in_m  jaar   \n0  31063144  13077062           6180         108       0.5         0.7  2021  \\\n1  31063147  13077062           6180         108       0.5         0.7  2021   \n2  31063151  13077062           6180         108       0.5         0.7  2021   \n3  31063157  13077062           6180         108       0.5         0.7  2021   \n4  31063159  13077062           6180         108       0.5         0.7  2021   \n\n        datum   parameter detectieconditie  meetwaarde meeteenheid   \n0  2021-06-01  PFHxStotal                <         0.2    µg/kg ds  \\\n1  2021-06-01        PFPA                <         0.2    µg/kg ds   \n2  2021-06-01   8:2 diPAP                <         0.2    µg/kg ds   \n3  2021-06-01       PFPeS                <         0.2    µg/kg ds   \n4  2021-06-01        PFNS                <         0.2    µg/kg ds   \n\n                    medium profieltype plaatsing_profiel commentaar    x_ml72   \n0  Vaste deel van de aarde      Boring        2021-05-21             237521.0  \\\n1  Vaste deel van de aarde      Boring        2021-05-21             237521.0   \n2  Vaste deel van de aarde      Boring        2021-05-21             237521.0   \n3  Vaste deel van de aarde      Boring        2021-05-21             237521.0   \n4  Vaste deel van de aarde      Boring        2021-05-21             237521.0   \n\n     y_ml72  \n0  204927.0  \n1  204927.0  \n2  204927.0  \n3  204927.0  \n4  204927.0  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>31063144</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>108</td>\n      <td>0.5</td>\n      <td>0.7</td>\n      <td>2021</td>\n      <td>2021-06-01</td>\n      <td>PFHxStotal</td>\n      <td>&lt;</td>\n      <td>0.2</td>\n      <td>µg/kg ds</td>\n      <td>Vaste deel van de aarde</td>\n      <td>Boring</td>\n      <td>2021-05-21</td>\n      <td></td>\n      <td>237521.0</td>\n      <td>204927.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>31063147</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>108</td>\n      <td>0.5</td>\n      <td>0.7</td>\n      <td>2021</td>\n      <td>2021-06-01</td>\n      <td>PFPA</td>\n      <td>&lt;</td>\n      <td>0.2</td>\n      <td>µg/kg ds</td>\n      <td>Vaste deel van de aarde</td>\n      <td>Boring</td>\n      <td>2021-05-21</td>\n      <td></td>\n      <td>237521.0</td>\n      <td>204927.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>31063151</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>108</td>\n      <td>0.5</td>\n      <td>0.7</td>\n      <td>2021</td>\n      <td>2021-06-01</td>\n      <td>8:2 diPAP</td>\n      <td>&lt;</td>\n      <td>0.2</td>\n      <td>µg/kg ds</td>\n      <td>Vaste deel van de aarde</td>\n      <td>Boring</td>\n      <td>2021-05-21</td>\n      <td></td>\n      <td>237521.0</td>\n      <td>204927.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>31063157</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>108</td>\n      <td>0.5</td>\n      <td>0.7</td>\n      <td>2021</td>\n      <td>2021-06-01</td>\n      <td>PFPeS</td>\n      <td>&lt;</td>\n      <td>0.2</td>\n      <td>µg/kg ds</td>\n      <td>Vaste deel van de aarde</td>\n      <td>Boring</td>\n      <td>2021-05-21</td>\n      <td></td>\n      <td>237521.0</td>\n      <td>204927.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>31063159</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>108</td>\n      <td>0.5</td>\n      <td>0.7</td>\n      <td>2021</td>\n      <td>2021-06-01</td>\n      <td>PFNS</td>\n      <td>&lt;</td>\n      <td>0.2</td>\n      <td>µg/kg ds</td>\n      <td>Vaste deel van de aarde</td>\n      <td>Boring</td>\n      <td>2021-05-21</td>\n      <td></td>\n      <td>237521.0</td>\n      <td>204927.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 14,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Soil_OVAM\n",
-    "df[8].info()\n",
-    "df[8].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 15,
-   "id": "8656803a",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:26.589117Z",
-     "start_time": "2023-06-06T14:41:25.966518600Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 100798 entries, 0 to 100797\n",
-      "Data columns (total 14 columns):\n",
-      " #   Column              Non-Null Count   Dtype  \n",
-      "---  ------              --------------   -----  \n",
-      " 0   projectdeel         100681 non-null  object \n",
-      " 1   boring              100798 non-null  object \n",
-      " 2   diepte_van_m        100798 non-null  float64\n",
-      " 3   diepte_tot_m        100798 non-null  float64\n",
-      " 4   nummer              100798 non-null  int64  \n",
-      " 5   analysemonster      100798 non-null  object \n",
-      " 6   datum_bemonstering  92299 non-null   object \n",
-      " 7   gegevens            100798 non-null  object \n",
-      " 8   parameter           100798 non-null  object \n",
-      " 9   detectieconditie    100798 non-null  object \n",
-      " 10  waarde              100798 non-null  float64\n",
-      " 11  eenheid             100798 non-null  object \n",
-      " 12  x_ml72              100798 non-null  float64\n",
-      " 13  y_ml72              100798 non-null  float64\n",
-      "dtypes: float64(5), int64(1), object(8)\n",
-      "memory usage: 10.8+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "  projectdeel  boring  diepte_van_m  diepte_tot_m  nummer analysemonster   \n0          ST  B40017           0.0           0.5       1        MM40001  \\\n1          ST  B40017           0.0           0.5       1        MM40001   \n2          ST  B40017           0.0           0.5       1        MM40001   \n3          ST  B40017           0.0           0.5       1        MM40001   \n4          ST  B40017           0.0           0.5       1        MM40001   \n\n  datum_bemonstering    gegevens                 parameter detectieconditie   \n0         2016-08-25  RoTS/Sweco               totaal PFAS                =  \\\n1         2016-08-25  RoTS/Sweco  totaal PFAS kwantitatief                =   \n2         2016-08-25  RoTS/Sweco    totaal PFAS indicatief                =   \n3         2016-08-25  RoTS/Sweco                  som PFOA                <   \n4         2016-08-25  RoTS/Sweco                  som PFOS                =   \n\n   waarde   eenheid     x_ml72     y_ml72  \n0     7.3  µg/kg ds  149401.99  213878.69  \n1     7.3  µg/kg ds  149401.99  213878.69  \n2     0.0  µg/kg ds  149401.99  213878.69  \n3     5.0  µg/kg ds  149401.99  213878.69  \n4     7.3  µg/kg ds  149401.99  213878.69  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>projectdeel</th>\n      <th>boring</th>\n      <th>diepte_van_m</th>\n      <th>diepte_tot_m</th>\n      <th>nummer</th>\n      <th>analysemonster</th>\n      <th>datum_bemonstering</th>\n      <th>gegevens</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>waarde</th>\n      <th>eenheid</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>ST</td>\n      <td>B40017</td>\n      <td>0.0</td>\n      <td>0.5</td>\n      <td>1</td>\n      <td>MM40001</td>\n      <td>2016-08-25</td>\n      <td>RoTS/Sweco</td>\n      <td>totaal PFAS</td>\n      <td>=</td>\n      <td>7.3</td>\n      <td>µg/kg ds</td>\n      <td>149401.99</td>\n      <td>213878.69</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>ST</td>\n      <td>B40017</td>\n      <td>0.0</td>\n      <td>0.5</td>\n      <td>1</td>\n      <td>MM40001</td>\n      <td>2016-08-25</td>\n      <td>RoTS/Sweco</td>\n      <td>totaal PFAS kwantitatief</td>\n      <td>=</td>\n      <td>7.3</td>\n      <td>µg/kg ds</td>\n      <td>149401.99</td>\n      <td>213878.69</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>ST</td>\n      <td>B40017</td>\n      <td>0.0</td>\n      <td>0.5</td>\n      <td>1</td>\n      <td>MM40001</td>\n      <td>2016-08-25</td>\n      <td>RoTS/Sweco</td>\n      <td>totaal PFAS indicatief</td>\n      <td>=</td>\n      <td>0.0</td>\n      <td>µg/kg ds</td>\n      <td>149401.99</td>\n      <td>213878.69</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>ST</td>\n      <td>B40017</td>\n      <td>0.0</td>\n      <td>0.5</td>\n      <td>1</td>\n      <td>MM40001</td>\n      <td>2016-08-25</td>\n      <td>RoTS/Sweco</td>\n      <td>som PFOA</td>\n      <td>&lt;</td>\n      <td>5.0</td>\n      <td>µg/kg ds</td>\n      <td>149401.99</td>\n      <td>213878.69</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>ST</td>\n      <td>B40017</td>\n      <td>0.0</td>\n      <td>0.5</td>\n      <td>1</td>\n      <td>MM40001</td>\n      <td>2016-08-25</td>\n      <td>RoTS/Sweco</td>\n      <td>som PFOS</td>\n      <td>=</td>\n      <td>7.3</td>\n      <td>µg/kg ds</td>\n      <td>149401.99</td>\n      <td>213878.69</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 15,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Soil_Lantis\n",
-    "df[9].info()\n",
-    "df[9].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 16,
-   "id": "c07882d8",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:26.819154200Z",
-     "start_time": "2023-06-06T14:41:26.125210Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 2662 entries, 0 to 2661\n",
-      "Data columns (total 17 columns):\n",
-      " #   Column                                    Non-Null Count  Dtype  \n",
-      "---  ------                                    --------------  -----  \n",
-      " 0   bron                                      2662 non-null   object \n",
-      " 1   VHA_code                                  1763 non-null   float64\n",
-      " 2   locatiebeschrijving                       2662 non-null   object \n",
-      " 3   datum                                     2662 non-null   object \n",
-      " 4   parameter                                 2662 non-null   object \n",
-      " 5   detectieconditie                          2662 non-null   object \n",
-      " 6   meetwaarde                                2662 non-null   float64\n",
-      " 7   meeteenheid                               2662 non-null   object \n",
-      " 8   motivatie_staalname                       2662 non-null   object \n",
-      " 9   medium                                    2662 non-null   object \n",
-      " 10  overschrijdingsfactor_tw                  0 non-null      float64\n",
-      " 11  beoordeling_tw                            0 non-null      float64\n",
-      " 12  potentieel_gebruik_bodem                  2662 non-null   object \n",
-      " 13  overschrijdingsfactor_vlarebo_bijlage_vi  0 non-null      float64\n",
-      " 14  beoordeling_bouwkundig_gebruik            0 non-null      float64\n",
-      " 15  X                                         2662 non-null   float64\n",
-      " 16  Y                                         2662 non-null   float64\n",
-      "dtypes: float64(8), object(9)\n",
-      "memory usage: 353.7+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "                  bron   VHA_code   \n0              VMM/ARW  6015780.0  \\\n1              VMM/ARW    31683.0   \n2              VMM/ARW  6015541.0   \n3  De Vlaamse Waterweg  6032063.0   \n4  De Vlaamse Waterweg  6032063.0   \n\n                                 locatiebeschrijving       datum parameter   \n0                   Eppegem, Brusselsestwg, opw brug  2021-06-03      PFOS  \\\n1  Anderlecht, Verwelkomingsstr/Internationalelaa...  2018-05-15      PFOS   \n2                      Ruisbroek, Broekweg, opw brug  2021-06-03      PFOS   \n3                                                     2021-06-11      PFOA   \n4                                                     2021-06-11      PFOS   \n\n  detectieconditie  meetwaarde meeteenheid motivatie_staalname   \n0                =       21.00    µg/kg ds      Routinemeetnet  \\\n1                <        0.25    µg/kg ds      Routinemeetnet   \n2                <        0.25    µg/kg ds      Routinemeetnet   \n3                <        0.20    µg/kg ds        baggerwerken   \n4                =        1.10    µg/kg ds        baggerwerken   \n\n                  medium  overschrijdingsfactor_tw  beoordeling_tw   \n0  Waterbodem - sediment                       NaN             NaN  \\\n1  Waterbodem - sediment                       NaN             NaN   \n2  Waterbodem - sediment                       NaN             NaN   \n3  Waterbodem - sediment                       NaN             NaN   \n4  Waterbodem - sediment                       NaN             NaN   \n\n  potentieel_gebruik_bodem  overschrijdingsfactor_vlarebo_bijlage_vi   \n0       Niet beoordeelbaar                                       NaN  \\\n1       Niet beoordeelbaar                                       NaN   \n2       Niet beoordeelbaar                                       NaN   \n3       Niet beoordeelbaar                                       NaN   \n4       Niet beoordeelbaar                                       NaN   \n\n   beoordeling_bouwkundig_gebruik         X         Y  \n0                             NaN  156111.0  183359.0  \n1                             NaN  145348.0  167154.0  \n2                             NaN  145554.0  164520.0  \n3                             NaN  124725.0  168872.0  \n4                             NaN  124725.0  168872.0  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>bron</th>\n      <th>VHA_code</th>\n      <th>locatiebeschrijving</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>motivatie_staalname</th>\n      <th>medium</th>\n      <th>overschrijdingsfactor_tw</th>\n      <th>beoordeling_tw</th>\n      <th>potentieel_gebruik_bodem</th>\n      <th>overschrijdingsfactor_vlarebo_bijlage_vi</th>\n      <th>beoordeling_bouwkundig_gebruik</th>\n      <th>X</th>\n      <th>Y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>VMM/ARW</td>\n      <td>6015780.0</td>\n      <td>Eppegem, Brusselsestwg, opw brug</td>\n      <td>2021-06-03</td>\n      <td>PFOS</td>\n      <td>=</td>\n      <td>21.00</td>\n      <td>µg/kg ds</td>\n      <td>Routinemeetnet</td>\n      <td>Waterbodem - sediment</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>Niet beoordeelbaar</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>156111.0</td>\n      <td>183359.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>VMM/ARW</td>\n      <td>31683.0</td>\n      <td>Anderlecht, Verwelkomingsstr/Internationalelaa...</td>\n      <td>2018-05-15</td>\n      <td>PFOS</td>\n      <td>&lt;</td>\n      <td>0.25</td>\n      <td>µg/kg ds</td>\n      <td>Routinemeetnet</td>\n      <td>Waterbodem - sediment</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>Niet beoordeelbaar</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>145348.0</td>\n      <td>167154.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>VMM/ARW</td>\n      <td>6015541.0</td>\n      <td>Ruisbroek, Broekweg, opw brug</td>\n      <td>2021-06-03</td>\n      <td>PFOS</td>\n      <td>&lt;</td>\n      <td>0.25</td>\n      <td>µg/kg ds</td>\n      <td>Routinemeetnet</td>\n      <td>Waterbodem - sediment</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>Niet beoordeelbaar</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>145554.0</td>\n      <td>164520.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>De Vlaamse Waterweg</td>\n      <td>6032063.0</td>\n      <td></td>\n      <td>2021-06-11</td>\n      <td>PFOA</td>\n      <td>&lt;</td>\n      <td>0.20</td>\n      <td>µg/kg ds</td>\n      <td>baggerwerken</td>\n      <td>Waterbodem - sediment</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>Niet beoordeelbaar</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>124725.0</td>\n      <td>168872.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>De Vlaamse Waterweg</td>\n      <td>6032063.0</td>\n      <td></td>\n      <td>2021-06-11</td>\n      <td>PFOS</td>\n      <td>=</td>\n      <td>1.10</td>\n      <td>µg/kg ds</td>\n      <td>baggerwerken</td>\n      <td>Waterbodem - sediment</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>Niet beoordeelbaar</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>124725.0</td>\n      <td>168872.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 16,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Soil_water_VMM\n",
-    "df[10].info()\n",
-    "df[10].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 17,
-   "id": "cba7cf5b",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:26.819654400Z",
-     "start_time": "2023-06-06T14:41:26.179328800Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "Index: 1159 entries, 0 to 1237\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count  Dtype  \n",
-      "---  ------             --------------  -----  \n",
-      " 0   id                 1159 non-null   int64  \n",
-      " 1   opdracht           1159 non-null   int64  \n",
-      " 2   pfasdossiernr      1159 non-null   int64  \n",
-      " 3   profielnaam        1159 non-null   object \n",
-      " 4   top_in_m           937 non-null    float64\n",
-      " 5   basis_in_m         937 non-null    float64\n",
-      " 6   jaar               1159 non-null   int64  \n",
-      " 7   datum              1159 non-null   object \n",
-      " 8   parameter          1159 non-null   object \n",
-      " 9   detectieconditie   1159 non-null   object \n",
-      " 10  meetwaarde         1159 non-null   float64\n",
-      " 11  meeteenheid        1159 non-null   object \n",
-      " 12  medium             1159 non-null   object \n",
-      " 13  profieltype        1159 non-null   object \n",
-      " 14  plaatsing_profiel  1159 non-null   object \n",
-      " 15  commentaar         1159 non-null   object \n",
-      " 16  x_ml72             1159 non-null   float64\n",
-      " 17  y_ml72             1159 non-null   float64\n",
-      "dtypes: float64(5), int64(4), object(9)\n",
-      "memory usage: 172.0+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr profielnaam  top_in_m  basis_in_m  jaar   \n0  32157495  13617019            732      ERM686       0.0         0.1  2021  \\\n1  32157496  13617019            732      ERM686       0.0         0.1  2021   \n2  32157497  13617019            732      ERM686       0.0         0.1  2021   \n3  32157498  13617019            732      ERM686       0.0         0.1  2021   \n4  32157499  13617019            732      ERM686       0.0         0.1  2021   \n\n        datum parameter detectieconditie  meetwaarde meeteenheid   \n0  2021-10-08      PFNS                <        0.20    µg/kg ds  \\\n1  2021-10-08      PFBA                =        0.82    µg/kg ds   \n2  2021-10-08     PFBSA                <        0.20    µg/kg ds   \n3  2021-10-08   6:2 FTS                <        0.21    µg/kg ds   \n4  2021-10-08    PFDoDS                <        0.32    µg/kg ds   \n\n                  medium profieltype plaatsing_profiel commentaar     x_ml72   \n0  Waterbodem - sediment      Boring        2021-09-28             146312.81  \\\n1  Waterbodem - sediment      Boring        2021-09-28             146312.81   \n2  Waterbodem - sediment      Boring        2021-09-28             146312.81   \n3  Waterbodem - sediment      Boring        2021-09-28             146312.81   \n4  Waterbodem - sediment      Boring        2021-09-28             146312.81   \n\n      y_ml72  \n0  213203.76  \n1  213203.76  \n2  213203.76  \n3  213203.76  \n4  213203.76  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>32157495</td>\n      <td>13617019</td>\n      <td>732</td>\n      <td>ERM686</td>\n      <td>0.0</td>\n      <td>0.1</td>\n      <td>2021</td>\n      <td>2021-10-08</td>\n      <td>PFNS</td>\n      <td>&lt;</td>\n      <td>0.20</td>\n      <td>µg/kg ds</td>\n      <td>Waterbodem - sediment</td>\n      <td>Boring</td>\n      <td>2021-09-28</td>\n      <td></td>\n      <td>146312.81</td>\n      <td>213203.76</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>32157496</td>\n      <td>13617019</td>\n      <td>732</td>\n      <td>ERM686</td>\n      <td>0.0</td>\n      <td>0.1</td>\n      <td>2021</td>\n      <td>2021-10-08</td>\n      <td>PFBA</td>\n      <td>=</td>\n      <td>0.82</td>\n      <td>µg/kg ds</td>\n      <td>Waterbodem - sediment</td>\n      <td>Boring</td>\n      <td>2021-09-28</td>\n      <td></td>\n      <td>146312.81</td>\n      <td>213203.76</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>32157497</td>\n      <td>13617019</td>\n      <td>732</td>\n      <td>ERM686</td>\n      <td>0.0</td>\n      <td>0.1</td>\n      <td>2021</td>\n      <td>2021-10-08</td>\n      <td>PFBSA</td>\n      <td>&lt;</td>\n      <td>0.20</td>\n      <td>µg/kg ds</td>\n      <td>Waterbodem - sediment</td>\n      <td>Boring</td>\n      <td>2021-09-28</td>\n      <td></td>\n      <td>146312.81</td>\n      <td>213203.76</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>32157498</td>\n      <td>13617019</td>\n      <td>732</td>\n      <td>ERM686</td>\n      <td>0.0</td>\n      <td>0.1</td>\n      <td>2021</td>\n      <td>2021-10-08</td>\n      <td>6:2 FTS</td>\n      <td>&lt;</td>\n      <td>0.21</td>\n      <td>µg/kg ds</td>\n      <td>Waterbodem - sediment</td>\n      <td>Boring</td>\n      <td>2021-09-28</td>\n      <td></td>\n      <td>146312.81</td>\n      <td>213203.76</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>32157499</td>\n      <td>13617019</td>\n      <td>732</td>\n      <td>ERM686</td>\n      <td>0.0</td>\n      <td>0.1</td>\n      <td>2021</td>\n      <td>2021-10-08</td>\n      <td>PFDoDS</td>\n      <td>&lt;</td>\n      <td>0.32</td>\n      <td>µg/kg ds</td>\n      <td>Waterbodem - sediment</td>\n      <td>Boring</td>\n      <td>2021-09-28</td>\n      <td></td>\n      <td>146312.81</td>\n      <td>213203.76</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 17,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Soil_water_OVAM\n",
-    "df[11].info()\n",
-    "df[11].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 18,
-   "id": "8fde559a",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:26.836513200Z",
-     "start_time": "2023-06-06T14:41:26.280191900Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "Index: 79 entries, 336 to 670\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count  Dtype  \n",
-      "---  ------             --------------  -----  \n",
-      " 0   id                 79 non-null     int64  \n",
-      " 1   opdracht           79 non-null     int64  \n",
-      " 2   pfasdossiernr      79 non-null     int64  \n",
-      " 3   profielnaam        79 non-null     object \n",
-      " 4   top_in_m           79 non-null     float64\n",
-      " 5   basis_in_m         79 non-null     float64\n",
-      " 6   jaar               79 non-null     int64  \n",
-      " 7   datum              79 non-null     object \n",
-      " 8   parameter          79 non-null     object \n",
-      " 9   detectieconditie   79 non-null     object \n",
-      " 10  meetwaarde         79 non-null     float64\n",
-      " 11  meeteenheid        79 non-null     object \n",
-      " 12  medium             79 non-null     object \n",
-      " 13  profieltype        79 non-null     object \n",
-      " 14  plaatsing_profiel  79 non-null     object \n",
-      " 15  commentaar         79 non-null     object \n",
-      " 16  x_ml72             79 non-null     float64\n",
-      " 17  y_ml72             79 non-null     float64\n",
-      "dtypes: float64(5), int64(4), object(9)\n",
-      "memory usage: 11.7+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "           id  opdracht  pfasdossiernr profielnaam  top_in_m  basis_in_m   \n336  33518013  14336493          98122        Sch3       0.0        0.15  \\\n337  33518014  14336493          98122        Sch3       0.0        0.15   \n338  33518015  14336493          98122        Sch3       0.0        0.15   \n339  33518016  14336493          98122        Sch3       0.0        0.15   \n340  33518017  14336493          98122        Sch3       0.0        0.15   \n\n     jaar       datum  parameter detectieconditie  meetwaarde meeteenheid   \n336  2022  2022-08-19       PFNS                <        0.47    µg/kg ds  \\\n337  2022  2022-08-19   MePFBSAA                <        0.47    µg/kg ds   \n338  2022  2022-08-19     PFTrDA                <        0.47    µg/kg ds   \n339  2022  2022-08-19  8:2 diPAP                <        0.47    µg/kg ds   \n340  2022  2022-08-19      PFODA                <        2.80    µg/kg ds   \n\n                                     medium profieltype plaatsing_profiel   \n336  Waterbodem - vaste deel van waterbodem      Boring        2022-08-12  \\\n337  Waterbodem - vaste deel van waterbodem      Boring        2022-08-12   \n338  Waterbodem - vaste deel van waterbodem      Boring        2022-08-12   \n339  Waterbodem - vaste deel van waterbodem      Boring        2022-08-12   \n340  Waterbodem - vaste deel van waterbodem      Boring        2022-08-12   \n\n    commentaar    x_ml72    y_ml72  \n336             156833.0  232877.0  \n337             156833.0  232877.0  \n338             156833.0  232877.0  \n339             156833.0  232877.0  \n340             156833.0  232877.0  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>336</th>\n      <td>33518013</td>\n      <td>14336493</td>\n      <td>98122</td>\n      <td>Sch3</td>\n      <td>0.0</td>\n      <td>0.15</td>\n      <td>2022</td>\n      <td>2022-08-19</td>\n      <td>PFNS</td>\n      <td>&lt;</td>\n      <td>0.47</td>\n      <td>µg/kg ds</td>\n      <td>Waterbodem - vaste deel van waterbodem</td>\n      <td>Boring</td>\n      <td>2022-08-12</td>\n      <td></td>\n      <td>156833.0</td>\n      <td>232877.0</td>\n    </tr>\n    <tr>\n      <th>337</th>\n      <td>33518014</td>\n      <td>14336493</td>\n      <td>98122</td>\n      <td>Sch3</td>\n      <td>0.0</td>\n      <td>0.15</td>\n      <td>2022</td>\n      <td>2022-08-19</td>\n      <td>MePFBSAA</td>\n      <td>&lt;</td>\n      <td>0.47</td>\n      <td>µg/kg ds</td>\n      <td>Waterbodem - vaste deel van waterbodem</td>\n      <td>Boring</td>\n      <td>2022-08-12</td>\n      <td></td>\n      <td>156833.0</td>\n      <td>232877.0</td>\n    </tr>\n    <tr>\n      <th>338</th>\n      <td>33518015</td>\n      <td>14336493</td>\n      <td>98122</td>\n      <td>Sch3</td>\n      <td>0.0</td>\n      <td>0.15</td>\n      <td>2022</td>\n      <td>2022-08-19</td>\n      <td>PFTrDA</td>\n      <td>&lt;</td>\n      <td>0.47</td>\n      <td>µg/kg ds</td>\n      <td>Waterbodem - vaste deel van waterbodem</td>\n      <td>Boring</td>\n      <td>2022-08-12</td>\n      <td></td>\n      <td>156833.0</td>\n      <td>232877.0</td>\n    </tr>\n    <tr>\n      <th>339</th>\n      <td>33518016</td>\n      <td>14336493</td>\n      <td>98122</td>\n      <td>Sch3</td>\n      <td>0.0</td>\n      <td>0.15</td>\n      <td>2022</td>\n      <td>2022-08-19</td>\n      <td>8:2 diPAP</td>\n      <td>&lt;</td>\n      <td>0.47</td>\n      <td>µg/kg ds</td>\n      <td>Waterbodem - vaste deel van waterbodem</td>\n      <td>Boring</td>\n      <td>2022-08-12</td>\n      <td></td>\n      <td>156833.0</td>\n      <td>232877.0</td>\n    </tr>\n    <tr>\n      <th>340</th>\n      <td>33518017</td>\n      <td>14336493</td>\n      <td>98122</td>\n      <td>Sch3</td>\n      <td>0.0</td>\n      <td>0.15</td>\n      <td>2022</td>\n      <td>2022-08-19</td>\n      <td>PFODA</td>\n      <td>&lt;</td>\n      <td>2.80</td>\n      <td>µg/kg ds</td>\n      <td>Waterbodem - vaste deel van waterbodem</td>\n      <td>Boring</td>\n      <td>2022-08-12</td>\n      <td></td>\n      <td>156833.0</td>\n      <td>232877.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 18,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Surface_water_VMM\n",
-    "df[12].info()\n",
-    "df[12].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 19,
-   "id": "13f04818",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:26.955869100Z",
-     "start_time": "2023-06-06T14:41:26.327596200Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 64840 entries, 0 to 64839\n",
-      "Data columns (total 12 columns):\n",
-      " #   Column            Non-Null Count  Dtype  \n",
-      "---  ------            --------------  -----  \n",
-      " 0   ogc_fid           64840 non-null  int64  \n",
-      " 1   meetplaats        64840 non-null  object \n",
-      " 2   x_mL72            64840 non-null  int64  \n",
-      " 3   y_mL72            64840 non-null  int64  \n",
-      " 4   jaar              64840 non-null  int64  \n",
-      " 5   datum             64840 non-null  object \n",
-      " 6   parameter         64840 non-null  object \n",
-      " 7   detectieconditie  64840 non-null  object \n",
-      " 8   meetwaarde        64840 non-null  float64\n",
-      " 9   meeteenheid       64840 non-null  object \n",
-      " 10  omschrijving      64662 non-null  object \n",
-      " 11  vha_segment_code  64840 non-null  int64  \n",
-      "dtypes: float64(1), int64(5), object(6)\n",
-      "memory usage: 5.9+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "   ogc_fid meetplaats  x_mL72  y_mL72  jaar       datum parameter   \n0        1     102500  228750  210246  2022  2022-02-16  10:2 FTS  \\\n1        2     102500  228750  210246  2022  2022-03-11  10:2 FTS   \n2        3     102500  228750  210246  2022  2022-04-14  10:2 FTS   \n3        4     102500  228750  210246  2022  2022-06-07  10:2 FTS   \n4        5     102500  228750  210246  2022  2022-07-29  10:2 FTS   \n\n  detectieconditie  meetwaarde meeteenheid   \n0                <        3.95        ng/l  \\\n1                <        3.95        ng/l   \n2                <        3.95        ng/l   \n3                <        3.95        ng/l   \n4                <        3.95        ng/l   \n\n                                        omschrijving  vha_segment_code  \n0  Kaulille, Broekerheide, oude hostieweg, dan za...           6030296  \n1  Kaulille, Broekerheide, oude hostieweg, dan za...           6030296  \n2  Kaulille, Broekerheide, oude hostieweg, dan za...           6030296  \n3  Kaulille, Broekerheide, oude hostieweg, dan za...           6030296  \n4  Kaulille, Broekerheide, oude hostieweg, dan za...           6030296  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>ogc_fid</th>\n      <th>meetplaats</th>\n      <th>x_mL72</th>\n      <th>y_mL72</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>omschrijving</th>\n      <th>vha_segment_code</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1</td>\n      <td>102500</td>\n      <td>228750</td>\n      <td>210246</td>\n      <td>2022</td>\n      <td>2022-02-16</td>\n      <td>10:2 FTS</td>\n      <td>&lt;</td>\n      <td>3.95</td>\n      <td>ng/l</td>\n      <td>Kaulille, Broekerheide, oude hostieweg, dan za...</td>\n      <td>6030296</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>2</td>\n      <td>102500</td>\n      <td>228750</td>\n      <td>210246</td>\n      <td>2022</td>\n      <td>2022-03-11</td>\n      <td>10:2 FTS</td>\n      <td>&lt;</td>\n      <td>3.95</td>\n      <td>ng/l</td>\n      <td>Kaulille, Broekerheide, oude hostieweg, dan za...</td>\n      <td>6030296</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>3</td>\n      <td>102500</td>\n      <td>228750</td>\n      <td>210246</td>\n      <td>2022</td>\n      <td>2022-04-14</td>\n      <td>10:2 FTS</td>\n      <td>&lt;</td>\n      <td>3.95</td>\n      <td>ng/l</td>\n      <td>Kaulille, Broekerheide, oude hostieweg, dan za...</td>\n      <td>6030296</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>4</td>\n      <td>102500</td>\n      <td>228750</td>\n      <td>210246</td>\n      <td>2022</td>\n      <td>2022-06-07</td>\n      <td>10:2 FTS</td>\n      <td>&lt;</td>\n      <td>3.95</td>\n      <td>ng/l</td>\n      <td>Kaulille, Broekerheide, oude hostieweg, dan za...</td>\n      <td>6030296</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>5</td>\n      <td>102500</td>\n      <td>228750</td>\n      <td>210246</td>\n      <td>2022</td>\n      <td>2022-07-29</td>\n      <td>10:2 FTS</td>\n      <td>&lt;</td>\n      <td>3.95</td>\n      <td>ng/l</td>\n      <td>Kaulille, Broekerheide, oude hostieweg, dan za...</td>\n      <td>6030296</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 19,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Surface_water_OVAM\n",
-    "df[13].info()\n",
-    "df[13].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 20,
-   "id": "2f35a17e",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:41:27.135580Z",
-     "start_time": "2023-06-06T14:41:26.432782600Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 2173 entries, 0 to 2172\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count  Dtype  \n",
-      "---  ------             --------------  -----  \n",
-      " 0   id                 2173 non-null   int64  \n",
-      " 1   opdracht           2173 non-null   int64  \n",
-      " 2   pfasdossiernr      2173 non-null   int64  \n",
-      " 3   profielnaam        2173 non-null   object \n",
-      " 4   top_in_m           1049 non-null   float64\n",
-      " 5   basis_in_m         1049 non-null   float64\n",
-      " 6   jaar               2173 non-null   int64  \n",
-      " 7   datum              2173 non-null   object \n",
-      " 8   parameter          2173 non-null   object \n",
-      " 9   detectieconditie   2173 non-null   object \n",
-      " 10  meetwaarde         2173 non-null   float64\n",
-      " 11  meeteenheid        2173 non-null   object \n",
-      " 12  medium             2173 non-null   object \n",
-      " 13  profieltype        2173 non-null   object \n",
-      " 14  plaatsing_profiel  1663 non-null   object \n",
-      " 15  commentaar         2173 non-null   object \n",
-      " 16  x_ml72             2173 non-null   float64\n",
-      " 17  y_ml72             2173 non-null   float64\n",
-      "dtypes: float64(5), int64(4), object(9)\n",
-      "memory usage: 305.7+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr profielnaam  top_in_m  basis_in_m  jaar   \n0  31427456  13269077            732          12       0.0         0.0  2018  \\\n1  31427457  13269077            732          12       0.0         0.0  2018   \n2  31427458  13269077            732          12       0.0         0.0  2018   \n3  31427459  13269077            732          12       0.0         0.0  2018   \n4  31427460  13269077            732          12       0.0         0.0  2018   \n\n        datum   parameter detectieconditie  meetwaarde meeteenheid   \n0  2018-07-09  PFHxStotal                =      34.600        µg/l  \\\n1  2018-07-09   PFOStotal                =     449.000        µg/l   \n2  2018-07-09   PFOAtotal                =     121.000        µg/l   \n3  2018-07-09  PFOSAtotal                =       0.655        µg/l   \n4  2018-01-22  PFHxStotal                =       9.850        µg/l   \n\n             medium profieltype plaatsing_profiel commentaar     x_ml72   \n0  Oppervlaktewater       Staal               NaN             147674.05  \\\n1  Oppervlaktewater       Staal               NaN             147674.05   \n2  Oppervlaktewater       Staal               NaN             147674.05   \n3  Oppervlaktewater       Staal               NaN             147674.05   \n4  Oppervlaktewater       Staal               NaN             147674.05   \n\n      y_ml72  \n0  213145.33  \n1  213145.33  \n2  213145.33  \n3  213145.33  \n4  213145.33  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>31427456</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>12</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2018</td>\n      <td>2018-07-09</td>\n      <td>PFHxStotal</td>\n      <td>=</td>\n      <td>34.600</td>\n      <td>µg/l</td>\n      <td>Oppervlaktewater</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147674.05</td>\n      <td>213145.33</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>31427457</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>12</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2018</td>\n      <td>2018-07-09</td>\n      <td>PFOStotal</td>\n      <td>=</td>\n      <td>449.000</td>\n      <td>µg/l</td>\n      <td>Oppervlaktewater</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147674.05</td>\n      <td>213145.33</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>31427458</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>12</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2018</td>\n      <td>2018-07-09</td>\n      <td>PFOAtotal</td>\n      <td>=</td>\n      <td>121.000</td>\n      <td>µg/l</td>\n      <td>Oppervlaktewater</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147674.05</td>\n      <td>213145.33</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>31427459</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>12</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2018</td>\n      <td>2018-07-09</td>\n      <td>PFOSAtotal</td>\n      <td>=</td>\n      <td>0.655</td>\n      <td>µg/l</td>\n      <td>Oppervlaktewater</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147674.05</td>\n      <td>213145.33</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>31427460</td>\n      <td>13269077</td>\n      <td>732</td>\n      <td>12</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>2018</td>\n      <td>2018-01-22</td>\n      <td>PFHxStotal</td>\n      <td>=</td>\n      <td>9.850</td>\n      <td>µg/l</td>\n      <td>Oppervlaktewater</td>\n      <td>Staal</td>\n      <td>NaN</td>\n      <td></td>\n      <td>147674.05</td>\n      <td>213145.33</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 20,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Waste_water_VMM\n",
-    "df[14].info()\n",
-    "df[14].head()"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "6b126df7",
-   "metadata": {},
-   "source": [
-    "### Example 2 : You only want to download the groundwater data of Flanders"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 21,
-   "id": "90944b3b",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:42:46.180553300Z",
-     "start_time": "2023-06-06T14:41:26.511020900Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:41:26.586\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mgroundwater\u001B[0m:\u001B[36m230\u001B[0m - \u001B[1mDownloading groundwater data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n",
-      "[000/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/233] ccccccccccccccccccccccccccccccccc\n",
-      "[000/001] .\n",
-      "[000/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/229] ccccccccccccccccccccccccccccc\n",
-      "[000/012] ............\n",
-      "[000/001] .\n"
-     ]
-    }
-   ],
-   "source": [
-    "medium = ['groundwater']\n",
-    "location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders\n",
-    "rd = RequestPFASdata()\n",
-    "df = rd.main(medium, location=location, max_features=None)[0]"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 22,
-   "id": "a2aa4cb1",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:42:46.244336200Z",
-     "start_time": "2023-06-06T14:42:46.188635500Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 10817 entries, 0 to 10816\n",
-      "Data columns (total 20 columns):\n",
-      " #   Column                        Non-Null Count  Dtype         \n",
-      "---  ------                        --------------  -----         \n",
-      " 0   pkey_grondwatermonster        10817 non-null  object        \n",
-      " 1   grondwatermonsternummer       10817 non-null  object        \n",
-      " 2   pkey_grondwaterlocatie        10817 non-null  object        \n",
-      " 3   gw_id                         10817 non-null  object        \n",
-      " 4   pkey_filter                   10817 non-null  object        \n",
-      " 5   filternummer                  10817 non-null  object        \n",
-      " 6   x                             10817 non-null  float64       \n",
-      " 7   y                             10817 non-null  float64       \n",
-      " 8   start_grondwaterlocatie_mtaw  10817 non-null  float64       \n",
-      " 9   gemeente                      10817 non-null  object        \n",
-      " 10  datum_monstername             10817 non-null  datetime64[ns]\n",
-      " 11  parametergroep                10817 non-null  object        \n",
-      " 12  parameter                     10817 non-null  object        \n",
-      " 13  detectie                      9377 non-null   object        \n",
-      " 14  waarde                        10817 non-null  float64       \n",
-      " 15  eenheid                       10817 non-null  object        \n",
-      " 16  veld_labo                     10817 non-null  object        \n",
-      " 17  aquifer_code                  10817 non-null  object        \n",
-      " 18  diepte_onderkant_filter       10817 non-null  float64       \n",
-      " 19  lengte_filter                 10817 non-null  float64       \n",
-      "dtypes: datetime64[ns](1), float64(6), object(13)\n",
-      "memory usage: 1.7+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "                              pkey_grondwatermonster grondwatermonsternummer   \n0  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101  \\\n1  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n2  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n3  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n4  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n\n                              pkey_grondwaterlocatie     gw_id   \n0  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2  \\\n1  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n2  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n3  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n4  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n\n                                         pkey_filter filternummer   \n0  https://www.dov.vlaanderen.be/data/filter/2003...            2  \\\n1  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n2  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n3  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n4  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n\n              x             y  start_grondwaterlocatie_mtaw gemeente   \n0  143922.46875  214154.21875                           3.0  Beveren  \\\n1  143922.46875  214154.21875                           3.0  Beveren   \n2  143922.46875  214154.21875                           3.0  Beveren   \n3  143922.46875  214154.21875                           3.0  Beveren   \n4  143922.46875  214154.21875                           3.0  Beveren   \n\n  datum_monstername            parametergroep  parameter detectie  waarde   \n0        2021-07-27  Grondwater_chemisch_PFAS      PFOSA        <     1.0  \\\n1        2021-07-27  Grondwater_chemisch_PFAS       PFOA      NaN     2.0   \n2        2021-07-27  Grondwater_chemisch_PFAS       PFDA        <     1.0   \n3        2021-07-27  Grondwater_chemisch_PFAS  PFOStotal      NaN     1.0   \n4        2021-07-27  Grondwater_chemisch_PFAS       PFBS      NaN    32.0   \n\n  eenheid veld_labo aquifer_code  diepte_onderkant_filter  lengte_filter  \n0    ng/l      LABO         0233                      5.0            0.5  \n1    ng/l      LABO         0233                      5.0            0.5  \n2    ng/l      LABO         0233                      5.0            0.5  \n3    ng/l      LABO         0233                      5.0            0.5  \n4    ng/l      LABO         0233                      5.0            0.5  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>pkey_grondwatermonster</th>\n      <th>grondwatermonsternummer</th>\n      <th>pkey_grondwaterlocatie</th>\n      <th>gw_id</th>\n      <th>pkey_filter</th>\n      <th>filternummer</th>\n      <th>x</th>\n      <th>y</th>\n      <th>start_grondwaterlocatie_mtaw</th>\n      <th>gemeente</th>\n      <th>datum_monstername</th>\n      <th>parametergroep</th>\n      <th>parameter</th>\n      <th>detectie</th>\n      <th>waarde</th>\n      <th>eenheid</th>\n      <th>veld_labo</th>\n      <th>aquifer_code</th>\n      <th>diepte_onderkant_filter</th>\n      <th>lengte_filter</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFOSA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFOA</td>\n      <td>NaN</td>\n      <td>2.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFDA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFOStotal</td>\n      <td>NaN</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFBS</td>\n      <td>NaN</td>\n      <td>32.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 22,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Groundwater_VMM\n",
-    "df[0].info()\n",
-    "df[0].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 23,
-   "id": "95f23dc0",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:42:46.537840400Z",
-     "start_time": "2023-06-06T14:42:46.257532900Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 110860 entries, 0 to 110859\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count   Dtype  \n",
-      "---  ------             --------------   -----  \n",
-      " 0   id                 110860 non-null  int64  \n",
-      " 1   opdracht           110860 non-null  int64  \n",
-      " 2   pfasdossiernr      110860 non-null  int64  \n",
-      " 3   profielnaam        110860 non-null  object \n",
-      " 4   top_in_m           110769 non-null  float64\n",
-      " 5   basis_in_m         110769 non-null  float64\n",
-      " 6   jaar               110860 non-null  int64  \n",
-      " 7   datum              110860 non-null  object \n",
-      " 8   parameter          110860 non-null  object \n",
-      " 9   detectieconditie   110860 non-null  object \n",
-      " 10  meetwaarde         110860 non-null  float64\n",
-      " 11  meeteenheid        110741 non-null  object \n",
-      " 12  medium             110860 non-null  object \n",
-      " 13  profieltype        110860 non-null  object \n",
-      " 14  plaatsing_profiel  108731 non-null  object \n",
-      " 15  commentaar         110860 non-null  object \n",
-      " 16  x_ml72             110860 non-null  float64\n",
-      " 17  y_ml72             110860 non-null  float64\n",
-      "dtypes: float64(5), int64(4), object(9)\n",
-      "memory usage: 15.2+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr profielnaam  top_in_m  basis_in_m  jaar   \n0  31063070  13077062           6180        PB31       0.2         2.2  2021  \\\n1  31063071  13077062           6180        PB31       0.2         2.2  2021   \n2  31063072  13077062           6180        PB31       0.2         2.2  2021   \n3  31063073  13077062           6180        PB31       0.2         2.2  2021   \n4  31063074  13077062           6180        PB31       0.2         2.2  2021   \n\n        datum parameter detectieconditie  meetwaarde meeteenheid      medium   \n0  2021-06-16     PFHpS                <        0.02        µg/l  Grondwater  \\\n1  2021-06-16      PFBS                <        0.02        µg/l  Grondwater   \n2  2021-06-16   HFPO-DA                <        0.02        µg/l  Grondwater   \n3  2021-06-16     PFODA                <        0.02        µg/l  Grondwater   \n4  2021-06-16      PFBA                <        0.02        µg/l  Grondwater   \n\n  profieltype plaatsing_profiel commentaar    x_ml72    y_ml72  \n0    Peilbuis               NaN             237529.0  204908.0  \n1    Peilbuis               NaN             237529.0  204908.0  \n2    Peilbuis               NaN             237529.0  204908.0  \n3    Peilbuis               NaN             237529.0  204908.0  \n4    Peilbuis               NaN             237529.0  204908.0  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>31063070</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFHpS</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>31063071</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFBS</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>31063072</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>HFPO-DA</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>31063073</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFODA</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>31063074</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFBA</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 23,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Groundwater_OVAM\n",
-    "df[1].info()\n",
-    "df[1].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 24,
-   "id": "7b538bef",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:42:46.537840400Z",
-     "start_time": "2023-06-06T14:42:46.425602Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 5595 entries, 0 to 5594\n",
-      "Data columns (total 14 columns):\n",
-      " #   Column              Non-Null Count  Dtype  \n",
-      "---  ------              --------------  -----  \n",
-      " 0   projectdeel         5595 non-null   object \n",
-      " 1   peilbuis            5595 non-null   object \n",
-      " 2   filter_van_m        4778 non-null   float64\n",
-      " 3   filter_tot_m        5122 non-null   float64\n",
-      " 4   nummer              5595 non-null   int64  \n",
-      " 5   analysemonster      5595 non-null   object \n",
-      " 6   datum_bemonstering  5595 non-null   object \n",
-      " 7   gegevens            5595 non-null   object \n",
-      " 8   parameter           5595 non-null   object \n",
-      " 9   detectieconditie    5595 non-null   object \n",
-      " 10  waarde              5595 non-null   float64\n",
-      " 11  eenheid             5595 non-null   object \n",
-      " 12  x_ml72              5595 non-null   float64\n",
-      " 13  y_ml72              5595 non-null   float64\n",
-      "dtypes: float64(5), int64(1), object(8)\n",
-      "memory usage: 612.1+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "  projectdeel       peilbuis  filter_van_m  filter_tot_m  nummer   \n0        R1O1           PBC3           NaN          14.9     182  \\\n1        R1O1           P406           4.1           6.1      88   \n2          KZ    StadAnt_280           3.4           4.4     248   \n3        R1O1          P402a           9.1          10.1      77   \n4        STLO  PFAS-Diep-PB5          21.0          23.0     195   \n\n                    analysemonster datum_bemonstering    gegevens parameter   \n0                             PBC3         2022/02/04   RoTS/WiBo     PFHxS  \\\n1                           LD_406         2021/09/23   RoTS/WiBo   8:2 FTS   \n2      StadAnt_280-1-1 StadAnt_280         2022/01/25  RoTS/Sweco    PFHxDA   \n3                          LD_402a         2021/08/19   RoTS/WiBo  10:2 FTS   \n4  PFAS-Diep-PB5-1-2 PFAS-Diep-PB5         2021/12/08  RoTS/Sweco    PFHxDA   \n\n  detectieconditie  waarde eenheid         x_ml72        y_ml72  \n0                =     5.0    ng/l  154735.956833  213286.10449  \n1                <     2.0    ng/l  154457.340000  213702.00000  \n2                <     1.0    ng/l  152803.809990  214595.20000  \n3                <     4.0    ng/l  154374.470000  213884.06000  \n4                <     1.0    ng/l  149800.908600  214023.70810  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>projectdeel</th>\n      <th>peilbuis</th>\n      <th>filter_van_m</th>\n      <th>filter_tot_m</th>\n      <th>nummer</th>\n      <th>analysemonster</th>\n      <th>datum_bemonstering</th>\n      <th>gegevens</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>waarde</th>\n      <th>eenheid</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>R1O1</td>\n      <td>PBC3</td>\n      <td>NaN</td>\n      <td>14.9</td>\n      <td>182</td>\n      <td>PBC3</td>\n      <td>2022/02/04</td>\n      <td>RoTS/WiBo</td>\n      <td>PFHxS</td>\n      <td>=</td>\n      <td>5.0</td>\n      <td>ng/l</td>\n      <td>154735.956833</td>\n      <td>213286.10449</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>R1O1</td>\n      <td>P406</td>\n      <td>4.1</td>\n      <td>6.1</td>\n      <td>88</td>\n      <td>LD_406</td>\n      <td>2021/09/23</td>\n      <td>RoTS/WiBo</td>\n      <td>8:2 FTS</td>\n      <td>&lt;</td>\n      <td>2.0</td>\n      <td>ng/l</td>\n      <td>154457.340000</td>\n      <td>213702.00000</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>KZ</td>\n      <td>StadAnt_280</td>\n      <td>3.4</td>\n      <td>4.4</td>\n      <td>248</td>\n      <td>StadAnt_280-1-1 StadAnt_280</td>\n      <td>2022/01/25</td>\n      <td>RoTS/Sweco</td>\n      <td>PFHxDA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>152803.809990</td>\n      <td>214595.20000</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>R1O1</td>\n      <td>P402a</td>\n      <td>9.1</td>\n      <td>10.1</td>\n      <td>77</td>\n      <td>LD_402a</td>\n      <td>2021/08/19</td>\n      <td>RoTS/WiBo</td>\n      <td>10:2 FTS</td>\n      <td>&lt;</td>\n      <td>4.0</td>\n      <td>ng/l</td>\n      <td>154374.470000</td>\n      <td>213884.06000</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>STLO</td>\n      <td>PFAS-Diep-PB5</td>\n      <td>21.0</td>\n      <td>23.0</td>\n      <td>195</td>\n      <td>PFAS-Diep-PB5-1-2 PFAS-Diep-PB5</td>\n      <td>2021/12/08</td>\n      <td>RoTS/Sweco</td>\n      <td>PFHxDA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>149800.908600</td>\n      <td>214023.70810</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 24,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Groundwater_Lantis\n",
-    "df[2].info()\n",
-    "df[2].head()"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "0444110f",
-   "metadata": {},
-   "source": [
-    "### Example 3 : You want to download the soil and groundwater data of Flanders"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 25,
-   "id": "b6782949",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:46:04.290594600Z",
-     "start_time": "2023-06-06T14:42:46.494890200Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:42:46.505\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36msoil\u001B[0m:\u001B[36m423\u001B[0m - \u001B[1mDownloading soil data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/018] ..................\n",
-      "[000/011] ...........\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "\u001B[32m2023-06-06 16:44:42.813\u001B[0m | \u001B[1mINFO    \u001B[0m | \u001B[36mPFAS_concentrations\u001B[0m:\u001B[36mgroundwater\u001B[0m:\u001B[36m230\u001B[0m - \u001B[1mDownloading groundwater data\u001B[0m\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[000/001] .\n",
-      "[000/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/233] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/233] ccccccccccccccccccccccccccccccccc\n",
-      "[000/001] .\n",
-      "[000/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[050/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[100/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[150/229] cccccccccccccccccccccccccccccccccccccccccccccccccc\n",
-      "[200/229] ccccccccccccccccccccccccccccc\n",
-      "[000/012] ............\n",
-      "[000/001] .\n"
-     ]
-    }
-   ],
-   "source": [
-    "medium = ['soil', 'groundwater']\n",
-    "location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders\n",
-    "rd = RequestPFASdata()\n",
-    "df = rd.main(medium, location=location, max_features=None)[0]"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 26,
-   "id": "e3efeef8",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:46:04.518073500Z",
-     "start_time": "2023-06-06T14:46:04.303040Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 172249 entries, 0 to 172248\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count   Dtype  \n",
-      "---  ------             --------------   -----  \n",
-      " 0   id                 172249 non-null  int64  \n",
-      " 1   opdracht           172249 non-null  int64  \n",
-      " 2   pfasdossiernr      172249 non-null  int64  \n",
-      " 3   profielnaam        172249 non-null  object \n",
-      " 4   top_in_m           172249 non-null  float64\n",
-      " 5   basis_in_m         172249 non-null  float64\n",
-      " 6   jaar               172249 non-null  int64  \n",
-      " 7   datum              172249 non-null  object \n",
-      " 8   parameter          172249 non-null  object \n",
-      " 9   detectieconditie   172249 non-null  object \n",
-      " 10  meetwaarde         172249 non-null  float64\n",
-      " 11  meeteenheid        172249 non-null  object \n",
-      " 12  medium             172249 non-null  object \n",
-      " 13  profieltype        172249 non-null  object \n",
-      " 14  plaatsing_profiel  167612 non-null  object \n",
-      " 15  commentaar         172249 non-null  object \n",
-      " 16  x_ml72             172249 non-null  float64\n",
-      " 17  y_ml72             172249 non-null  float64\n",
-      "dtypes: float64(5), int64(4), object(9)\n",
-      "memory usage: 23.7+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr profielnaam  top_in_m  basis_in_m  jaar   \n0  31063144  13077062           6180         108       0.5         0.7  2021  \\\n1  31063147  13077062           6180         108       0.5         0.7  2021   \n2  31063151  13077062           6180         108       0.5         0.7  2021   \n3  31063157  13077062           6180         108       0.5         0.7  2021   \n4  31063159  13077062           6180         108       0.5         0.7  2021   \n\n        datum   parameter detectieconditie  meetwaarde meeteenheid   \n0  2021-06-01  PFHxStotal                <         0.2    µg/kg ds  \\\n1  2021-06-01        PFPA                <         0.2    µg/kg ds   \n2  2021-06-01   8:2 diPAP                <         0.2    µg/kg ds   \n3  2021-06-01       PFPeS                <         0.2    µg/kg ds   \n4  2021-06-01        PFNS                <         0.2    µg/kg ds   \n\n                    medium profieltype plaatsing_profiel commentaar    x_ml72   \n0  Vaste deel van de aarde      Boring        2021-05-21             237521.0  \\\n1  Vaste deel van de aarde      Boring        2021-05-21             237521.0   \n2  Vaste deel van de aarde      Boring        2021-05-21             237521.0   \n3  Vaste deel van de aarde      Boring        2021-05-21             237521.0   \n4  Vaste deel van de aarde      Boring        2021-05-21             237521.0   \n\n     y_ml72  \n0  204927.0  \n1  204927.0  \n2  204927.0  \n3  204927.0  \n4  204927.0  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>31063144</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>108</td>\n      <td>0.5</td>\n      <td>0.7</td>\n      <td>2021</td>\n      <td>2021-06-01</td>\n      <td>PFHxStotal</td>\n      <td>&lt;</td>\n      <td>0.2</td>\n      <td>µg/kg ds</td>\n      <td>Vaste deel van de aarde</td>\n      <td>Boring</td>\n      <td>2021-05-21</td>\n      <td></td>\n      <td>237521.0</td>\n      <td>204927.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>31063147</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>108</td>\n      <td>0.5</td>\n      <td>0.7</td>\n      <td>2021</td>\n      <td>2021-06-01</td>\n      <td>PFPA</td>\n      <td>&lt;</td>\n      <td>0.2</td>\n      <td>µg/kg ds</td>\n      <td>Vaste deel van de aarde</td>\n      <td>Boring</td>\n      <td>2021-05-21</td>\n      <td></td>\n      <td>237521.0</td>\n      <td>204927.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>31063151</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>108</td>\n      <td>0.5</td>\n      <td>0.7</td>\n      <td>2021</td>\n      <td>2021-06-01</td>\n      <td>8:2 diPAP</td>\n      <td>&lt;</td>\n      <td>0.2</td>\n      <td>µg/kg ds</td>\n      <td>Vaste deel van de aarde</td>\n      <td>Boring</td>\n      <td>2021-05-21</td>\n      <td></td>\n      <td>237521.0</td>\n      <td>204927.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>31063157</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>108</td>\n      <td>0.5</td>\n      <td>0.7</td>\n      <td>2021</td>\n      <td>2021-06-01</td>\n      <td>PFPeS</td>\n      <td>&lt;</td>\n      <td>0.2</td>\n      <td>µg/kg ds</td>\n      <td>Vaste deel van de aarde</td>\n      <td>Boring</td>\n      <td>2021-05-21</td>\n      <td></td>\n      <td>237521.0</td>\n      <td>204927.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>31063159</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>108</td>\n      <td>0.5</td>\n      <td>0.7</td>\n      <td>2021</td>\n      <td>2021-06-01</td>\n      <td>PFNS</td>\n      <td>&lt;</td>\n      <td>0.2</td>\n      <td>µg/kg ds</td>\n      <td>Vaste deel van de aarde</td>\n      <td>Boring</td>\n      <td>2021-05-21</td>\n      <td></td>\n      <td>237521.0</td>\n      <td>204927.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 26,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Soil_OVAM\n",
-    "df[0].info()\n",
-    "df[0].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 27,
-   "id": "d92cf015",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:46:04.734415600Z",
-     "start_time": "2023-06-06T14:46:04.526339200Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 100798 entries, 0 to 100797\n",
-      "Data columns (total 14 columns):\n",
-      " #   Column              Non-Null Count   Dtype  \n",
-      "---  ------              --------------   -----  \n",
-      " 0   projectdeel         100681 non-null  object \n",
-      " 1   boring              100798 non-null  object \n",
-      " 2   diepte_van_m        100798 non-null  float64\n",
-      " 3   diepte_tot_m        100798 non-null  float64\n",
-      " 4   nummer              100798 non-null  int64  \n",
-      " 5   analysemonster      100798 non-null  object \n",
-      " 6   datum_bemonstering  92299 non-null   object \n",
-      " 7   gegevens            100798 non-null  object \n",
-      " 8   parameter           100798 non-null  object \n",
-      " 9   detectieconditie    100798 non-null  object \n",
-      " 10  waarde              100798 non-null  float64\n",
-      " 11  eenheid             100798 non-null  object \n",
-      " 12  x_ml72              100798 non-null  float64\n",
-      " 13  y_ml72              100798 non-null  float64\n",
-      "dtypes: float64(5), int64(1), object(8)\n",
-      "memory usage: 10.8+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "  projectdeel  boring  diepte_van_m  diepte_tot_m  nummer analysemonster   \n0          ST  B40017           0.0           0.5       1        MM40001  \\\n1          ST  B40017           0.0           0.5       1        MM40001   \n2          ST  B40017           0.0           0.5       1        MM40001   \n3          ST  B40017           0.0           0.5       1        MM40001   \n4          ST  B40017           0.0           0.5       1        MM40001   \n\n  datum_bemonstering    gegevens                 parameter detectieconditie   \n0         2016-08-25  RoTS/Sweco               totaal PFAS                =  \\\n1         2016-08-25  RoTS/Sweco  totaal PFAS kwantitatief                =   \n2         2016-08-25  RoTS/Sweco    totaal PFAS indicatief                =   \n3         2016-08-25  RoTS/Sweco                  som PFOA                <   \n4         2016-08-25  RoTS/Sweco                  som PFOS                =   \n\n   waarde   eenheid     x_ml72     y_ml72  \n0     7.3  µg/kg ds  149401.99  213878.69  \n1     7.3  µg/kg ds  149401.99  213878.69  \n2     0.0  µg/kg ds  149401.99  213878.69  \n3     5.0  µg/kg ds  149401.99  213878.69  \n4     7.3  µg/kg ds  149401.99  213878.69  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>projectdeel</th>\n      <th>boring</th>\n      <th>diepte_van_m</th>\n      <th>diepte_tot_m</th>\n      <th>nummer</th>\n      <th>analysemonster</th>\n      <th>datum_bemonstering</th>\n      <th>gegevens</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>waarde</th>\n      <th>eenheid</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>ST</td>\n      <td>B40017</td>\n      <td>0.0</td>\n      <td>0.5</td>\n      <td>1</td>\n      <td>MM40001</td>\n      <td>2016-08-25</td>\n      <td>RoTS/Sweco</td>\n      <td>totaal PFAS</td>\n      <td>=</td>\n      <td>7.3</td>\n      <td>µg/kg ds</td>\n      <td>149401.99</td>\n      <td>213878.69</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>ST</td>\n      <td>B40017</td>\n      <td>0.0</td>\n      <td>0.5</td>\n      <td>1</td>\n      <td>MM40001</td>\n      <td>2016-08-25</td>\n      <td>RoTS/Sweco</td>\n      <td>totaal PFAS kwantitatief</td>\n      <td>=</td>\n      <td>7.3</td>\n      <td>µg/kg ds</td>\n      <td>149401.99</td>\n      <td>213878.69</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>ST</td>\n      <td>B40017</td>\n      <td>0.0</td>\n      <td>0.5</td>\n      <td>1</td>\n      <td>MM40001</td>\n      <td>2016-08-25</td>\n      <td>RoTS/Sweco</td>\n      <td>totaal PFAS indicatief</td>\n      <td>=</td>\n      <td>0.0</td>\n      <td>µg/kg ds</td>\n      <td>149401.99</td>\n      <td>213878.69</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>ST</td>\n      <td>B40017</td>\n      <td>0.0</td>\n      <td>0.5</td>\n      <td>1</td>\n      <td>MM40001</td>\n      <td>2016-08-25</td>\n      <td>RoTS/Sweco</td>\n      <td>som PFOA</td>\n      <td>&lt;</td>\n      <td>5.0</td>\n      <td>µg/kg ds</td>\n      <td>149401.99</td>\n      <td>213878.69</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>ST</td>\n      <td>B40017</td>\n      <td>0.0</td>\n      <td>0.5</td>\n      <td>1</td>\n      <td>MM40001</td>\n      <td>2016-08-25</td>\n      <td>RoTS/Sweco</td>\n      <td>som PFOS</td>\n      <td>=</td>\n      <td>7.3</td>\n      <td>µg/kg ds</td>\n      <td>149401.99</td>\n      <td>213878.69</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 27,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Soil_Lantis\n",
-    "df[1].info()\n",
-    "df[1].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 28,
-   "id": "115fe89d",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:46:04.858554700Z",
-     "start_time": "2023-06-06T14:46:04.698519700Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 10817 entries, 0 to 10816\n",
-      "Data columns (total 20 columns):\n",
-      " #   Column                        Non-Null Count  Dtype         \n",
-      "---  ------                        --------------  -----         \n",
-      " 0   pkey_grondwatermonster        10817 non-null  object        \n",
-      " 1   grondwatermonsternummer       10817 non-null  object        \n",
-      " 2   pkey_grondwaterlocatie        10817 non-null  object        \n",
-      " 3   gw_id                         10817 non-null  object        \n",
-      " 4   pkey_filter                   10817 non-null  object        \n",
-      " 5   filternummer                  10817 non-null  object        \n",
-      " 6   x                             10817 non-null  float64       \n",
-      " 7   y                             10817 non-null  float64       \n",
-      " 8   start_grondwaterlocatie_mtaw  10817 non-null  float64       \n",
-      " 9   gemeente                      10817 non-null  object        \n",
-      " 10  datum_monstername             10817 non-null  datetime64[ns]\n",
-      " 11  parametergroep                10817 non-null  object        \n",
-      " 12  parameter                     10817 non-null  object        \n",
-      " 13  detectie                      9377 non-null   object        \n",
-      " 14  waarde                        10817 non-null  float64       \n",
-      " 15  eenheid                       10817 non-null  object        \n",
-      " 16  veld_labo                     10817 non-null  object        \n",
-      " 17  aquifer_code                  10817 non-null  object        \n",
-      " 18  diepte_onderkant_filter       10817 non-null  float64       \n",
-      " 19  lengte_filter                 10817 non-null  float64       \n",
-      "dtypes: datetime64[ns](1), float64(6), object(13)\n",
-      "memory usage: 1.7+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "                              pkey_grondwatermonster grondwatermonsternummer   \n0  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101  \\\n1  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n2  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n3  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n4  https://www.dov.vlaanderen.be/data/watermonste...     861/61/2-F2/MPF2101   \n\n                              pkey_grondwaterlocatie     gw_id   \n0  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2  \\\n1  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n2  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n3  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n4  https://www.dov.vlaanderen.be/data/put/2017-00...  861/61/2   \n\n                                         pkey_filter filternummer   \n0  https://www.dov.vlaanderen.be/data/filter/2003...            2  \\\n1  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n2  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n3  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n4  https://www.dov.vlaanderen.be/data/filter/2003...            2   \n\n              x             y  start_grondwaterlocatie_mtaw gemeente   \n0  143922.46875  214154.21875                           3.0  Beveren  \\\n1  143922.46875  214154.21875                           3.0  Beveren   \n2  143922.46875  214154.21875                           3.0  Beveren   \n3  143922.46875  214154.21875                           3.0  Beveren   \n4  143922.46875  214154.21875                           3.0  Beveren   \n\n  datum_monstername            parametergroep  parameter detectie  waarde   \n0        2021-07-27  Grondwater_chemisch_PFAS      PFOSA        <     1.0  \\\n1        2021-07-27  Grondwater_chemisch_PFAS       PFOA      NaN     2.0   \n2        2021-07-27  Grondwater_chemisch_PFAS       PFDA        <     1.0   \n3        2021-07-27  Grondwater_chemisch_PFAS  PFOStotal      NaN     1.0   \n4        2021-07-27  Grondwater_chemisch_PFAS       PFBS      NaN    32.0   \n\n  eenheid veld_labo aquifer_code  diepte_onderkant_filter  lengte_filter  \n0    ng/l      LABO         0233                      5.0            0.5  \n1    ng/l      LABO         0233                      5.0            0.5  \n2    ng/l      LABO         0233                      5.0            0.5  \n3    ng/l      LABO         0233                      5.0            0.5  \n4    ng/l      LABO         0233                      5.0            0.5  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>pkey_grondwatermonster</th>\n      <th>grondwatermonsternummer</th>\n      <th>pkey_grondwaterlocatie</th>\n      <th>gw_id</th>\n      <th>pkey_filter</th>\n      <th>filternummer</th>\n      <th>x</th>\n      <th>y</th>\n      <th>start_grondwaterlocatie_mtaw</th>\n      <th>gemeente</th>\n      <th>datum_monstername</th>\n      <th>parametergroep</th>\n      <th>parameter</th>\n      <th>detectie</th>\n      <th>waarde</th>\n      <th>eenheid</th>\n      <th>veld_labo</th>\n      <th>aquifer_code</th>\n      <th>diepte_onderkant_filter</th>\n      <th>lengte_filter</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFOSA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFOA</td>\n      <td>NaN</td>\n      <td>2.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFDA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFOStotal</td>\n      <td>NaN</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>https://www.dov.vlaanderen.be/data/watermonste...</td>\n      <td>861/61/2-F2/MPF2101</td>\n      <td>https://www.dov.vlaanderen.be/data/put/2017-00...</td>\n      <td>861/61/2</td>\n      <td>https://www.dov.vlaanderen.be/data/filter/2003...</td>\n      <td>2</td>\n      <td>143922.46875</td>\n      <td>214154.21875</td>\n      <td>3.0</td>\n      <td>Beveren</td>\n      <td>2021-07-27</td>\n      <td>Grondwater_chemisch_PFAS</td>\n      <td>PFBS</td>\n      <td>NaN</td>\n      <td>32.0</td>\n      <td>ng/l</td>\n      <td>LABO</td>\n      <td>0233</td>\n      <td>5.0</td>\n      <td>0.5</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 28,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Groundwater_VMM\n",
-    "df[2].info()\n",
-    "df[2].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 29,
-   "id": "00a08a6c",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:46:05.122664400Z",
-     "start_time": "2023-06-06T14:46:04.769445500Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 110860 entries, 0 to 110859\n",
-      "Data columns (total 18 columns):\n",
-      " #   Column             Non-Null Count   Dtype  \n",
-      "---  ------             --------------   -----  \n",
-      " 0   id                 110860 non-null  int64  \n",
-      " 1   opdracht           110860 non-null  int64  \n",
-      " 2   pfasdossiernr      110860 non-null  int64  \n",
-      " 3   profielnaam        110860 non-null  object \n",
-      " 4   top_in_m           110769 non-null  float64\n",
-      " 5   basis_in_m         110769 non-null  float64\n",
-      " 6   jaar               110860 non-null  int64  \n",
-      " 7   datum              110860 non-null  object \n",
-      " 8   parameter          110860 non-null  object \n",
-      " 9   detectieconditie   110860 non-null  object \n",
-      " 10  meetwaarde         110860 non-null  float64\n",
-      " 11  meeteenheid        110741 non-null  object \n",
-      " 12  medium             110860 non-null  object \n",
-      " 13  profieltype        110860 non-null  object \n",
-      " 14  plaatsing_profiel  108731 non-null  object \n",
-      " 15  commentaar         110860 non-null  object \n",
-      " 16  x_ml72             110860 non-null  float64\n",
-      " 17  y_ml72             110860 non-null  float64\n",
-      "dtypes: float64(5), int64(4), object(9)\n",
-      "memory usage: 15.2+ MB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "         id  opdracht  pfasdossiernr profielnaam  top_in_m  basis_in_m  jaar   \n0  31063070  13077062           6180        PB31       0.2         2.2  2021  \\\n1  31063071  13077062           6180        PB31       0.2         2.2  2021   \n2  31063072  13077062           6180        PB31       0.2         2.2  2021   \n3  31063073  13077062           6180        PB31       0.2         2.2  2021   \n4  31063074  13077062           6180        PB31       0.2         2.2  2021   \n\n        datum parameter detectieconditie  meetwaarde meeteenheid      medium   \n0  2021-06-16     PFHpS                <        0.02        µg/l  Grondwater  \\\n1  2021-06-16      PFBS                <        0.02        µg/l  Grondwater   \n2  2021-06-16   HFPO-DA                <        0.02        µg/l  Grondwater   \n3  2021-06-16     PFODA                <        0.02        µg/l  Grondwater   \n4  2021-06-16      PFBA                <        0.02        µg/l  Grondwater   \n\n  profieltype plaatsing_profiel commentaar    x_ml72    y_ml72  \n0    Peilbuis               NaN             237529.0  204908.0  \n1    Peilbuis               NaN             237529.0  204908.0  \n2    Peilbuis               NaN             237529.0  204908.0  \n3    Peilbuis               NaN             237529.0  204908.0  \n4    Peilbuis               NaN             237529.0  204908.0  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>opdracht</th>\n      <th>pfasdossiernr</th>\n      <th>profielnaam</th>\n      <th>top_in_m</th>\n      <th>basis_in_m</th>\n      <th>jaar</th>\n      <th>datum</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>meetwaarde</th>\n      <th>meeteenheid</th>\n      <th>medium</th>\n      <th>profieltype</th>\n      <th>plaatsing_profiel</th>\n      <th>commentaar</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>31063070</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFHpS</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>31063071</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFBS</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>31063072</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>HFPO-DA</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>31063073</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFODA</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>31063074</td>\n      <td>13077062</td>\n      <td>6180</td>\n      <td>PB31</td>\n      <td>0.2</td>\n      <td>2.2</td>\n      <td>2021</td>\n      <td>2021-06-16</td>\n      <td>PFBA</td>\n      <td>&lt;</td>\n      <td>0.02</td>\n      <td>µg/l</td>\n      <td>Grondwater</td>\n      <td>Peilbuis</td>\n      <td>NaN</td>\n      <td></td>\n      <td>237529.0</td>\n      <td>204908.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 29,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Groundwater_OVAM\n",
-    "df[3].info()\n",
-    "df[3].head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 30,
-   "id": "66325260",
-   "metadata": {
-    "ExecuteTime": {
-     "end_time": "2023-06-06T14:46:05.146765500Z",
-     "start_time": "2023-06-06T14:46:05.005780500Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas.core.frame.DataFrame'>\n",
-      "RangeIndex: 5595 entries, 0 to 5594\n",
-      "Data columns (total 14 columns):\n",
-      " #   Column              Non-Null Count  Dtype  \n",
-      "---  ------              --------------  -----  \n",
-      " 0   projectdeel         5595 non-null   object \n",
-      " 1   peilbuis            5595 non-null   object \n",
-      " 2   filter_van_m        4778 non-null   float64\n",
-      " 3   filter_tot_m        5122 non-null   float64\n",
-      " 4   nummer              5595 non-null   int64  \n",
-      " 5   analysemonster      5595 non-null   object \n",
-      " 6   datum_bemonstering  5595 non-null   object \n",
-      " 7   gegevens            5595 non-null   object \n",
-      " 8   parameter           5595 non-null   object \n",
-      " 9   detectieconditie    5595 non-null   object \n",
-      " 10  waarde              5595 non-null   float64\n",
-      " 11  eenheid             5595 non-null   object \n",
-      " 12  x_ml72              5595 non-null   float64\n",
-      " 13  y_ml72              5595 non-null   float64\n",
-      "dtypes: float64(5), int64(1), object(8)\n",
-      "memory usage: 612.1+ KB\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": "  projectdeel       peilbuis  filter_van_m  filter_tot_m  nummer   \n0        R1O1           PBC3           NaN          14.9     182  \\\n1        R1O1           P406           4.1           6.1      88   \n2          KZ    StadAnt_280           3.4           4.4     248   \n3        R1O1          P402a           9.1          10.1      77   \n4        STLO  PFAS-Diep-PB5          21.0          23.0     195   \n\n                    analysemonster datum_bemonstering    gegevens parameter   \n0                             PBC3         2022/02/04   RoTS/WiBo     PFHxS  \\\n1                           LD_406         2021/09/23   RoTS/WiBo   8:2 FTS   \n2      StadAnt_280-1-1 StadAnt_280         2022/01/25  RoTS/Sweco    PFHxDA   \n3                          LD_402a         2021/08/19   RoTS/WiBo  10:2 FTS   \n4  PFAS-Diep-PB5-1-2 PFAS-Diep-PB5         2021/12/08  RoTS/Sweco    PFHxDA   \n\n  detectieconditie  waarde eenheid         x_ml72        y_ml72  \n0                =     5.0    ng/l  154735.956833  213286.10449  \n1                <     2.0    ng/l  154457.340000  213702.00000  \n2                <     1.0    ng/l  152803.809990  214595.20000  \n3                <     4.0    ng/l  154374.470000  213884.06000  \n4                <     1.0    ng/l  149800.908600  214023.70810  ",
-      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>projectdeel</th>\n      <th>peilbuis</th>\n      <th>filter_van_m</th>\n      <th>filter_tot_m</th>\n      <th>nummer</th>\n      <th>analysemonster</th>\n      <th>datum_bemonstering</th>\n      <th>gegevens</th>\n      <th>parameter</th>\n      <th>detectieconditie</th>\n      <th>waarde</th>\n      <th>eenheid</th>\n      <th>x_ml72</th>\n      <th>y_ml72</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>R1O1</td>\n      <td>PBC3</td>\n      <td>NaN</td>\n      <td>14.9</td>\n      <td>182</td>\n      <td>PBC3</td>\n      <td>2022/02/04</td>\n      <td>RoTS/WiBo</td>\n      <td>PFHxS</td>\n      <td>=</td>\n      <td>5.0</td>\n      <td>ng/l</td>\n      <td>154735.956833</td>\n      <td>213286.10449</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>R1O1</td>\n      <td>P406</td>\n      <td>4.1</td>\n      <td>6.1</td>\n      <td>88</td>\n      <td>LD_406</td>\n      <td>2021/09/23</td>\n      <td>RoTS/WiBo</td>\n      <td>8:2 FTS</td>\n      <td>&lt;</td>\n      <td>2.0</td>\n      <td>ng/l</td>\n      <td>154457.340000</td>\n      <td>213702.00000</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>KZ</td>\n      <td>StadAnt_280</td>\n      <td>3.4</td>\n      <td>4.4</td>\n      <td>248</td>\n      <td>StadAnt_280-1-1 StadAnt_280</td>\n      <td>2022/01/25</td>\n      <td>RoTS/Sweco</td>\n      <td>PFHxDA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>152803.809990</td>\n      <td>214595.20000</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>R1O1</td>\n      <td>P402a</td>\n      <td>9.1</td>\n      <td>10.1</td>\n      <td>77</td>\n      <td>LD_402a</td>\n      <td>2021/08/19</td>\n      <td>RoTS/WiBo</td>\n      <td>10:2 FTS</td>\n      <td>&lt;</td>\n      <td>4.0</td>\n      <td>ng/l</td>\n      <td>154374.470000</td>\n      <td>213884.06000</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>STLO</td>\n      <td>PFAS-Diep-PB5</td>\n      <td>21.0</td>\n      <td>23.0</td>\n      <td>195</td>\n      <td>PFAS-Diep-PB5-1-2 PFAS-Diep-PB5</td>\n      <td>2021/12/08</td>\n      <td>RoTS/Sweco</td>\n      <td>PFHxDA</td>\n      <td>&lt;</td>\n      <td>1.0</td>\n      <td>ng/l</td>\n      <td>149800.908600</td>\n      <td>214023.70810</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
-     },
-     "execution_count": 30,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Groundwater_Lantis\n",
-    "df[4].info()\n",
-    "df[4].head()\n"
-   ]
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": "Python 3 (ipykernel)",
-   "language": "python",
-   "name": "python3"
-  },
-  "language_info": {
-   "codemirror_mode": {
-    "name": "ipython",
-    "version": 3
-   },
-   "file_extension": ".py",
-   "mimetype": "text/x-python",
-   "name": "python",
-   "nbconvert_exporter": "python",
-   "pygments_lexer": "ipython3",
-   "version": "3.11.3"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
diff --git a/contrib/PFAS_concentrations/README.md b/contrib/PFAS_concentrations/README.md
deleted file mode 100644
index c1dc8b0..0000000
--- a/contrib/PFAS_concentrations/README.md
+++ /dev/null
@@ -1,281 +0,0 @@
-# Download the PFAS data from DOV
-
-Download all the publicly available PFAS data from [DOV](https://www.dov.vlaanderen.be/) through [pydov](https://pydov.readthedocs.io/en/stable/index.html).
-
-The dataset consist of the following PFAS data:
-
-- From [VMM](https://www.vmm.be/)
-    - surface water
-    - soilwater
-    - groundwater
-    - waste water
-    - biota
-
-- From [OVAM](https://ovam.vlaanderen.be/)
-    - rain water
-    - surface water
-    - soilwater
-    - groundwater
-    - soil
-    - effluent
-    - migration
-    - pure product
-
-- From [Lantis](https://www.lantis.be/)
-    - groundwater
-    - soil
-
-The different datasets can be saved as separate Excel tabs of one Excel file.
-
-## Installation for contribution
-
-Noticed a bug, want to improve the documentation? Great! Want to dive into the code directly on your local machine? Make sure to
-have the development environment setup:
-
-1. Fork the [project repository](https://github.com/DOV-Vlaanderen/pydov) by clicking on the 'Fork' button
-  near the top right of the page. This creates a copy of the code under your personal GitHub user account.
-2. Clone the [Github repo](https://github.com/DOV-Vlaanderen/pydov):
-
-
-    $ git clone https://github.com/YOUR-GITHUB-USERNAME/pydov
-
-3. Create a development environment, for example using [conda](https://docs.conda.io/projects/conda/en/stable/):
-
-
-    # using conda:
-      $ conda env create -f environment.yml
-
-4. Link the environment to the project in your IDE as interpreter.
-
-## Installation for use
-
-Create a development environment, for example using [conda](https://docs.conda.io/projects/conda/en/stable/):
-
-    # using conda:
-      $ conda env create -f environment.yml
-
-
-## Tutorial
-
-Possible mediums:
-
-<details>
-<summary>'all'</summary>
-
-    -> returns 15 dataframes
-        - Biota_VMM
-        - Effluent_OVAM
-        - Groundwater_VMM
-        - Groundwater_OVAM
-        - Groundwater_Lantis
-        - Migration_OVAM
-        - Pure_product_OVAM
-        - Rainwater_OVAM
-        - Soil_OVAM
-        - Soil_Lantis
-        - Soil_water_VMM
-        - Soil_water_OVAM
-        - Surface_water_VMM
-        - Surface_water_OVAM
-        - Waste_water_VMM
-</details>
-
-<details>
-<summary>'biota'</summary>
-
-    -> returns 1 dataframe
-        - Biota_VMM
-</details>
-
-<details>
-<summary>'effluent'</summary>
-
-    -> returns 1 dataframe
-        - Effluent_OVAM
-</details>
-
-<details>
-<summary>'groundwater'</summary>
-
-    -> returns 3 dataframes
-        - Groundwater_VMM
-        - Groundwater_OVAM
-        - Groundwater_Lantis
-</details>
-
-<details>
-<summary>'migration'</summary>
-
-    -> returns 1 dataframes
-        - Migration_OVAM
-</details>
-
-<details>
-<summary>'pure product'</summary>
-
-    -> returns 1 dataframes
-        - Pure_product_OVAM
-</details>
-
-<details>
-<summary>'rainwater'</summary>
-
-    -> returns 1 dataframes
-        - Rainwater_OVAM
-</details>
-
-<details>
-<summary>'soil'</summary>
-
-    -> returns 2 dataframes
-        - Soil_OVAM
-        - Soil_Lantis
-</details>
-
-<details>
-<summary>'soil water'</summary>
-
-    -> returns 2 dataframes
-        - Soil_water_VMM
-        - Soil_water_OVAM
-</details>
-
-<details>
-<summary>'surface water'</summary>
-
-    -> returns 2 dataframes
-        - Surface_water_VMM
-        - Surface_water_OVAM
-</details>
-
-<details>
-<summary>'waste water'</summary>
-
-    -> returns 1 dataframes
-        - Waste_water_VMM
-</details>
-
-### Basis
-
-```python
-from pydov.util.location import Within, Box
-from pydov.util.query import Join
-from loguru import logger
-from owslib.fes2 import PropertyIsEqualTo, And
-from tqdm.auto import tqdm
-from datetime import datetime
-from importlib.metadata import version
-
-medium = ['MEDIUM']
-location = Within(Box(LowerLeftX,LowerLeftY,UpperRightX,UpperRightY))  # Bounding box of area of interest
-
-rd = RequestPFASdata()
-
-# If you are only interested in the data
-df = rd.main(medium, location=location, max_features=None, save=False)[0]
-
-# If you are only interested in the metadata
-metadata = rd.main(medium, location=location, max_features=None, save=False)[1]
-
-# If you are interested in both the data as the metadata
-df, metadata = rd.main(medium, location=location, max_features=None, save=False)
-
-```
-Check out the query and customization options from pydov.\
-You can query on [location](https://pydov.readthedocs.io/en/stable/query_location.html)
-and also [restrict the number of WFS features returned](https://pydov.readthedocs.io/en/stable/sort_limit.html).
-
-### Case 1 : You want to save the data
-
-  - Example 1 : You want to download and save all the PFAS data of Flanders
-
-      ```python
-      # Change in the basis request:
-        medium = ['all']
-        location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders
-        save = True
-      ```
-      This results in one excel-file with 15 tabs. One for each dataset.
-
-
-  - Example 2 : You only want to download and save the groundwater data of Flanders
-
-      ```python
-    # Change in the basis request:
-        medium = ['groundwater']
-        location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders
-        save = True
-      ```
-      This results in one excel-file with 3 tabs. One tab with the groundwater data from VMM,
-      one with the groundwater data from OVAM and one with the groundwater data from Lantis.
-
-
-  - Example 3 : You want to download and save the soil and groundwater data of Flanders
-
-      ```python
-    # Change in the basis request:
-        medium = ['soil', 'groundwater']
-        location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders
-        save = True
-      ```
-      This results in one excel-file with 5 tabs. One tab with the soil data from OVAM,
-      one with the soil data from Lantis, one with the groundwater data from VMM,
-      one with the groundwater data from OVAM and one with the groundwater data from Lantis.
-
-
-### Case 2 : You want the data in a dataframe to integrate it in your python script
-
-  - Example 1 : You want to download all the PFAS data of Flanders
-
-    ```python
-    # Change in the basis request:
-        medium = ['all']
-        location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders
-
-    # Access data:
-        df[0] # Biota_VMM
-        df[1] # Effluent_OVAM
-        df[2] # Groundwater_VMM
-        df[3] # Groundwater_OVAM
-        df[4] # Groundwater_Lantis
-        df[5] # Migration_OVAM
-        df[6] # Pure_product_OVAM
-        df[7] # Rainwater_OVAM
-        df[8] # Soil_OVAM
-        df[9] # Soil_Lantis
-        df[10] # Soil_water_VMM
-        df[11] # Soil_water_OVAM
-        df[12] # Surface_water_VMM
-        df[13] # Surface_water_OVAM
-        df[14] # Waste_water_VMM
-    ```
-
-  - Example 2 : You only want to download the groundwater data of Flanders
-
-    ```python
-    # Change in the basis request:
-        medium = ['groundwater']
-        location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders
-
-    # Access data:
-        df[0] # Groundwater_VMM
-        df[1] # Groundwater_OVAM
-        df[2] # Groundwater_Lantis
-    ```
-
-  - Example 3 : You want to download the soil and groundwater data of Flanders
-
-    ```python
-    # Change in the basis request:
-        medium = ['soil', 'groundwater']
-        location = Within(Box(15000, 150000, 270000, 250000))  # Bounding box Flanders
-
-    # Access data:
-        df[0] # Soil_OVAM
-        df[1] # Soil_Lantis
-        df[2] # Groundwater_VMM
-        df[3] # Groundwater_OVAM
-        df[4] # Groundwater_Lantis
-    ```
-
-
diff --git a/contrib/PFAS_concentrations/environment.yml b/contrib/PFAS_concentrations/environment.yml
deleted file mode 100644
index 6a35b00..0000000
--- a/contrib/PFAS_concentrations/environment.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: pydov_pfas
-channels:
-- conda-forge
-dependencies:
-- git
-- loguru
-- openpyxl
-- OWSLib
-- packaging
-- pandas
-- tqdm
-- ipython
-- jupyter
-- jupyter_client
-- ipykernel
-- pip:
-  - pydov[proxy]>=3.1.0
diff --git a/contrib/PFAS_concentrations/requirements.txt b/contrib/PFAS_concentrations/requirements.txt
deleted file mode 100644
index 440964b..0000000
--- a/contrib/PFAS_concentrations/requirements.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-git
-loguru
-openpyxl
-OWSLib
-packaging
-pandas
-tqdm
-pydov[proxy]>=3.1.0
diff --git a/pydov/util/location.py b/pydov/util/location.py
index d28fa33..f2b01aa 100644
--- a/pydov/util/location.py
+++ b/pydov/util/location.py
@@ -29,7 +29,16 @@ class AbstractLocation(object):
 
     """
 
+    def _get_id_seed(self):
+        """Get the seed for generating a random but stable GML ID for this
+        location.
+
+        Should return the same value for locations considered equal.
+        """
+        raise NotImplementedError('This should be implemented in a subclass.')
+
     def _get_id(self):
+        random.seed(self._get_id_seed())
         random_id = ''.join(random.choice(
             string.ascii_letters + string.digits) for x in range(8))
         return f'pydov.{random_id}'
@@ -184,6 +193,7 @@ class Box(AbstractLocation):
         self.miny = miny
         self.maxx = maxx
         self.maxy = maxy
+        self.epsg = epsg
 
         self.element = etree.Element(
             '{http://www.opengis.net/gml/3.2}Envelope')
@@ -203,6 +213,11 @@ class Box(AbstractLocation):
         upper_corner.text = '{:.06f} {:.06f}'.format(self.maxx, self.maxy)
         self.element.append(upper_corner)
 
+    def _get_id_seed(self):
+        return ','.join(str(i) for i in [
+            self.minx, self.miny, self.maxx, self.miny, self.epsg
+        ])
+
     def get_element(self):
         return self.element
 
@@ -230,6 +245,7 @@ class Point(AbstractLocation):
         """
         self.x = x
         self.y = y
+        self.epsg = epsg
 
         self.element = etree.Element('{http://www.opengis.net/gml/3.2}Point')
         self.element.set('srsDimension', '2')
@@ -242,6 +258,11 @@ class Point(AbstractLocation):
         coordinates.text = '{:.06f} {:.06f}'.format(self.x, self.y)
         self.element.append(coordinates)
 
+    def _get_id_seed(self):
+        return ','.join(str(i) for i in [
+            self.x, self.y, self.epsg
+        ])
+
     def get_element(self):
         return self.element
 
diff --git a/pydov/util/owsutil.py b/pydov/util/owsutil.py
index 113a85e..fdd5b37 100644
--- a/pydov/util/owsutil.py
+++ b/pydov/util/owsutil.py
@@ -333,6 +333,28 @@ def set_geometry_column(location, geometry_column):
     return location.toXML()
 
 
+def unique_gml_ids(location):
+    """Make sure the location query has unique GML id's for all features.
+    Parameters
+    ----------
+    location : etree.ElementTree
+        XML tree of the location filter.
+    Returns
+    -------
+    etree.ElementTree
+        XML tree of the location filter with unique GML ids.
+    """
+    gml_items = location.findall('.//*[@{http://www.opengis.net/gml/3.2}id]')
+    gml_ids = [i.get('{http://www.opengis.net/gml/3.2}id') for i in gml_items]
+
+    if len(gml_ids) == len(set(gml_ids)):
+        return location
+    else:
+        for ix, item in enumerate(gml_items):
+            item.set('{http://www.opengis.net/gml/3.2}id', f'pydov.{ix}')
+        return location
+
+
 def wfs_build_getfeature_request(typename, geometry_column=None, location=None,
                                  filter=None, sort_by=None, propertyname=None,
                                  max_features=None, start_index=0,
@@ -439,6 +461,7 @@ def wfs_build_getfeature_request(typename, geometry_column=None, location=None,
 
     if location is not None:
         location = set_geometry_column(location, geometry_column)
+        location = unique_gml_ids(location)
         filter_parent.append(location)
 
     if filter is not None or location is not None:


Test patch:
diff --git a/tests/test_util_location.py b/tests/test_util_location.py
index bed8407..292dcc2 100644
--- a/tests/test_util_location.py
+++ b/tests/test_util_location.py
@@ -25,7 +25,8 @@ from tests.abstract import clean_xml
 class TestLocation(object):
     """Class grouping tests for the AbstractLocation subtypes."""
 
-    def test_gml_id(self):
+    def test_gml_id_unique(self):
+        """Test whether GML id's for two different locations are unique."""
         box1 = Box(94720, 186910, 112220, 202870)
         id1 = box1.get_element().get('{http://www.opengis.net/gml/3.2}id')
 
@@ -36,6 +37,18 @@ class TestLocation(object):
         assert id2.startswith('pydov')
         assert id1 != id2
 
+    def test_gml_id_stable(self):
+        """Test whether GML id's for two equal locations are the same."""
+        box1 = Box(94720, 186910, 112220, 202870)
+        id1 = box1.get_element().get('{http://www.opengis.net/gml/3.2}id')
+
+        box2 = Box(94720, 186910, 112220, 202870)
+        id2 = box2.get_element().get('{http://www.opengis.net/gml/3.2}id')
+
+        assert id1.startswith('pydov')
+        assert id2.startswith('pydov')
+        assert id1 == id2
+
     def test_box(self, mp_gml_id):
         """Test the default Box type.
 
diff --git a/tests/test_util_owsutil.py b/tests/test_util_owsutil.py
index 8d15c3d..801f347 100644
--- a/tests/test_util_owsutil.py
+++ b/tests/test_util_owsutil.py
@@ -3,13 +3,13 @@ import copy
 
 import pytest
 from owslib.etree import etree
-from owslib.fes2 import FilterRequest, PropertyIsEqualTo, SortBy, SortProperty
+from owslib.fes2 import FilterRequest, PropertyIsEqualTo, SortBy, SortProperty, Or
 from owslib.iso import MD_Metadata
 from owslib.util import nspath_eval
 
 from pydov.util import owsutil
 from pydov.util.dovutil import build_dov_url
-from pydov.util.location import Box, Within
+from pydov.util.location import Box, Within, WithinDistance
 from tests.abstract import clean_xml
 
 location_md_metadata = 'tests/data/types/boring/md_metadata.xml'
@@ -406,6 +406,41 @@ class TestWfsGetFeatureRequest(object):
             '214775.000000</gml:upperCorner></gml:Envelope></fes:Within></fes'
             ':Filter></wfs:Query></wfs:GetFeature>')
 
+    def test_wfs_build_getfeature_request_gml_id_stable(self):
+        """Test the owsutil.wfs_build_getfeature_request method with a
+        typename, box and geometry_column.
+        Test whether the XML of the WFS GetFeature call is stable.
+        """
+        xml1 = owsutil.wfs_build_getfeature_request(
+            'dov-pub:Boringen',
+            location=Within(Box(151650, 214675, 151750, 214775)),
+            geometry_column='geom')
+
+        xml2 = owsutil.wfs_build_getfeature_request(
+            'dov-pub:Boringen',
+            location=Within(Box(151650, 214675, 151750, 214775)),
+            geometry_column='geom')
+
+        assert etree.tostring(xml1) == etree.tostring(xml2)
+
+    def test_wfs_build_getfeature_request_gml_id_unique(self):
+        """Test the owsutil.wfs_build_getfeature_request method with a
+        typename, two boxes and geometry_column.
+        Test whether the GML ids in the XML of the WFS GetFeature are unique.
+        """
+        xml = owsutil.wfs_build_getfeature_request(
+            'dov-pub:Boringen',
+            location=Or([
+                Within(Box(100000, 120000, 200000, 220000)),
+                WithinDistance(Box(100000, 120000, 200000, 220000), 10)
+            ]),
+            geometry_column='geom')
+
+        gml_items = xml.findall('.//*[@{http://www.opengis.net/gml/3.2}id]')
+        gml_ids = [i.get('{http://www.opengis.net/gml/3.2}id') for i in gml_items]
+
+        assert len(gml_ids) == len(set(gml_ids))
+
     def test_wfs_build_getfeature_request_propertyname(self):
         """Test the owsutil.wfs_build_getfeature_request method with a list
         of propertynames.