From c8f2e50f327ca570d791dd8b97fd3de148d1d57c Mon Sep 17 00:00:00 2001 From: D2Hydro <43996424+d2hydro@users.noreply.github.com> Date: Fri, 27 Oct 2023 10:50:11 +0200 Subject: [PATCH] Code utils (#25) Code utils for: - finding bgt_codes and wbh_codes - creating a model_id from a wbh_code, wbh_code and object-code or x/y coordinate --- src/hydamo/hydamo/__init__.py | 2 - src/hydamo/hydamo/code_utils.py | 125 +++++++ src/hydamo/hydamo/data/bgt_codes.csv | 492 --------------------------- src/hydamo/hydamo/data/codes.csv | 484 ++++++++++++++++++++++++++ src/hydamo/hydamo/utils.py | 56 --- src/hydamo/tests/test_code_utils.py | 28 ++ 6 files changed, 637 insertions(+), 550 deletions(-) create mode 100644 src/hydamo/hydamo/code_utils.py delete mode 100644 src/hydamo/hydamo/data/bgt_codes.csv create mode 100644 src/hydamo/hydamo/data/codes.csv delete mode 100644 src/hydamo/hydamo/utils.py create mode 100644 src/hydamo/tests/test_code_utils.py diff --git a/src/hydamo/hydamo/__init__.py b/src/hydamo/hydamo/__init__.py index c2f4192..dbaf7ba 100644 --- a/src/hydamo/hydamo/__init__.py +++ b/src/hydamo/hydamo/__init__.py @@ -3,7 +3,6 @@ from hydamo.datamodel import ExtendedGeoDataFrame, HyDAMO from hydamo.geometry import find_nearest_branch, possibly_intersecting from hydamo.styles import add_styles_to_geopackage, read_style -from hydamo.utils import find_bgt_code __all__ = [ "HyDAMO", @@ -12,5 +11,4 @@ "possibly_intersecting", "add_styles_to_geopackage", "read_style", - "find_bgt_code", ] diff --git a/src/hydamo/hydamo/code_utils.py b/src/hydamo/hydamo/code_utils.py new file mode 100644 index 0000000..7770919 --- /dev/null +++ b/src/hydamo/hydamo/code_utils.py @@ -0,0 +1,125 @@ +"""Utilities for generating unique codes.""" +from pathlib import Path +from typing import Union + +import pandas as pd +from pandas import DataFrame + +CODES_CSV = Path(__file__).parent.joinpath("data", "codes.csv") +CODES_DF = None + +WBH_CODE_TEMPLATE = "NL.WBHCODE.{wbh_code}.{code}" +BGT_CODE_TEMPLATE = "NL.BGTCODE.{bgt_code}.{code}" + + +def get_codes_df(): + """Get (and set) the global CODES_DF. + + Returns + ------- + CODES_DF : DataFrame + + """ + global CODES_DF + + # read BGT_CSV if CODES_DF is None + if CODES_DF is None: + CODES_DF = pd.read_csv(CODES_CSV) + CODES_DF.set_index(CODES_DF.name.str.lower(), inplace=True) + CODES_DF["wbh_code"] = CODES_DF.wbh_code.apply( + lambda x: f"{int(x):02}" if not pd.isna(x) else None + ) + return CODES_DF.copy() + + +def bgt_code_exists(bgt_code: str): + """Check if bgt_code exists in CODES_DF""" + codes_df = get_codes_df() + return bgt_code in codes_df.bgt_code.to_numpy() + + +def wbh_code_exists(wbh_code): + """Check if wbh_code exists in CODES_DF""" + codes_df = get_codes_df() + return wbh_code in codes_df.wbh_code.to_numpy() + + +def bgt_to_wbh_code(bgt_code): + """Convert bgt_code to wbh_code if bgt_code exists""" + if bgt_code_exists(bgt_code): + codes_df = get_codes_df() + return ( + codes_df.reset_index(drop=True).set_index("bgt_code").loc[bgt_code].wbh_code + ) + + +def find_codes( + organization: str, + administration_category: Union[str, None] = None, + to_dict: bool = True, +): + """Find codes associated with an organization""" + codes_df = get_codes_df() + + # filter on administration_category + if administration_category: + if ( + administration_category.lower() + in codes_df.administration_category.to_numpy() + ): + codes_df = codes_df.loc[ + codes_df.administration_category == administration_category.lower() + ] + else: + raise ( + ValueError( + f"invalid value for`administration_category`. {administration_category}` not in {codes_df.administration_category.unique()}" + ) + ) + + # if 1 exact match we return it + if organization.lower() in codes_df.index: + df = codes_df.loc[organization.lower()] + # if more matches we return all matches + else: + df = codes_df.loc[ + codes_df.name.apply(lambda x: organization.lower() in x.lower()) + ] + if to_dict: + if isinstance(df, DataFrame): + return df.to_dict(orient="records") + else: + return df.to_dict() + + +def generate_model_id(code, wbh_code=None, bgt_code=None, geometry=None): + """Generate a model_id from wbh_code or bgt_code and code or x/y coordinate""" + if code is None: + if geometry is not None: + code = f"loc={int(geometry.x+ 0.5)},{int(geometry.x + 0.5)}" + else: + raise ValueError( + f""" + Specify 'code' ({code}), you have to specify 'geometry' ({geometry}). + """ + ) + + result = None + if wbh_code: + if wbh_code_exists(wbh_code): + result = WBH_CODE_TEMPLATE.format(wbh_code=wbh_code, code=code) + elif bgt_code: + if bgt_code_exists(bgt_code): + wbh_code = bgt_to_wbh_code(bgt_code) + if wbh_code: + result = WBH_CODE_TEMPLATE.format(wbh_code=wbh_code, code=code) + else: + result = BGT_CODE_TEMPLATE.format(bgt_code=bgt_code, code=code) + if result is None: + raise ValueError( + f""" + Specify a valid 'wbh_code' ({wbh_code}) or 'bgt_code' ({bgt_code}) to generate model_id. + """ + ) + else: + return result diff --git a/src/hydamo/hydamo/data/bgt_codes.csv b/src/hydamo/hydamo/data/bgt_codes.csv deleted file mode 100644 index e41993c..0000000 --- a/src/hydamo/hydamo/data/bgt_codes.csv +++ /dev/null @@ -1,492 +0,0 @@ -naam,bgt_code,type_organisatie -Appingedam,G0003,gemeente -Bedum,G0005,gemeente -Bellingwedde,G0007,gemeente -Ten Boer,G0009,gemeente -Delfzijl,G0010,gemeente -Groningen,G0014,gemeente -Grootegast,G0015,gemeente -Haren,G0017,gemeente -Hoogezand-Sappemeer,G0018,gemeente -Leek,G0022,gemeente -Loppersum,G0024,gemeente -Marum,G0025,gemeente -Almere,G0034,gemeente -Stadskanaal,G0037,gemeente -Slochteren,G0040,gemeente -Veendam,G0047,gemeente -Vlagtwedde,G0048,gemeente -Zeewolde,G0050,gemeente -Skarsterlân,G0051,gemeente -Winsum,G0053,gemeente -Boarnsterhim,G0055,gemeente -Zuidhorn,G0056,gemeente -Dongeradeel,G0058,gemeente -Achtkarspelen,G0059,gemeente -Ameland,G0060,gemeente -het Bildt,G0063,gemeente -Franekeradeel,G0070,gemeente -Harlingen,G0072,gemeente -Heerenveen,G0074,gemeente -Kollumerland en Nieuwkruisland,G0079,gemeente -Leeuwarden,G0080,gemeente -Leeuwarderadeel,G0081,gemeente -Lemsterland,G0082,gemeente -Ooststellingwerf,G0085,gemeente -Opsterland,G0086,gemeente -Schiermonnikoog,G0088,gemeente -Smallingerland,G0090,gemeente -Terschelling,G0093,gemeente -Vlieland,G0096,gemeente -Weststellingwerf,G0098,gemeente -Assen,G0106,gemeente -Coevorden,G0109,gemeente -Emmen,G0114,gemeente -Hoogeveen,G0118,gemeente -Meppel,G0119,gemeente -Littenseradiel,G0140,gemeente -Almelo,G0141,gemeente -Borne,G0147,gemeente -Dalfsen,G0148,gemeente -Deventer,G0150,gemeente -Enschede,G0153,gemeente -Haaksbergen,G0158,gemeente -Hardenberg,G0160,gemeente -Hellendoorn,G0163,gemeente -Hengelo (O),G0164,gemeente -Kampen,G0166,gemeente -Losser,G0168,gemeente -Noordoostpolder,G0171,gemeente -Oldenzaal,G0173,gemeente -Ommen,G0175,gemeente -Raalte,G0177,gemeente -Staphorst,G0180,gemeente -Tubbergen,G0183,gemeente -Urk,G0184,gemeente -Wierden,G0189,gemeente -Zwolle,G0193,gemeente -Rijnwaarden,G0196,gemeente -Aalten,G0197,gemeente -Goeree-Overflakkee,G1924,gemeente -Molenwaard,G1927,gemeente -Apeldoorn,G0200,gemeente -Arnhem,G0202,gemeente -Barneveld,G0203,gemeente -Beuningen,G0209,gemeente -Brummen,G0213,gemeente -Buren,G0214,gemeente -Culemborg,G0216,gemeente -Doesburg,G0221,gemeente -Doetinchem,G0222,gemeente -Druten,G0225,gemeente -Duiven,G0226,gemeente -Ede,G0228,gemeente -Elburg,G0230,gemeente -Epe,G0232,gemeente -Ermelo,G0233,gemeente -Geldermalsen,G0236,gemeente -Groesbeek,G0241,gemeente -Harderwijk,G0243,gemeente -Hattem,G0244,gemeente -Heerde,G0246,gemeente -Heumen,G0252,gemeente -Lochem,G0262,gemeente -Maasdriel,G0263,gemeente -Millingen aan de Rijn,G0265,gemeente -Nijkerk,G0267,gemeente -Nijmegen,G0268,gemeente -Oldebroek,G0269,gemeente -Putten,G0273,gemeente -Renkum,G0274,gemeente -Rheden,G0275,gemeente -Rozendaal,G0277,gemeente -Scherpenzeel,G0279,gemeente -Tiel,G0281,gemeente -Ubbergen,G0282,gemeente -Voorst,G0285,gemeente -Wageningen,G0289,gemeente -Westervoort,G0293,gemeente -Winterswijk,G0294,gemeente -Wijchen,G0296,gemeente -Zaltbommel,G0297,gemeente -Zevenaar,G0299,gemeente -Zutphen,G0301,gemeente -Nunspeet,G0302,gemeente -Dronten,G0303,gemeente -Neerijnen,G0304,gemeente -Amersfoort,G0307,gemeente -Baarn,G0308,gemeente -De Bilt,G0310,gemeente -Bunnik,G0312,gemeente -Bunschoten,G0313,gemeente -Eemnes,G0317,gemeente -Houten,G0321,gemeente -Leusden,G0327,gemeente -Lopik,G0331,gemeente -Montfoort,G0335,gemeente -Renswoude,G0339,gemeente -Rhenen,G0340,gemeente -Soest,G0342,gemeente -Utrecht,G0344,gemeente -Veenendaal,G0345,gemeente -Woudenberg,G0351,gemeente -Wijk bij Duurstede,G0352,gemeente -IJsselstein,G0353,gemeente -Zeist,G0355,gemeente -Nieuwegein,G0356,gemeente -Aalsmeer,G0358,gemeente -Alkmaar,G0361,gemeente -Amstelveen,G0362,gemeente -Amsterdam,G0363,gemeente -Graft-De Rijp,G0365,gemeente -Beemster,G0370,gemeente -Bergen (NH),G0373,gemeente -Beverwijk,G0375,gemeente -Blaricum,G0376,gemeente -Bloemendaal,G0377,gemeente -Bussum,G0381,gemeente -Castricum,G0383,gemeente -Diemen,G0384,gemeente -Edam-Volendam,G0385,gemeente -Enkhuizen,G0388,gemeente -Haarlem,G0392,gemeente -Haarlemmerliede en Spaarnwoude,G0393,gemeente -Haarlemmermeer,G0394,gemeente -Harenkarspel,G0395,gemeente -Heemskerk,G0396,gemeente -Heemstede,G0397,gemeente -Heerhugowaard,G0398,gemeente -Heiloo,G0399,gemeente -Den Helder,G0400,gemeente -Hilversum,G0402,gemeente -Hoorn,G0405,gemeente -Huizen,G0406,gemeente -Landsmeer,G0415,gemeente -Langedijk,G0416,gemeente -Laren,G0417,gemeente -Medemblik,G0420,gemeente -Muiden,G0424,gemeente -Naarden,G0425,gemeente -Oostzaan,G0431,gemeente -Opmeer,G0432,gemeente -Ouder-Amstel,G0437,gemeente -Purmerend,G0439,gemeente -Schagen,G0441,gemeente -Texel,G0448,gemeente -Uitgeest,G0450,gemeente -Uithoorn,G0451,gemeente -Velsen,G0453,gemeente -Weesp,G0457,gemeente -Schermer,G0458,gemeente -Zandvoort,G0473,gemeente -Zijpe,G0476,gemeente -Zeevang,G0478,gemeente -Zaanstad,G0479,gemeente -Alblasserdam,G0482,gemeente -Alphen aan den Rijn,G0484,gemeente -Barendrecht,G0489,gemeente -Bergambacht,G0491,gemeente -Drechterland,G0498,gemeente -Boskoop,G0499,gemeente -Brielle,G0501,gemeente -Capelle aan den IJssel,G0502,gemeente -Delft,G0503,gemeente -Dirksland,G0504,gemeente -Dordrecht,G0505,gemeente -Goedereede,G0511,gemeente -Gorinchem,G0512,gemeente -Gouda,G0513,gemeente -'s-Gravenhage,G0518,gemeente -Hardinxveld-Giessendam,G0523,gemeente -Hellevoetsluis,G0530,gemeente -Hendrik-Ido-Ambacht,G0531,gemeente -Stede Broec,G0532,gemeente -Hillegom,G0534,gemeente -Katwijk,G0537,gemeente -Krimpen aan den IJssel,G0542,gemeente -Leerdam,G0545,gemeente -Leiden,G0546,gemeente -Leiderdorp,G0547,gemeente -Lisse,G0553,gemeente -Maassluis,G0556,gemeente -Middelharnis,G0559,gemeente -Bernisse,G0568,gemeente -Nieuwkoop,G0569,gemeente -Nieuw-Lekkerland,G0571,gemeente -Noordwijk,G0575,gemeente -Noordwijkerhout,G0576,gemeente -Oegstgeest,G0579,gemeente -Oostflakkee,G0580,gemeente -Oud-Beijerland,G0584,gemeente -Binnenmaas,G0585,gemeente -Korendijk,G0588,gemeente -Oudewater,G0589,gemeente -Papendrecht,G0590,gemeente -Ridderkerk,G0597,gemeente -Rotterdam,G0599,gemeente -Rijswijk,G0603,gemeente -Schiedam,G0606,gemeente -Schoonhoven,G0608,gemeente -Sliedrecht,G0610,gemeente -Cromstrijen,G0611,gemeente -Spijkenisse,G0612,gemeente -Albrandswaard,G0613,gemeente -Westvoorne,G0614,gemeente -Strijen,G0617,gemeente -Vianen,G0620,gemeente -Vlaardingen,G0622,gemeente -Vlist,G0623,gemeente -Voorschoten,G0626,gemeente -Waddinxveen,G0627,gemeente -Wassenaar,G0629,gemeente -Woerden,G0632,gemeente -Zoetermeer,G0637,gemeente -Zoeterwoude,G0638,gemeente -Zwijndrecht,G0642,gemeente -Nederlek,G0643,gemeente -Ouderkerk,G0644,gemeente -Gaasterlân-Sleat,G0653,gemeente -Borsele,G0654,gemeente -Goes,G0664,gemeente -West Maas en Waal,G0668,gemeente -Hulst,G0677,gemeente -Kapelle,G0678,gemeente -Middelburg,G0687,gemeente -Giessenlanden,G0689,gemeente -Graafstroom,G0693,gemeente -Liesveld,G0694,gemeente -Reimerswaal,G0703,gemeente -Zederik,G0707,gemeente -Terneuzen,G0715,gemeente -Tholen,G0716,gemeente -Veere,G0717,gemeente -Vlissingen,G0718,gemeente -Lingewaal,G0733,gemeente -De Ronde Venen,G0736,gemeente -Tytsjerksteradiel,G0737,gemeente -Aalburg,G0738,gemeente -Asten,G0743,gemeente -Baarle-Nassau,G0744,gemeente -Bergen op Zoom,G0748,gemeente -Best,G0753,gemeente -Boekel,G0755,gemeente -Boxmeer,G0756,gemeente -Boxtel,G0757,gemeente -Breda,G0758,gemeente -Deurne,G0762,gemeente -Pekela,G0765,gemeente -Dongen,G0766,gemeente -Eersel,G0770,gemeente -Eindhoven,G0772,gemeente -Etten-Leur,G0777,gemeente -Geertruidenberg,G0779,gemeente -Gilze en Rijen,G0784,gemeente -Goirle,G0785,gemeente -Grave,G0786,gemeente -Haaren,G0788,gemeente -Helmond,G0794,gemeente -'s-Hertogenbosch,G0796,gemeente -Heusden,G0797,gemeente -Hilvarenbeek,G0798,gemeente -Loon op Zand,G0809,gemeente -Mill en Sint Hubert,G0815,gemeente -"Nuenen, Gerwen en Nederwetten",G0820,gemeente -Oirschot,G0823,gemeente -Oisterwijk,G0824,gemeente -Oosterhout,G0826,gemeente -Oss,G0828,gemeente -Rucphen,G0840,gemeente -Schijndel,G0844,gemeente -Sint-Michielsgestel,G0845,gemeente -Sint-Oedenrode,G0846,gemeente -Someren,G0847,gemeente -Son en Breugel,G0848,gemeente -Steenbergen,G0851,gemeente -Waterland,G0852,gemeente -Tilburg,G0855,gemeente -Uden,G0856,gemeente -Valkenswaard,G0858,gemeente -Veghel,G0860,gemeente -Veldhoven,G0861,gemeente -Vught,G0865,gemeente -Waalre,G0866,gemeente -Waalwijk,G0867,gemeente -Werkendam,G0870,gemeente -Woensdrecht,G0873,gemeente -Woudrichem,G0874,gemeente -Zundert,G0879,gemeente -Wormerland,G0880,gemeente -Onderbanken,G0881,gemeente -Landgraaf,G0882,gemeente -Beek,G0888,gemeente -Beesel,G0889,gemeente -Bergen (L),G0893,gemeente -Brunssum,G0899,gemeente -Gennep,G0907,gemeente -Heerlen,G0917,gemeente -Kerkrade,G0928,gemeente -Maastricht,G0935,gemeente -Meerssen,G0938,gemeente -Mook en Middelaar,G0944,gemeente -Nederweert,G0946,gemeente -Nuth,G0951,gemeente -Roermond,G0957,gemeente -Schinnen,G0962,gemeente -Simpelveld,G0965,gemeente -Stein,G0971,gemeente -Vaals,G0981,gemeente -Venlo,G0983,gemeente -Venray,G0984,gemeente -Voerendaal,G0986,gemeente -Weert,G0988,gemeente -Valkenburg aan de Geul,G0994,gemeente -Lelystad,G0995,gemeente -Horst aan de Maas,G1507,gemeente -Oude IJsselstreek,G1509,gemeente -Teylingen,G1525,gemeente -Utrechtse Heuvelrug,G1581,gemeente -Oost Gelre,G1586,gemeente -Koggenland,G1598,gemeente -Lansingerland,G1621,gemeente -Leudal,G1640,gemeente -Maasgouw,G1641,gemeente -Eemsmond,G1651,gemeente -Gemert-Bakel,G1652,gemeente -Halderberge,G1655,gemeente -Heeze-Leende,G1658,gemeente -Laarbeek,G1659,gemeente -De Marne,G1663,gemeente -Reusel-De Mierden,G1667,gemeente -Roerdalen,G1669,gemeente -Maasdonk,G1671,gemeente -Rijnwoude,G1672,gemeente -Roosendaal,G1674,gemeente -Schouwen-Duiveland,G1676,gemeente -Aa en Hunze,G1680,gemeente -Borger-Odoorn,G1681,gemeente -Cuijk,G1684,gemeente -Landerd,G1685,gemeente -De Wolden,G1690,gemeente -Noord-Beveland,G1695,gemeente -Wijdemeren,G1696,gemeente -Noordenveld,G1699,gemeente -Twenterand,G1700,gemeente -Westerveld,G1701,gemeente -Sint Anthonis,G1702,gemeente -Lingewaard,G1705,gemeente -Cranendonck,G1706,gemeente -Steenwijkerland,G1708,gemeente -Moerdijk,G1709,gemeente -Echt-Susteren,G1711,gemeente -Sluis,G1714,gemeente -Drimmelen,G1719,gemeente -Bernheze,G1721,gemeente -Ferwerderadiel,G1722,gemeente -Alphen-Chaam,G1723,gemeente -Bergeijk,G1724,gemeente -Bladel,G1728,gemeente -Gulpen-Wittem,G1729,gemeente -Tynaarlo,G1730,gemeente -Midden-Drenthe,G1731,gemeente -Overbetuwe,G1734,gemeente -Hof van Twente,G1735,gemeente -Neder-Betuwe,G1740,gemeente -Rijssen-Holten,G1742,gemeente -Geldrop-Mierlo,G1771,gemeente -Olst-Wijhe,G1773,gemeente -Dinkelland,G1774,gemeente -Westland,G1783,gemeente -Midden-Delfland,G1842,gemeente -Berkelland,G1859,gemeente -Bronckhorst,G1876,gemeente -Sittard-Geleen,G1883,gemeente -Kaag en Braassem,G1884,gemeente -Dantumadiel,G1891,gemeente -Zuidplas,G1892,gemeente -Peel en Maas,G1894,gemeente -Oldambt,G1895,gemeente -Zwartewaterland,G1896,gemeente -Súdwest-Fryslân,G1900,gemeente -Bodegraven-Reeuwijk,G1901,gemeente -Eijsden-Margraten,G1903,gemeente -Stichtse Vecht,G1904,gemeente -Menameradiel,G1908,gemeente -Hollands Kroon,G1911,gemeente -Leidschendam-Voorburg,G1916,gemeente -De Friese Meren,G1921,gemeente -Pijnacker-Nootdorp,G1926,gemeente -Montferland,G1955,gemeente -Menterwolde,G1987,gemeente -Nissewaard,G1930,gemeente -Krimpenerwaard,G1931,gemeente -De Fryske Marren,G1940,gemeente -Gooise Meren,G1942,gemeente -Berg en Dal,G1945,gemeente -Meierijstad,G1948,gemeente -Waadhoeke ,G1949,gemeente -Westerwolde,G1950,gemeente -Midden-Groningen ,G1952,gemeente -Beekdaelen,G1954,gemeente -Altena,G1959,gemeente -West Betuwe,G1960,gemeente -Vijfheerenlanden,G1961,gemeente -Hoeksche Waard,G1963,gemeente -Het Hogeland,G1966,gemeente -Westerkwartier,G1969,gemeente -Noardeast-Fryslân,G1970,gemeente -Molenlanden,G1978,gemeente -Eemsdelta,G1979,gemeente -Dijk en Waard,G1980,gemeente -Land van Cuijk,G1982,gemeente -Maashorst,G1991,gemeente -Voorne aan Zee,G1992,gemeente -Groningen,P0020,provincie -Fryslân,P0021,provincie -Drenthe,P0022,provincie -Overijssel,P0023,provincie -Flevoland,P0024,provincie -Gelderland,P0025,provincie -Utrecht,P0026,provincie -Noord-Holland,P0027,provincie -Zuid-Holland,P0028,provincie -Zeeland,P0029,provincie -Noord-Brabant,P0030,provincie -Limburg,P0031,provincie -Waterschap Groot Salland,W0151,waterschap -Waterschap Rijn en IJssel,W0152,waterschap -Waterschap Veluwe,W0153,waterschap -Waterschap Vallei & Eem,W0154,waterschap -"Waterschap Amstel, Gooi en Vecht",W0155,waterschap -Waterschap Regge en Dinkel,W0201,waterschap -Hoogheemraadschap van Delfland,W0372,waterschap -Waterschap Zeeuwse Eilanden,W0524,waterschap -Waterschap Zeeuws-Vlaanderen,W0524,waterschap -Waterschap De Dommel,W0539,waterschap -Waterschap Roer en Overmaas,W0585,waterschap -Waterschap Rivierenland,W0621,waterschap -Hoogheemraadschap van Rijnland,W0616,waterschap -Hoogheemraadschap De Stichtse Rijnlanden,W0636,waterschap -Waterschap Peel en Maasvallei,W0638,waterschap -Waterschap Hunze en Aa's,W0646,waterschap -Waterschap Noorderzijlvest,W0647,waterschap -Waterschap Reest en Wieden,W0648,waterschap -Waterschap Velt en Vecht,W0649,waterschap -Waterschap Zuiderzeeland,W0650,waterschap -Hoogheemraadschap Hollands Noorderkwartier,W0651,waterschap -Waterschap Brabantse Delta,W0652,waterschap -Wetterskip Fryslân,W0653,waterschap -Waterschap Aa en Maas,W0654,waterschap -Waterschap Hollandse Delta,W0655,waterschap -Hoogheemraadschap van Schieland en de Krimpenerwaard,W0656,waterschap -Waterschapsbedrijf Limburg,W0659,waterschap -Waterschap Scheldestromen,W0661,waterschap -Waterschap Vallei en Veluwe,W0662,waterschap -Waterschap Vechtstromen,W0663,waterschap -Waterschap Drents Overijsselse Delta,W0664,waterschap -Waterschap Limburg,W0665,waterschap -"Ministerie van Landbouw, Natuur en Voedselkwaliteit (LNV)",L0001,landelijke_organisatie -Ministerie van Infrastructuur en Waterstaat (IenW),L0002,landelijke_organisatie -Ministerie van Defensie,L0003,landelijke_organisatie -Prorail,L0004,landelijke_organisatie -Samenwerkingsverband voor Bronhouders,S0001,landelijke_organisatie -Kadaster,K0001,landelijke_organisatie diff --git a/src/hydamo/hydamo/data/codes.csv b/src/hydamo/hydamo/data/codes.csv new file mode 100644 index 0000000..a0c2307 --- /dev/null +++ b/src/hydamo/hydamo/data/codes.csv @@ -0,0 +1,484 @@ +name,bgt_code,wbh_code,administration_category +Appingedam,G0003,,gemeente +Bedum,G0005,,gemeente +Bellingwedde,G0007,,gemeente +Ten Boer,G0009,,gemeente +Delfzijl,G0010,,gemeente +Groningen,G0014,,gemeente +Grootegast,G0015,,gemeente +Haren,G0017,,gemeente +Hoogezand-Sappemeer,G0018,,gemeente +Leek,G0022,,gemeente +Loppersum,G0024,,gemeente +Marum,G0025,,gemeente +Almere,G0034,,gemeente +Stadskanaal,G0037,,gemeente +Slochteren,G0040,,gemeente +Veendam,G0047,,gemeente +Vlagtwedde,G0048,,gemeente +Zeewolde,G0050,,gemeente +Skarsterlân,G0051,,gemeente +Winsum,G0053,,gemeente +Boarnsterhim,G0055,,gemeente +Zuidhorn,G0056,,gemeente +Dongeradeel,G0058,,gemeente +Achtkarspelen,G0059,,gemeente +Ameland,G0060,,gemeente +het Bildt,G0063,,gemeente +Franekeradeel,G0070,,gemeente +Harlingen,G0072,,gemeente +Heerenveen,G0074,,gemeente +Kollumerland en Nieuwkruisland,G0079,,gemeente +Leeuwarden,G0080,,gemeente +Leeuwarderadeel,G0081,,gemeente +Lemsterland,G0082,,gemeente +Ooststellingwerf,G0085,,gemeente +Opsterland,G0086,,gemeente +Schiermonnikoog,G0088,,gemeente +Smallingerland,G0090,,gemeente +Terschelling,G0093,,gemeente +Vlieland,G0096,,gemeente +Weststellingwerf,G0098,,gemeente +Assen,G0106,,gemeente +Coevorden,G0109,,gemeente +Emmen,G0114,,gemeente +Hoogeveen,G0118,,gemeente +Meppel,G0119,,gemeente +Littenseradiel,G0140,,gemeente +Almelo,G0141,,gemeente +Borne,G0147,,gemeente +Dalfsen,G0148,,gemeente +Deventer,G0150,,gemeente +Enschede,G0153,,gemeente +Haaksbergen,G0158,,gemeente +Hardenberg,G0160,,gemeente +Hellendoorn,G0163,,gemeente +Hengelo (O),G0164,,gemeente +Kampen,G0166,,gemeente +Losser,G0168,,gemeente +Noordoostpolder,G0171,,gemeente +Oldenzaal,G0173,,gemeente +Ommen,G0175,,gemeente +Raalte,G0177,,gemeente +Staphorst,G0180,,gemeente +Tubbergen,G0183,,gemeente +Urk,G0184,,gemeente +Wierden,G0189,,gemeente +Zwolle,G0193,,gemeente +Rijnwaarden,G0196,,gemeente +Aalten,G0197,,gemeente +Goeree-Overflakkee,G1924,,gemeente +Molenwaard,G1927,,gemeente +Apeldoorn,G0200,,gemeente +Arnhem,G0202,,gemeente +Barneveld,G0203,,gemeente +Beuningen,G0209,,gemeente +Brummen,G0213,,gemeente +Buren,G0214,,gemeente +Culemborg,G0216,,gemeente +Doesburg,G0221,,gemeente +Doetinchem,G0222,,gemeente +Druten,G0225,,gemeente +Duiven,G0226,,gemeente +Ede,G0228,,gemeente +Elburg,G0230,,gemeente +Epe,G0232,,gemeente +Ermelo,G0233,,gemeente +Geldermalsen,G0236,,gemeente +Groesbeek,G0241,,gemeente +Harderwijk,G0243,,gemeente +Hattem,G0244,,gemeente +Heerde,G0246,,gemeente +Heumen,G0252,,gemeente +Lochem,G0262,,gemeente +Maasdriel,G0263,,gemeente +Millingen aan de Rijn,G0265,,gemeente +Nijkerk,G0267,,gemeente +Nijmegen,G0268,,gemeente +Oldebroek,G0269,,gemeente +Putten,G0273,,gemeente +Renkum,G0274,,gemeente +Rheden,G0275,,gemeente +Rozendaal,G0277,,gemeente +Scherpenzeel,G0279,,gemeente +Tiel,G0281,,gemeente +Ubbergen,G0282,,gemeente +Voorst,G0285,,gemeente +Wageningen,G0289,,gemeente +Westervoort,G0293,,gemeente +Winterswijk,G0294,,gemeente +Wijchen,G0296,,gemeente +Zaltbommel,G0297,,gemeente +Zevenaar,G0299,,gemeente +Zutphen,G0301,,gemeente +Nunspeet,G0302,,gemeente +Dronten,G0303,,gemeente +Neerijnen,G0304,,gemeente +Amersfoort,G0307,,gemeente +Baarn,G0308,,gemeente +De Bilt,G0310,,gemeente +Bunnik,G0312,,gemeente +Bunschoten,G0313,,gemeente +Eemnes,G0317,,gemeente +Houten,G0321,,gemeente +Leusden,G0327,,gemeente +Lopik,G0331,,gemeente +Montfoort,G0335,,gemeente +Renswoude,G0339,,gemeente +Rhenen,G0340,,gemeente +Soest,G0342,,gemeente +Utrecht,G0344,,gemeente +Veenendaal,G0345,,gemeente +Woudenberg,G0351,,gemeente +Wijk bij Duurstede,G0352,,gemeente +IJsselstein,G0353,,gemeente +Zeist,G0355,,gemeente +Nieuwegein,G0356,,gemeente +Aalsmeer,G0358,,gemeente +Alkmaar,G0361,,gemeente +Amstelveen,G0362,,gemeente +Amsterdam,G0363,,gemeente +Graft-De Rijp,G0365,,gemeente +Beemster,G0370,,gemeente +Bergen (NH),G0373,,gemeente +Beverwijk,G0375,,gemeente +Blaricum,G0376,,gemeente +Bloemendaal,G0377,,gemeente +Bussum,G0381,,gemeente +Castricum,G0383,,gemeente +Diemen,G0384,,gemeente +Edam-Volendam,G0385,,gemeente +Enkhuizen,G0388,,gemeente +Haarlem,G0392,,gemeente +Haarlemmerliede en Spaarnwoude,G0393,,gemeente +Haarlemmermeer,G0394,,gemeente +Harenkarspel,G0395,,gemeente +Heemskerk,G0396,,gemeente +Heemstede,G0397,,gemeente +Heerhugowaard,G0398,,gemeente +Heiloo,G0399,,gemeente +Den Helder,G0400,,gemeente +Hilversum,G0402,,gemeente +Hoorn,G0405,,gemeente +Huizen,G0406,,gemeente +Landsmeer,G0415,,gemeente +Langedijk,G0416,,gemeente +Laren,G0417,,gemeente +Medemblik,G0420,,gemeente +Muiden,G0424,,gemeente +Naarden,G0425,,gemeente +Oostzaan,G0431,,gemeente +Opmeer,G0432,,gemeente +Ouder-Amstel,G0437,,gemeente +Purmerend,G0439,,gemeente +Schagen,G0441,,gemeente +Texel,G0448,,gemeente +Uitgeest,G0450,,gemeente +Uithoorn,G0451,,gemeente +Velsen,G0453,,gemeente +Weesp,G0457,,gemeente +Schermer,G0458,,gemeente +Zandvoort,G0473,,gemeente +Zijpe,G0476,,gemeente +Zeevang,G0478,,gemeente +Zaanstad,G0479,,gemeente +Alblasserdam,G0482,,gemeente +Alphen aan den Rijn,G0484,,gemeente +Barendrecht,G0489,,gemeente +Bergambacht,G0491,,gemeente +Drechterland,G0498,,gemeente +Boskoop,G0499,,gemeente +Brielle,G0501,,gemeente +Capelle aan den IJssel,G0502,,gemeente +Delft,G0503,,gemeente +Dirksland,G0504,,gemeente +Dordrecht,G0505,,gemeente +Goedereede,G0511,,gemeente +Gorinchem,G0512,,gemeente +Gouda,G0513,,gemeente +'s-Gravenhage,G0518,,gemeente +Hardinxveld-Giessendam,G0523,,gemeente +Hellevoetsluis,G0530,,gemeente +Hendrik-Ido-Ambacht,G0531,,gemeente +Stede Broec,G0532,,gemeente +Hillegom,G0534,,gemeente +Katwijk,G0537,,gemeente +Krimpen aan den IJssel,G0542,,gemeente +Leerdam,G0545,,gemeente +Leiden,G0546,,gemeente +Leiderdorp,G0547,,gemeente +Lisse,G0553,,gemeente +Maassluis,G0556,,gemeente +Middelharnis,G0559,,gemeente +Bernisse,G0568,,gemeente +Nieuwkoop,G0569,,gemeente +Nieuw-Lekkerland,G0571,,gemeente +Noordwijk,G0575,,gemeente +Noordwijkerhout,G0576,,gemeente +Oegstgeest,G0579,,gemeente +Oostflakkee,G0580,,gemeente +Oud-Beijerland,G0584,,gemeente +Binnenmaas,G0585,,gemeente +Korendijk,G0588,,gemeente +Oudewater,G0589,,gemeente +Papendrecht,G0590,,gemeente +Ridderkerk,G0597,,gemeente +Rotterdam,G0599,,gemeente +Rijswijk,G0603,,gemeente +Schiedam,G0606,,gemeente +Schoonhoven,G0608,,gemeente +Sliedrecht,G0610,,gemeente +Cromstrijen,G0611,,gemeente +Spijkenisse,G0612,,gemeente +Albrandswaard,G0613,,gemeente +Westvoorne,G0614,,gemeente +Strijen,G0617,,gemeente +Vianen,G0620,,gemeente +Vlaardingen,G0622,,gemeente +Vlist,G0623,,gemeente +Voorschoten,G0626,,gemeente +Waddinxveen,G0627,,gemeente +Wassenaar,G0629,,gemeente +Woerden,G0632,,gemeente +Zoetermeer,G0637,,gemeente +Zoeterwoude,G0638,,gemeente +Zwijndrecht,G0642,,gemeente +Nederlek,G0643,,gemeente +Ouderkerk,G0644,,gemeente +Gaasterlân-Sleat,G0653,,gemeente +Borsele,G0654,,gemeente +Goes,G0664,,gemeente +West Maas en Waal,G0668,,gemeente +Hulst,G0677,,gemeente +Kapelle,G0678,,gemeente +Middelburg,G0687,,gemeente +Giessenlanden,G0689,,gemeente +Graafstroom,G0693,,gemeente +Liesveld,G0694,,gemeente +Reimerswaal,G0703,,gemeente +Zederik,G0707,,gemeente +Terneuzen,G0715,,gemeente +Tholen,G0716,,gemeente +Veere,G0717,,gemeente +Vlissingen,G0718,,gemeente +Lingewaal,G0733,,gemeente +De Ronde Venen,G0736,,gemeente +Tytsjerksteradiel,G0737,,gemeente +Aalburg,G0738,,gemeente +Asten,G0743,,gemeente +Baarle-Nassau,G0744,,gemeente +Bergen op Zoom,G0748,,gemeente +Best,G0753,,gemeente +Boekel,G0755,,gemeente +Boxmeer,G0756,,gemeente +Boxtel,G0757,,gemeente +Breda,G0758,,gemeente +Deurne,G0762,,gemeente +Pekela,G0765,,gemeente +Dongen,G0766,,gemeente +Eersel,G0770,,gemeente +Eindhoven,G0772,,gemeente +Etten-Leur,G0777,,gemeente +Geertruidenberg,G0779,,gemeente +Gilze en Rijen,G0784,,gemeente +Goirle,G0785,,gemeente +Grave,G0786,,gemeente +Haaren,G0788,,gemeente +Helmond,G0794,,gemeente +'s-Hertogenbosch,G0796,,gemeente +Heusden,G0797,,gemeente +Hilvarenbeek,G0798,,gemeente +Loon op Zand,G0809,,gemeente +Mill en Sint Hubert,G0815,,gemeente +"Nuenen, Gerwen en Nederwetten",G0820,,gemeente +Oirschot,G0823,,gemeente +Oisterwijk,G0824,,gemeente +Oosterhout,G0826,,gemeente +Oss,G0828,,gemeente +Rucphen,G0840,,gemeente +Schijndel,G0844,,gemeente +Sint-Michielsgestel,G0845,,gemeente +Sint-Oedenrode,G0846,,gemeente +Someren,G0847,,gemeente +Son en Breugel,G0848,,gemeente +Steenbergen,G0851,,gemeente +Waterland,G0852,,gemeente +Tilburg,G0855,,gemeente +Uden,G0856,,gemeente +Valkenswaard,G0858,,gemeente +Veghel,G0860,,gemeente +Veldhoven,G0861,,gemeente +Vught,G0865,,gemeente +Waalre,G0866,,gemeente +Waalwijk,G0867,,gemeente +Werkendam,G0870,,gemeente +Woensdrecht,G0873,,gemeente +Woudrichem,G0874,,gemeente +Zundert,G0879,,gemeente +Wormerland,G0880,,gemeente +Onderbanken,G0881,,gemeente +Landgraaf,G0882,,gemeente +Beek,G0888,,gemeente +Beesel,G0889,,gemeente +Bergen (L),G0893,,gemeente +Brunssum,G0899,,gemeente +Gennep,G0907,,gemeente +Heerlen,G0917,,gemeente +Kerkrade,G0928,,gemeente +Maastricht,G0935,,gemeente +Meerssen,G0938,,gemeente +Mook en Middelaar,G0944,,gemeente +Nederweert,G0946,,gemeente +Nuth,G0951,,gemeente +Roermond,G0957,,gemeente +Schinnen,G0962,,gemeente +Simpelveld,G0965,,gemeente +Stein,G0971,,gemeente +Vaals,G0981,,gemeente +Venlo,G0983,,gemeente +Venray,G0984,,gemeente +Voerendaal,G0986,,gemeente +Weert,G0988,,gemeente +Valkenburg aan de Geul,G0994,,gemeente +Lelystad,G0995,,gemeente +Horst aan de Maas,G1507,,gemeente +Oude IJsselstreek,G1509,,gemeente +Teylingen,G1525,,gemeente +Utrechtse Heuvelrug,G1581,,gemeente +Oost Gelre,G1586,,gemeente +Koggenland,G1598,,gemeente +Lansingerland,G1621,,gemeente +Leudal,G1640,,gemeente +Maasgouw,G1641,,gemeente +Eemsmond,G1651,,gemeente +Gemert-Bakel,G1652,,gemeente +Halderberge,G1655,,gemeente +Heeze-Leende,G1658,,gemeente +Laarbeek,G1659,,gemeente +De Marne,G1663,,gemeente +Reusel-De Mierden,G1667,,gemeente +Roerdalen,G1669,,gemeente +Maasdonk,G1671,,gemeente +Rijnwoude,G1672,,gemeente +Roosendaal,G1674,,gemeente +Schouwen-Duiveland,G1676,,gemeente +Aa en Hunze,G1680,,gemeente +Borger-Odoorn,G1681,,gemeente +Cuijk,G1684,,gemeente +Landerd,G1685,,gemeente +De Wolden,G1690,,gemeente +Noord-Beveland,G1695,,gemeente +Wijdemeren,G1696,,gemeente +Noordenveld,G1699,,gemeente +Twenterand,G1700,,gemeente +Westerveld,G1701,,gemeente +Sint Anthonis,G1702,,gemeente +Lingewaard,G1705,,gemeente +Cranendonck,G1706,,gemeente +Steenwijkerland,G1708,,gemeente +Moerdijk,G1709,,gemeente +Echt-Susteren,G1711,,gemeente +Sluis,G1714,,gemeente +Drimmelen,G1719,,gemeente +Bernheze,G1721,,gemeente +Ferwerderadiel,G1722,,gemeente +Alphen-Chaam,G1723,,gemeente +Bergeijk,G1724,,gemeente +Bladel,G1728,,gemeente +Gulpen-Wittem,G1729,,gemeente +Tynaarlo,G1730,,gemeente +Midden-Drenthe,G1731,,gemeente +Overbetuwe,G1734,,gemeente +Hof van Twente,G1735,,gemeente +Neder-Betuwe,G1740,,gemeente +Rijssen-Holten,G1742,,gemeente +Geldrop-Mierlo,G1771,,gemeente +Olst-Wijhe,G1773,,gemeente +Dinkelland,G1774,,gemeente +Westland,G1783,,gemeente +Midden-Delfland,G1842,,gemeente +Berkelland,G1859,,gemeente +Bronckhorst,G1876,,gemeente +Sittard-Geleen,G1883,,gemeente +Kaag en Braassem,G1884,,gemeente +Dantumadiel,G1891,,gemeente +Zuidplas,G1892,,gemeente +Peel en Maas,G1894,,gemeente +Oldambt,G1895,,gemeente +Zwartewaterland,G1896,,gemeente +Súdwest-Fryslân,G1900,,gemeente +Bodegraven-Reeuwijk,G1901,,gemeente +Eijsden-Margraten,G1903,,gemeente +Stichtse Vecht,G1904,,gemeente +Menameradiel,G1908,,gemeente +Hollands Kroon,G1911,,gemeente +Leidschendam-Voorburg,G1916,,gemeente +De Friese Meren,G1921,,gemeente +Pijnacker-Nootdorp,G1926,,gemeente +Montferland,G1955,,gemeente +Menterwolde,G1987,,gemeente +Nissewaard,G1930,,gemeente +Krimpenerwaard,G1931,,gemeente +De Fryske Marren,G1940,,gemeente +Gooise Meren,G1942,,gemeente +Berg en Dal,G1945,,gemeente +Meierijstad,G1948,,gemeente +Waadhoeke ,G1949,,gemeente +Westerwolde,G1950,,gemeente +Midden-Groningen ,G1952,,gemeente +Beekdaelen,G1954,,gemeente +Altena,G1959,,gemeente +West Betuwe,G1960,,gemeente +Vijfheerenlanden,G1961,,gemeente +Hoeksche Waard,G1963,,gemeente +Het Hogeland,G1966,,gemeente +Westerkwartier,G1969,,gemeente +Noardeast-Fryslân,G1970,,gemeente +Molenlanden,G1978,,gemeente +Eemsdelta,G1979,,gemeente +Dijk en Waard,G1980,,gemeente +Land van Cuijk,G1982,,gemeente +Maashorst,G1991,,gemeente +Voorne aan Zee,G1992,,gemeente +Groningen,P0020,61,provincie +Fryslân,P0021,62,provincie +Drenthe,P0022,63,provincie +Overijssel,P0023,66,provincie +Flevoland,P0024,64,provincie +Gelderland,P0025,68,provincie +Utrecht,P0026,67,provincie +Noord-Holland,P0027,65,provincie +Zuid-Holland,P0028,69,provincie +Zeeland,P0029,70,provincie +Noord-Brabant,P0030,71,provincie +Limburg,P0031,72,provincie +Waterschap Rijn en IJssel,W0152,7,waterschap +"Waterschap Amstel, Gooi en Vecht",W0155,31,waterschap +Hoogheemraadschap van Delfland,W0372,15,waterschap +Waterschap De Dommel,W0539,27,waterschap +Waterschap Rivierenland,W0621,9,waterschap +Hoogheemraadschap van Rijnland,W0616,13,waterschap +Hoogheemraadschap De Stichtse Rijnlanden,W0636,14,waterschap +Waterschap Hunze en Aa's,W0646,33,waterschap +Waterschap Noorderzijlvest,W0647,34,waterschap +Waterschap Zuiderzeeland,W0650,37,waterschap +Hoogheemraadschap Hollands Noorderkwartier,W0651,12,waterschap +Waterschap Brabantse Delta,W0652,25,waterschap +Wetterskip Fryslân,W0653,2,waterschap +Waterschap Aa en Maas,W0654,38,waterschap +Waterschap Hollandse Delta,W0655,40,waterschap +Hoogheemraadschap van Schieland en de Krimpenerwaard,W0656,39,waterschap +Waterschap Scheldestromen,W0661,42,waterschap +Waterschap Vallei en Veluwe,W0662,8,waterschap +Waterschap Vechtstromen,W0663,44,waterschap +Waterschap Drents Overijsselse Delta,W0664,59,waterschap +Waterschap Limburg,W0665,60,waterschap +"Ministerie van Landbouw, Natuur en Voedselkwaliteit (LNV)",L0001,,landelijke_organisatie +"Ministerie van Infrastructuur en Waterstaat (IenW), Rijkswaterstaat",L0002,80,landelijke_organisatie +Ministerie van Defensie,L0003,,landelijke_organisatie +Prorail,L0004,,landelijke_organisatie +Samenwerkingsverband voor Bronhouders,S0001,,landelijke_organisatie +Kadaster,K0001,,landelijke_organisatie +België,,97,overig +Duitsland,,98,overig +meerdere waterbeheerders,,99,overig diff --git a/src/hydamo/hydamo/utils.py b/src/hydamo/hydamo/utils.py deleted file mode 100644 index c73b9f0..0000000 --- a/src/hydamo/hydamo/utils.py +++ /dev/null @@ -1,56 +0,0 @@ -from pathlib import Path -from typing import Optional - -import pandas as pd - -BGT_CSV = Path(__file__).parent.joinpath("data", "bgt_codes.csv") -BGT_DF = None -BGT_ORGANIZATIONS = ["gemeente", "waterschap", "landelijke_organisatie"] - - -def find_bgt_code( - organisatie: str, type_organisatie: Optional[str] = None -) -> dict[str, str]: - """ - Find a dictionary with bgt-code(s) based on a (part of) an organisation - name. - - Parameters - ---------- - organisatie : str - (Part of) an (case insensitive) organization name. E.g. "Groningen", or - "ministerie" - type_organisatie : str, optional - Optional filter for types of organization. Either, "gemeente", "waterschap" or - "landelijke_organisatie". The default is None. - - Returns - ------- - dict - dictionary with bgt-code of organization in the form {"bgt_code": name}. - - """ - global BGT_DF - - # read BGT_CSV if not yet in memory - if BGT_DF is None: - BGT_DF = pd.read_csv(BGT_CSV) - BGT_DF.set_index(BGT_DF.naam.str.lower(), inplace=True) - - bgt_df = BGT_DF.copy() - - # filter on type_organisatie - if type_organisatie: - if type_organisatie.lower() in BGT_ORGANIZATIONS: - bgt_df = bgt_df.loc[bgt_df.type_organisatie == type_organisatie.lower()] - - # try to get an exact match - if organisatie.lower() in bgt_df.index: - df = bgt_df.loc[organisatie.lower()] - - # get a dictionary with non-exact matches. Empty if no match is found - else: - df = bgt_df.loc[bgt_df.naam.apply(lambda x: organisatie.lower() in x.lower())] - - # return as dictionary - return df.set_index("bgt_code").naam.to_dict() diff --git a/src/hydamo/tests/test_code_utils.py b/src/hydamo/tests/test_code_utils.py new file mode 100644 index 0000000..dd90d04 --- /dev/null +++ b/src/hydamo/tests/test_code_utils.py @@ -0,0 +1,28 @@ +"""Tests for hydamo.code_utils""" +from hydamo import code_utils + + +def test_init(): + assert code_utils.CODES_CSV.exists() + codes_gdf = code_utils.get_codes_df() + assert not codes_gdf.empty + assert code_utils.CODES_DF.equals(codes_gdf) + + +def test_find_codes(): + # check if we have all water authorities + assert len(code_utils.find_codes("waterschap")) == 15 + assert len(code_utils.find_codes("hoogheemraadschap")) == 5 + assert len(code_utils.find_codes("wetterskip")) == 1 + + +def test_generate_model_id(): + # see if we can find Zuid-Holland + result = code_utils.find_codes("Zuid-Holland") + assert result["wbh_code"] == code_utils.bgt_to_wbh_code(result["bgt_code"]) + + model_id = code_utils.generate_model_id(code="test", bgt_code=result["bgt_code"]) + assert model_id == "NL.WBHCODE.69.test" + assert model_id == code_utils.generate_model_id( + code="test", wbh_code=result["wbh_code"] + )