diff --git a/CHANGELOG.md b/CHANGELOG.md index 54781a26..5efeba91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Introduce FiboaBaseConverter.use_variant_as_determination for setting proper determination_date - Update years for DK (2025, 2026) - Update fr-converter to support 2021/2022 files +- Converter for Baden-Württemberg, Germany (GISELa LPIS reference parcels, 2018-2022) - Converter for Lithuania KŽS reference parcels (lt_kzs), reading the geoportal.lt ArcGIS REST service - Support Esri JSON and server-side filters in EsriRESTConverterMixin (rest_format, rest_params["where"]) - Converter for Bavaria, Germany LPIS field blocks (de_by_block) diff --git a/fiboa_cli/datasets/de_bw.py b/fiboa_cli/datasets/de_bw.py new file mode 100644 index 00000000..8b1b3233 --- /dev/null +++ b/fiboa_cli/datasets/de_bw.py @@ -0,0 +1,96 @@ +import re +from urllib.parse import urlencode + +import pandas as pd +import requests +from vecorel_cli.conversion.admin import AdminConverterMixin + +from ..conversion.fiboa_converter import FiboaBaseConverter +from .commons.de_iacs import DEIACSMixin + +BASE_URL = "https://owsproxy.lgl-bw.de/owsproxy/wfs/WFS_LW-BW_GISELA_landw_Parzellen" +FARMLAND = "Bodenbedeckung IN ('Ackerland','Grünland','Dauerkultur')" + +# GISELa publishes the German label only, without the code. These are the values of the national +# de.iacs codelist that the labels correspond to. Ackerland and Dauerkultur are exact; the codelist +# defines GL as *permanent* grassland, which BW's documentation does not confirm either way. +AREA_TYPES = {"Ackerland": "AL", "Grünland": "GL", "Dauerkultur": "DK"} + + +class DEBWConverter(AdminConverterMixin, DEIACSMixin, FiboaBaseConverter): + id = "de_bw" + admin_subdivision_code = "BW" + short_name = "Germany, Baden-Württemberg" + title = "Field boundaries for Baden-Württemberg, Germany" + description = """ +GISELa is the Land Parcel Identification System (LPIS) of Baden-Württemberg, the reference system for +area-based agricultural payments. Unlike most German states, which use field blocks ("Feldblöcke"), +Baden-Württemberg uses the cadastral parcel ("Katasterflurstück") as its reference parcel, subdivided +by land cover ("Bodenbedeckung") - so the same FLIK can appear on several rows. This converter keeps +the agricultural classes (arable land, grassland, permanent crops) and drops landscape elements and +non-agricultural areas. The area given is the maximum area eligible for direct payments, not the +geometric area of the polygon. +""" + + provider = "Ministerium für Ländlichen Raum und Verbraucherschutz Baden-Württemberg " + attribution = "© MLR Baden-Württemberg, dl-de/by-2-0" + license = "DL-DE-BY-2.0" + + extensions = {"https://fiboa.org/flik-extension/v0.2.0/schema.yaml"} + + # One variant per published year, newest first -> 2022 is the default. + variants = {str(year): str(year) for year in range(2022, 2017, -1)} + + page_size = 50_000 + + # read_geojson calls open() without an encoding, so it follows the platform locale: + # UTF-8 on Linux/macOS, cp1252 on Windows, which would turn "Grünland" into mojibake. + open_options = dict(encoding="utf-8") + + columns = { + "geometry": "geometry", + "Geo-ID": "id", + "FLIK": "flik", # NOT the id: several rows share one FLIK + "area_type": "crop:code", # derived from Bodenbedeckung in migrate() + "FlaecheInHa": "metrics:area", + "Antragsjahr": "determination:datetime", + } + column_migrations = {"Antragsjahr": lambda col: pd.to_datetime(col, format="%Y")} + + def get_urls(self): + latest = next(iter(self.variants)) + if not self.variant: + self.variant = latest + + params = { + "service": "WFS", + "version": "2.0.0", + "request": "GetFeature", + "typeNames": f"lw:v_gisela_landw_parzellen_{self.variant}", + "outputFormat": "application/json", + "cql_filter": FARMLAND, + # NO srsName: the server rounds to 4 decimals in the output CRS, so asking + # for degrees would quantise coordinates to ~10 m. Fetch native, relabel below. + } + + # One cheap request so the page list is derived from the server, not hardcoded. + hits = requests.get(BASE_URL, params={**params, "resultType": "hits"}) + hits.raise_for_status() + total = int(re.search(r'numberMatched="(\d+)"', hits.text).group(1)) + + query = urlencode({**params, "count": self.page_size}) + return { + f"{BASE_URL}?{query}&startIndex={start}": f"de_bw_{self.variant}_{start}.json" + for start in range(0, total, self.page_size) + } + + def file_migration(self, gdf, path, uri, layer=None): + # read_geojson hardcodes crs="EPSG:4326"; the payload is really EPSG:25832. + # allow_override is required because a CRS is already set. + return gdf.set_crs("EPSG:25832", allow_override=True) + + def migrate(self, gdf): + gdf["area_type"] = gdf["Bodenbedeckung"].map(AREA_TYPES) + # read_geojson injects its own "id" column from the GML feature id. + # Drop it so renaming Geo-ID -> id does not create two columns called "id". + return super().migrate(gdf.drop(columns=["id"])) diff --git a/fiboa_cli/datasets/de_he.py b/fiboa_cli/datasets/de_he.py index 0185b74a..b0f0c0b2 100644 --- a/fiboa_cli/datasets/de_he.py +++ b/fiboa_cli/datasets/de_he.py @@ -40,6 +40,7 @@ class DEHEConverter(AdminConverterMixin, DEIACSMixin, FiboaBaseConverter): "declaredArea": "metrics:area", # in hectares, hence the area_is_in_ha default "validFrom": "determination:datetime", } + open_options = dict(encoding="utf-8") column_migrations = { "validFrom": lambda col: pd.to_datetime(col, format="%d.%m.%Y"), } diff --git a/tests/data-files/convert/de_bw/de_bw.json b/tests/data-files/convert/de_bw/de_bw.json new file mode 100644 index 00000000..3de36b27 --- /dev/null +++ b/tests/data-files/convert/de_bw/de_bw.json @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352142","geometry":{"type":"Polygon","coordinates":[[[519977.7,5385940.37],[519972.451,5385937.37],[519972.286,5385937.603],[519967.3,5385944.65],[520012.26,5385973.35],[520012.91,5385972],[520014.38,5385968.9],[520016.78,5385963.83],[519998.796,5385953.037],[519977.7,5385940.37]]]},"geometry_name":"geom","properties":{"Geo-ID":"331ae032-c709-4192-b052-f0308e653264","FLIK":"DEBWLI190000CF3K","Bodenbedeckung":"Ackerland","FlaecheInHa":0.0502,"Antragsjahr":2022,"object_id":2352142},"bbox":[519967.3,5385937.37,520016.78,5385973.35]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352143","geometry":{"type":"Polygon","coordinates":[[[522848.56,5461724.25],[522694.213,5461615.051],[522649.01,5461583.07],[522597.591,5461669.969],[522797.47,5461811.39],[522798.77,5461809.22],[522831,5461754.21],[522848.56,5461724.25]],[[522758.289,5461676.44],[522758.289,5461673.28],[522761.45,5461673.28],[522761.45,5461676.44],[522758.289,5461676.44]]]},"geometry_name":"geom","properties":{"Geo-ID":"13ba2fda-fd1e-4818-b2be-ec1b99114cb2","FLIK":"DEBWLI063700ZE2V","Bodenbedeckung":"Ackerland","FlaecheInHa":2.4633,"Antragsjahr":2022,"object_id":2352143},"bbox":[522597.591,5461583.07,522848.56,5461811.39]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352144","geometry":{"type":"Polygon","coordinates":[[[535538.433,5388129.576],[535538.43,5388129.57],[535536.95,5388130.61],[535536.945,5388130.613],[535525.3,5388138.44],[535513.65,5388146.28],[535507.756,5388150.239],[535502.23,5388153.95],[535485.027,5388162.769],[535485.302,5388163.668],[535474.423,5388168.209],[535464.58,5388173.26],[535458.79,5388177],[535459.842,5388180.488],[535462.2,5388188.3],[535463.878,5388187.623],[535488.28,5388177.78],[535516.76,5388164.15],[535543.434,5388145.828],[535546.44,5388143.76],[535538.433,5388129.576]]]},"geometry_name":"geom","properties":{"Geo-ID":"ee61618e-4ed1-499f-a0b9-fab2187487ef","FLIK":"DEBWLI181101HYVQ","Bodenbedeckung":"Ackerland","FlaecheInHa":0.1414,"Antragsjahr":2022,"object_id":2352144},"bbox":[535458.79,5388129.57,535546.44,5388188.3]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352145","geometry":{"type":"Polygon","coordinates":[[[576550.17,5395088.95],[576548.964,5395099.375],[576547.71,5395110.21],[576571.477,5395112.559],[576622.49,5395117.6],[576690.81,5395124.368],[576692.138,5395106.398],[576691.981,5395106.379],[576625.55,5395098.21],[576605.266,5395095.718],[576550.17,5395088.95]]]},"geometry_name":"geom","properties":{"Geo-ID":"9fe217be-4910-429f-8551-6853fb99fb07","FLIK":"DEBWLI257001QWF3","Bodenbedeckung":"Ackerland","FlaecheInHa":0.2846,"Antragsjahr":2022,"object_id":2352145},"bbox":[576547.71,5395088.95,576692.138,5395124.368]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352146","geometry":{"type":"Polygon","coordinates":[[[467507.601,5418942.96],[467428.311,5418944.627],[467508.81,5418945.5],[467507.601,5418942.96]]]},"geometry_name":"geom","properties":{"Geo-ID":"4e8b689b-a489-4714-b27b-fa70246186f9","FLIK":"DEBWLI394006RJ6F","Bodenbedeckung":"Ackerland","FlaecheInHa":0.0101,"Antragsjahr":2022,"object_id":2352146},"bbox":[467428.311,5418942.96,467508.81,5418945.5]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352147","geometry":{"type":"Polygon","coordinates":[[[522355.51,5385460.65],[522345.58,5385460.805],[522343.93,5385511.82],[522342.33,5385561.18],[522352.28,5385560.177],[522353.012,5385537.636],[522353.022,5385537.326],[522353.87,5385511.19],[522355.51,5385460.65]]]},"geometry_name":"geom","properties":{"Geo-ID":"c17af909-66b1-4420-991c-fcdc0c7be733","FLIK":"DEBWLI187200SJ2V","Bodenbedeckung":"Ackerland","FlaecheInHa":0.099,"Antragsjahr":2022,"object_id":2352147},"bbox":[522342.33,5385460.65,522355.51,5385561.18]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352148","geometry":{"type":"Polygon","coordinates":[[[446922.43,5422046.68],[446922.527,5422045.461],[446919.7,5422046.46],[446841.01,5422074.29],[446839.163,5422074.946],[446842.339,5422085.469],[446844.21,5422084.78],[446921.17,5422056.5],[446923.73,5422055.56],[446922.43,5422046.68]]]},"geometry_name":"geom","properties":{"Geo-ID":"eedd7367-a518-4deb-ac44-94f350a398fc","FLIK":"DEBWLI365000IE2V","Bodenbedeckung":"Ackerland","FlaecheInHa":0.0909,"Antragsjahr":2022,"object_id":2352148},"bbox":[446839.163,5422045.461,446923.73,5422085.469]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352149","geometry":{"type":"Polygon","coordinates":[[[463751.09,5440170.96],[463751.09,5440196.69],[463759.26,5440196.69],[463760.03,5440196.64],[463760.79,5440196.49],[463761.52,5440196.25],[463762.21,5440195.91],[463762.86,5440195.49],[463784.57,5440179.21],[463784.57,5440170.96],[463751.09,5440170.96]]]},"geometry_name":"geom","properties":{"Geo-ID":"15e4edae-306c-4cf4-a832-d4e5c804aaed","FLIK":"DEBWLI342207M60Q","Bodenbedeckung":"Ackerland","FlaecheInHa":0.0658,"Antragsjahr":2022,"object_id":2352149},"bbox":[463751.09,5440170.96,463784.57,5440196.69]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352150","geometry":{"type":"Polygon","coordinates":[[[494599.709,5292319.257],[494596.217,5292318.967],[494581.868,5292317.772],[494575.946,5292317.279],[494530.19,5292313.47],[494476.38,5292308.99],[494476.35,5292310.208],[494476.315,5292311.603],[494475.65,5292338.57],[494475.99,5292338.592],[494529.489,5292342.13],[494570.591,5292344.847],[494595.05,5292346.464],[494595.096,5292346.467],[494595.654,5292343.424],[494597.408,5292333.849],[494599.709,5292319.257]]]},"geometry_name":"geom","properties":{"Geo-ID":"d016034b-88d1-43e0-ab7a-25d352a9cfb1","FLIK":"DEBWLI6615041IGF","Bodenbedeckung":"Ackerland","FlaecheInHa":0.3468,"Antragsjahr":2022,"object_id":2352150},"bbox":[494475.65,5292308.99,494599.709,5292346.467]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352151","geometry":{"type":"Polygon","coordinates":[[[467464.519,5326418.421],[467409.61,5326455.07],[467355.37,5326493.17],[467340.685,5326504.692],[467349.133,5326519.837],[467353.758,5326527.517],[467379.92,5326507.09],[467434.86,5326469.27],[467466.916,5326447.162],[467464.519,5326418.421]]]},"geometry_name":"geom","properties":{"Geo-ID":"435f5be5-2319-4648-b8b2-e984ced30103","FLIK":"DEBWLI6045006GXV","Bodenbedeckung":"Ackerland","FlaecheInHa":0.3733,"Antragsjahr":2022,"object_id":2352151},"bbox":[467340.685,5326418.421,467466.916,5326527.517]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352152","geometry":{"type":"Polygon","coordinates":[[[533125.72,5405896.9],[533103.99,5405903.58],[533113.415,5405926.902],[533141.129,5405995.479],[533141.135,5405995.477],[533162.749,5405988.529],[533125.72,5405896.9]]]},"geometry_name":"geom","properties":{"Geo-ID":"c0814626-ba4d-4d9a-8fe8-cde0d1bbd64a","FLIK":"DEBWLI141002JQEA","Bodenbedeckung":"Ackerland","FlaecheInHa":0.2236,"Antragsjahr":2022,"object_id":2352152},"bbox":[533103.99,5405896.9,533162.749,5405995.479]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352153","geometry":{"type":"Polygon","coordinates":[[[505218.21,5462663.8],[505213.751,5462675.683],[505211.58,5462681.47],[505238.504,5462687.795],[505304.33,5462703.26],[505358.968,5462716.096],[505371.97,5462719.15],[505374.812,5462713.453],[505380.571,5462701.909],[505218.21,5462663.8]]]},"geometry_name":"geom","properties":{"Geo-ID":"b2fc7c60-3451-4474-a385-e87e16efeb49","FLIK":"DEBWLI291601VUH5","Bodenbedeckung":"Ackerland","FlaecheInHa":0.3109,"Antragsjahr":2022,"object_id":2352153},"bbox":[505211.58,5462663.8,505380.571,5462719.15]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352154","geometry":{"type":"Polygon","coordinates":[[[467338.872,5418435.351],[467329.83,5418422.17],[467270.41,5418465.58],[467274.692,5418470.986],[467276.644,5418473.45],[467290.31,5418467.506],[467316.062,5418452.017],[467330.969,5418442.162],[467339.095,5418435.676],[467338.918,5418435.419],[467338.872,5418435.351]]]},"geometry_name":"geom","properties":{"Geo-ID":"3d006927-49c7-4b53-9844-e8afe8c46f95","FLIK":"DEBWLI4000009500","Bodenbedeckung":"Ackerland","FlaecheInHa":0.1079,"Antragsjahr":2022,"object_id":2352154},"bbox":[467270.41,5418422.17,467339.095,5418473.45]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352155","geometry":{"type":"Polygon","coordinates":[[[533423.132,5494533.887],[533422.74,5494533.63],[533420.2,5494538.03],[533418.851,5494540.37],[533415.72,5494545.8],[533418.59,5494547.48],[533459.588,5494571.439],[533460.01,5494571.686],[533485.649,5494586.671],[533536.62,5494614.05],[533538.536,5494610.214],[533540.49,5494606.3],[533542.999,5494601.271],[533542.258,5494600.806],[533542.251,5494600.801],[533540.46,5494599.68],[533491.09,5494572.49],[533446.209,5494547.129],[533425.47,5494535.41],[533423.132,5494533.887]]]},"geometry_name":"geom","properties":{"Geo-ID":"b549966c-2d93-4d8c-a5f9-578cbcf11d95","FLIK":"DEBWLI264004QZSV","Bodenbedeckung":"Ackerland","FlaecheInHa":0.2044,"Antragsjahr":2022,"object_id":2352155},"bbox":[533415.72,5494533.63,533542.999,5494614.05]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352156","geometry":{"type":"Polygon","coordinates":[[[478468.273,5404763.043],[478370.677,5404744.891],[478370.628,5404745.268],[478468.27,5404765.32],[478468.273,5404763.043]]]},"geometry_name":"geom","properties":{"Geo-ID":"b4685fe3-768f-4d78-ab4d-f47a6e316c4e","FLIK":"DEBWLI4101007LXY","Bodenbedeckung":"Ackerland","FlaecheInHa":0.013,"Antragsjahr":2022,"object_id":2352156},"bbox":[478370.628,5404744.891,478468.273,5404765.32]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352157","geometry":{"type":"Polygon","coordinates":[[[486656.135,5407620.722],[486651.528,5407620.142],[486649.543,5407643.523],[486653.43,5407639.551],[486656.135,5407620.722]]]},"geometry_name":"geom","properties":{"Geo-ID":"9eb7b862-66c8-4fb5-b41b-b781e484fac1","FLIK":"DEBWLI405001X3K0","Bodenbedeckung":"Ackerland","FlaecheInHa":0.0086,"Antragsjahr":2022,"object_id":2352157},"bbox":[486649.543,5407620.142,486656.135,5407643.523]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352158","geometry":{"type":"Polygon","coordinates":[[[509843.65,5364879.45],[509823.61,5364898.48],[509959.88,5364972.02],[509979.79,5364953.11],[509843.65,5364879.45]]]},"geometry_name":"geom","properties":{"Geo-ID":"185d2035-df62-4609-a634-2bf904290138","FLIK":"DEBWLI7644017S50","Bodenbedeckung":"Ackerland","FlaecheInHa":0.4057,"Antragsjahr":2022,"object_id":2352158},"bbox":[509823.61,5364879.45,509979.79,5364972.02]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352159","geometry":{"type":"Polygon","coordinates":[[[489309.46,5425797.24],[489307.656,5425794.276],[489301.536,5425803.384],[489303.09,5425805.89],[489310.75,5425818.274],[489315.895,5425807.777],[489309.46,5425797.24]]]},"geometry_name":"geom","properties":{"Geo-ID":"d9083b0d-3492-436f-8fea-4a44c4c5a36a","FLIK":"DEBWLI3893024I5Q","Bodenbedeckung":"Grünland","FlaecheInHa":0.0156,"Antragsjahr":2022,"object_id":2352159},"bbox":[489301.536,5425794.276,489315.895,5425818.274]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352160","geometry":{"type":"Polygon","coordinates":[[[555166.84,5402023.395],[555166.84,5402023.39],[555151.34,5402034.8],[555149.175,5402037.418],[555151.007,5402038.104],[555164.019,5402040.944],[555167.503,5402040.997],[555166.84,5402023.395]]]},"geometry_name":"geom","properties":{"Geo-ID":"b0a2c9e0-d671-40c4-bba7-7787d92f1c57","FLIK":"DEBWLI24983TALBJ","Bodenbedeckung":"Grünland","FlaecheInHa":0.0165,"Antragsjahr":2022,"object_id":2352160},"bbox":[555149.175,5402023.39,555167.503,5402040.997]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352161","geometry":{"type":"Polygon","coordinates":[[[413780.71,5274434.66],[413783.475,5274432.326],[413786.475,5274429.794],[413786.48,5274429.79],[413780.536,5274431.849],[413776.75,5274433.16],[413767.68,5274432.81],[413768.214,5274434.377],[413769.4,5274437.86],[413770.25,5274440.35],[413780.71,5274434.66]]]},"geometry_name":"geom","properties":{"Geo-ID":"a2f8458f-5e79-455d-923e-e28885fb4f3f","FLIK":"DEBWLI7371005U2W","Bodenbedeckung":"Grünland","FlaecheInHa":0.0066,"Antragsjahr":2022,"object_id":2352161},"bbox":[413767.68,5274429.79,413786.48,5274440.35]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352162","geometry":{"type":"Polygon","coordinates":[[[439994.09,5417655.16],[439989.57,5417648.78],[439989.483,5417648.855],[439986.966,5417651.03],[439991.333,5417657.673],[439993.99,5417655.251],[439994.09,5417655.16]]]},"geometry_name":"geom","properties":{"Geo-ID":"92f7abe3-a080-4633-ae51-1b58c11042e9","FLIK":"DEBWLI366502ARXV","Bodenbedeckung":"Grünland","FlaecheInHa":0.0027,"Antragsjahr":2022,"object_id":2352162},"bbox":[439986.966,5417648.78,439994.09,5417657.673]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352163","geometry":{"type":"Polygon","coordinates":[[[519011.111,5385510.12],[519011.11,5385510.11],[519008.333,5385511.357],[519011.115,5385517.035],[519011.914,5385518.382],[519011.111,5385510.12]]]},"geometry_name":"geom","properties":{"Geo-ID":"a9d6eb48-e1a7-433b-9448-b77c94624a23","FLIK":"DEBWLI1900006750","Bodenbedeckung":"Grünland","FlaecheInHa":0.0011,"Antragsjahr":2022,"object_id":2352163},"bbox":[519008.333,5385510.11,519011.914,5385518.382]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352164","geometry":{"type":"Polygon","coordinates":[[[411295.5,5311228.31],[411361.13,5311218.02],[411297.77,5311220.17],[411246.32,5311221.92],[411242.49,5311222.05],[411244.171,5311236.35],[411248.45,5311235.68],[411260.745,5311233.754],[411295.5,5311228.31]]]},"geometry_name":"geom","properties":{"Geo-ID":"4c4658f9-d345-4612-929b-5ae7859306a7","FLIK":"DEBWLI5405005RM5","Bodenbedeckung":"Grünland","FlaecheInHa":0.0847,"Antragsjahr":2022,"object_id":2352164},"bbox":[411242.49,5311218.02,411361.13,5311236.35]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352165","geometry":{"type":"Polygon","coordinates":[[[510788.12,5319572.91],[510755.16,5319528.36],[510750.48,5319531.9],[510677.81,5319606.92],[510664.48,5319633.63],[510716.51,5319654.97],[510722.72,5319666.438],[510749.317,5319710.026],[510747.61,5319712.495],[510748.22,5319713.61],[510750.49,5319716.47],[510785.13,5319717.68],[510863.18,5319723.33],[510852.25,5319689.84],[510844,5319664.52],[510834.63,5319635.79],[510817.49,5319612.62],[510788.12,5319572.91]]]},"geometry_name":"geom","properties":{"Geo-ID":"f6b76fef-981b-4755-8273-0b753d68068f","FLIK":"DEBWLI907100UBXW","Bodenbedeckung":"Grünland","FlaecheInHa":2.0168,"Antragsjahr":2022,"object_id":2352165},"bbox":[510664.48,5319528.36,510863.18,5319723.33]},{"type":"Feature","id":"v_gisela_landw_parzellen_2022.2352166","geometry":{"type":"Polygon","coordinates":[[[499860.57,5408076.26],[499864.239,5408051.264],[499870.22,5408010.52],[499879.51,5407946.74],[499871.96,5407948.51],[499866.622,5407983.536],[499866.541,5407984.074],[499862.32,5408011.77],[499852.14,5408078],[499860.57,5408076.26]]]},"geometry_name":"geom","properties":{"Geo-ID":"9b54eb33-f6ff-4210-b4f6-fd7ac8250467","FLIK":"DEBWLI150201TEKQ","Bodenbedeckung":"Grünland","FlaecheInHa":0.1001,"Antragsjahr":2022,"object_id":2352166},"bbox":[499852.14,5407946.74,499879.51,5408078]}],"totalFeatures":4363087,"numberMatched":4363087,"numberReturned":25,"timeStamp":"2026-08-25T07:22:34.674Z","links":[{"title":"previous page","type":"application/json","rel":"previous","href":"https://zd-geodata-s011.zdkwh.mlrbw.net:460/geoserver/lw/wfs?REQUEST=GetFeature&OUTPUTFORMAT=application%2Fjson&VERSION=2.0.0&TYPENAMES=lw%3Av_gisela_landw_parzellen_2022&COUNT=25&SERVICE=WFS&CQL_FILTER=Bodenbedeckung%20IN%20%28%27Ackerland%27%2C%27Gr%C3%BCnland%27%2C%27Dauerkultur%27%29&STARTINDEX=1666805"},{"title":"next page","type":"application/json","rel":"next","href":"https://zd-geodata-s011.zdkwh.mlrbw.net:460/geoserver/lw/wfs?REQUEST=GetFeature&OUTPUTFORMAT=application%2Fjson&VERSION=2.0.0&TYPENAMES=lw%3Av_gisela_landw_parzellen_2022&COUNT=25&SERVICE=WFS&CQL_FILTER=Bodenbedeckung%20IN%20%28%27Ackerland%27%2C%27Gr%C3%BCnland%27%2C%27Dauerkultur%27%29&STARTINDEX=1666855"}],"crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG::25832"}},"bbox":[411242.49,5274429.79,576692.138,5494614.05]} \ No newline at end of file diff --git a/tests/test_convert.py b/tests/test_convert.py index de9f2d8c..aa2f2044 100644 --- a/tests/test_convert.py +++ b/tests/test_convert.py @@ -51,6 +51,7 @@ "ec_ro", "india_10k", "it_1", + "de_bw", "lt_kzs", "de_by_block", "de_he", @@ -75,6 +76,7 @@ def _input_files(converter, *names): "lv": _input_files("lv", "1_100.xml"), "nz": _input_files("nz", "irrigated-land-area-raw-2020-update.zip"), "jecam": _input_files("jecam", "BD_JECAM_CIRAD_2023_feb.shp"), + "de_bw": _input_files("de_bw", "de_bw.json"), "lt_kzs": _input_files("lt_kzs", "lt_kzs.json"), "de_by_block": _input_files("de_by_block", "de_by_block.gml"), }