Coverage for brodata / gmn.py: 95%
43 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-20 14:37 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-20 14:37 +0000
1import logging
2from functools import partial
4import pandas as pd
6from . import bro
8logger = logging.getLogger(__name__)
11class GroundwaterMonitoringNetwork(bro.FileOrUrl):
12 """Class to represent a Groundwater Monitoring Network (GMN) from the BRO."""
14 _rest_url = "https://publiek.broservices.nl/gm/gmn/v1"
15 _xmlns = "http://www.broservices.nl/xsd/dsgmn/1.0"
17 def _read_contents(self, tree):
18 ns = {
19 "brocom": "http://www.broservices.nl/xsd/brocommon/3.0",
20 "gml": "http://www.opengis.net/gml/3.2",
21 "gmncom": "http://www.broservices.nl/xsd/gmncommon/1.0",
22 "xmlns": self._xmlns,
23 }
24 gmn = self._get_main_object(tree, "GMN_PO", ns)
25 for key in gmn.attrib:
26 setattr(self, key.split("}", 1)[1], gmn.attrib[key])
27 for child in gmn:
28 key = self._get_tag(child)
29 if len(child) == 0:
30 setattr(self, key, child.text)
31 elif key == "monitoringNetHistory":
32 for grandchild in child:
33 key = self._get_tag(grandchild)
34 if key == "startDateMonitoring":
35 setattr(self, key, self._read_date(grandchild))
36 else:
37 self._warn_unknown_tag(key)
38 elif key == "registrationHistory":
39 self._read_children_of_children(child)
40 elif key == "measuringPoint":
41 if not hasattr(self, key):
42 self.measuringPoint = []
43 point = {}
44 self._read_children_of_children(child, point, to_int="tubeNumber")
45 self.measuringPoint.append(point)
46 else:
47 self._warn_unknown_tag(key)
49 if hasattr(self, "measuringPoint"):
50 self.measuringPoint = pd.DataFrame(self.measuringPoint)
51 if (
52 "broId" in self.measuringPoint.columns
53 and "tubeNumber" in self.measuringPoint.columns
54 ):
55 self.measuringPoint = self.measuringPoint.set_index(
56 ["broId", "tubeNumber"]
57 )
58 if "date" in self.measuringPoint.columns:
59 self.measuringPoint["date"] = pd.to_datetime(
60 self.measuringPoint["date"]
61 )
64cl = GroundwaterMonitoringNetwork
66get_bro_ids_of_bronhouder = partial(bro._get_bro_ids_of_bronhouder, cl)
67get_bro_ids_of_bronhouder.__doc__ = bro._get_bro_ids_of_bronhouder.__doc__
69get_data_for_bro_ids = partial(bro._get_data_for_bro_ids, cl)
70get_data_for_bro_ids.__doc__ = bro._get_data_for_bro_ids.__doc__