From b7fd4027e8f0bc70dc23bed0e0d52cecba1e1481 Mon Sep 17 00:00:00 2001 From: Davey Oldenburg Date: Fri, 6 Mar 2026 12:16:17 +0100 Subject: [PATCH 1/2] WIP: Ecologie kaart opzetten in python --- gen_ecologie.py | 183 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 gen_ecologie.py diff --git a/gen_ecologie.py b/gen_ecologie.py new file mode 100644 index 00000000..43ec37d6 --- /dev/null +++ b/gen_ecologie.py @@ -0,0 +1,183 @@ +#!/usr/bin/env python + +# Generates the ziektenplagenexotengroen mapfile. + +from generate import block, header, p, q +import re + +def slugify(s: str) -> str: + # TODO would be cleaner to convert to NFD, then remove combining chars. + s = s.replace("ë", "e") + return re.sub(r"[^A-Za-z]+", "_", s).strip("_").lower() + +layers = [ + ("Faunameubilair","Loopplank", "Loopplank", "aanwezig_laag"), + ("Faunameubilair","Vogelhut", "Vogelhut", "deels_bestreden"), + ("Faunameubilair","Vogelkijktoren", "Vogelkijktoren", "niet_in_beheer"), + ("Faunameubilair","Vogelscherm", "Vogelscherm", "aanwezig_urgent"), + ("Faunaverblijfplaatsen","Bijenwand", "Bijenwand", "gemeld"), + ("Faunaverblijfplaatsen","Broeihoop", "Broeihoop", "bestreden"), + ("Faunaverblijfplaatsen","Insectenhotel", "Insectenhotel", "niet_aanwezig"), + ("Faunaverblijfplaatsen","Ooievaarsnest", "Ooievaarsnest", "niet_bereikbaar"), + ("Faunaverblijfplaatsen","Vleermuiskast", "Vleermuiskast", "aanwezig_standaard"), + ("Faunaverblijfplaatsen","Vleermuiskelder", "Vleermuiskelder", "preventief"), + ("Faunaverblijfplaatsen","Vleermuistoren", "Vleermuistoren", "aanwezig_standaard"), + ("Faunaverblijfplaatsen","Winterverblijf", "Winterverblijf", "preventief"), + ("Faunavoorziening","Eekhoornbrug", "Eekhoornbrug", "preventief"), + ("Faunavoorziening","Faunaduiker", "Faunaduiker", "preventief"), + ("Faunavoorziening","Faunagoot", "Faunagoot", "preventief"), + ("Faunavoorziening","Faunapassage", "Faunapassage", "preventief"), + ("Faunavoorziening","Faunarichel", "Faunarichel", "preventief"), + ("Faunavoorziening","Faunatunnel", "Faunatunnel", "preventief"), + ("Faunavoorziening","Faunauittreedplaats", "Faunauittreedplaats", "preventief"), + ("Faunavoorziening","Faunawand", "Faunawand", "preventief"), + ("Faunavoorziening","Keienwal", "Keienwal", "preventief"), + ("Faunavoorziening","Stobbenwal", "Stobbenwal", "preventief"), + ("Faunavoorziening","Vispassage", "Vispassage", "preventief"), + ("Hekken","Amfibiënscherm", "Amfibiënscherm", "preventief"), + ("Hekken","Faunaraster", "Faunaraster", "preventief"), + ("Wildroosters","Wildrooster", "Wildrooster", "preventief"), + ("Poelen","Poel", "Poel", "preventief"), + ("Ecologische gebieden","Verbindingszone", "Verbindingszone", "preventief"), + ("Ecologische gebieden","Kerngebied", "Kerngebied", "preventief") + ] + + +header("Bor") + +with block("MAP"): + p("NAME", "ecologie") + p("INCLUDE", "header.inc") + + with block("WEB"): + with block("METADATA"): + q("team", "BOR") + q("ows_title", "Ecologie") + q( + "ows_abstract", + "Deze collectie bevat ecologische voorzieningen binnen gemeente Amsterdam. Dit zijn zowel ecologische objecten als ecologische gebieden. De ecologische objecten, zoals eekhoornbruggen en vispassages, zijn bedoeld voor dieren in de stad en zorgen ervoor dat zij zich veilig kunnen verplaatsen tussen verschillende leefgebieden. De ecologische gebieden zijn gericht op het vergroten van de biodiversiteit en zijn onderverdeeld in kerngebieden en verbindingszones. Kerngebieden bieden geschikte omstandigheden voor de permanente vestiging van soorten. Verbindingszones bieden geschikte omstandigheden voor tijdelijk verblijf, verbinden de kerngebieden met elkaar waardoor het leefgebied vergroot", + ) + q("wms_extent", "100000 450000 150000 500000") + +# dit stuk is voor de eikenprogressierups + for group, name, filter, icon in layers: + with block("LAYER"): + p("NAME", name) + p("GROUP", slugify(group)) + with block("PROJECTION"): + q("init=epsg:28992") + + p("INCLUDE", "connection/dataservices.inc") + + #hier voor de gewone processierups + if group == "Faunameubilair": + p( + "DATA", + "geometrie FROM" + f" (SELECT * FROM public.ecologie_faunameubilair_v1 where type = '{filter}') AS sub" + " USING srid=28992 USING UNIQUE id" + ) + p("TYPE POINT") + if group == "Faunaverblijfplaatsen": + p( + "DATA", + "geometrie FROM" + f" (SELECT * FROM public.ecologie_faunaverblijfplaatsen_v1 where type = '{filter}') AS sub" + " USING srid=28992 USING UNIQUE id" + ) + p("TYPE POINT") + if group == "Faunavoorziening": + p( + "DATA", + "geometrie FROM" + f" (SELECT * FROM public.ecologie_Faunavoorziening_v1 where type = '{filter}') AS sub" + " USING srid=28992 USING UNIQUE id" + ) + p("TYPE POINT") + if group == "Hekken": + p( + "DATA", + "geometrie FROM" + f" (SELECT * FROM public.ecologie_roosters_v1 where type = '{filter}') AS sub" + " USING srid=28992 USING UNIQUE id" + ) + p("TYPE POINT") + if group == "Roosters": + p( + "DATA", + "geometrie FROM" + f" (SELECT * FROM public.ecologie_roosters_v1 where type = '{filter}') AS sub" + " USING srid=28992 USING UNIQUE id" + ) + p("TYPE POINT") + if group == "Poelen": + p( + "DATA", + "geometrie FROM" + f" (SELECT * FROM public.ecologie_waterobjecten_v1 where type = '{filter}') AS sub" + " USING srid=28992 USING UNIQUE id" + ) + p("TYPE POLYGON") + if group == "Ecologische gebieden": + if name == 'Verbindingszone': + p( + "DATA", + "geometrie FROM" + f" (SELECT * FROM public.ecologie_verbindingzones_v3 where type = '{filter}') AS sub" + " USING srid=28992 USING UNIQUE id" + ) + elif name == 'Kerngebied': + p( + "DATA", + "geometrie FROM" + f" (SELECT * FROM public.ecologie_kerngebieden_v3 where type = '{filter}') AS sub" + " USING srid=28992 USING UNIQUE id" + ) + p("TYPE POLYGON") + + with block("METADATA"): + q("wfs_enable_request", "!*") + q("ows_title", name) + q("wms_enable_request", "*") + q("ows_abstract", "Ecologie amsterdam") + q("wms_format", "image/png") + q("ows_group_title", group) + + + with block("CLASS"): + p("NAME", name) + + with block("STYLE"): + p("SYMBOL", icon) + p("SIZE", 20) + + #hier voor de preventief processierups + if group == "Eikenprocessierups Preventief": + p( + "DATA", + "geometrie FROM" + # This subquery appears to do nothing, but it actually restricts + # the fields that mapserver sees. + " (select id, boom_id, gbd_buurt_id, geometrie, aantal_behandelingen_eikenprocessierups, geplande_uitvoeringsdatum_na, geplande_uitvoeringsdatum_voor,lastupdate, soortnaam, uiterste_uitvoeringsdatum_tweede_ronde, uitgevoerd_eerste_ronde_op, uitgevoerd_tweede_ronde_op from public.ziekte_plagen_exoten_groen_eikenprocessierups_preventief_v3) AS sub" + " USING srid=28992 USING UNIQUE id" + ) + p("TYPE POINT") + + with block("METADATA"): + q("wfs_enable_request", "!*") + q("ows_title", name) + q("wms_enable_request", "*") + q("ows_abstract", "Eikenprocessierups Preventief in Amsterdam") + q("wms_format", "image/png") + q("ows_group_title", group) + + with block("CLASS"): + p("NAME", name) + + with block("STYLE"): + p("SYMBOL", icon) + p("SIZE", 24) + p("OUTLINEWIDTH", 3) + p("OUTLINECOLOR", "#ffffff") + + From 332a67608b3c22d0ea426fa97fc8e9d06af9b9d5 Mon Sep 17 00:00:00 2001 From: Davey Oldenburg Date: Thu, 12 Mar 2026 14:21:51 +0100 Subject: [PATCH 2/2] WIP: zonder iconen maar volledige mapfile and python --- ecologie.map | 754 ++++++++++++++++++++++++++++++++++++++++++++++++ gen_ecologie.py | 84 +++--- 2 files changed, 789 insertions(+), 49 deletions(-) create mode 100644 ecologie.map diff --git a/ecologie.map b/ecologie.map new file mode 100644 index 00000000..a482f180 --- /dev/null +++ b/ecologie.map @@ -0,0 +1,754 @@ +# GENERATED BY gen_ecologie.py, DO NOT EDIT. + + +# TEAM: Bor + +MAP + NAME 'ecologie' + INCLUDE 'header.inc' + WEB + METADATA + 'team' 'BOR' + 'ows_title' 'Ecologie' + 'ows_abstract' 'Deze collectie bevat ecologische voorzieningen binnen gemeente Amsterdam. Dit zijn zowel ecologische objecten als ecologische gebieden. De ecologische objecten, zoals eekhoornbruggen en vispassages, zijn bedoeld voor dieren in de stad en zorgen ervoor dat zij zich veilig kunnen verplaatsen tussen verschillende leefgebieden. De ecologische gebieden zijn gericht op het vergroten van de biodiversiteit en zijn onderverdeeld in kerngebieden en verbindingszones. Kerngebieden bieden geschikte omstandigheden voor de permanente vestiging van soorten. Verbindingszones bieden geschikte omstandigheden voor tijdelijk verblijf, verbinden de kerngebieden met elkaar waardoor het leefgebied vergroot' + 'wms_extent' '100000 450000 150000 500000' + END + END + LAYER + NAME 'Loopplank' + GROUP 'faunameubilair' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunameubilair_v1 where type = 'Loopplank') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Loopplank' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunameubilair' + END + CLASS + NAME 'Loopplank' + STYLE + SYMBOL 'aanwezig_laag' + SIZE 20 + END + END + END + LAYER + NAME 'Vogelhut' + GROUP 'faunameubilair' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunameubilair_v1 where type = 'Vogelhut') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Vogelhut' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunameubilair' + END + CLASS + NAME 'Vogelhut' + STYLE + SYMBOL 'deels_bestreden' + SIZE 20 + END + END + END + LAYER + NAME 'Vogelkijktoren' + GROUP 'faunameubilair' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunameubilair_v1 where type = 'Vogelkijktoren') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Vogelkijktoren' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunameubilair' + END + CLASS + NAME 'Vogelkijktoren' + STYLE + SYMBOL 'niet_in_beheer' + SIZE 20 + END + END + END + LAYER + NAME 'Vogelscherm' + GROUP 'faunameubilair' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunameubilair_v1 where type = 'Vogelscherm') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Vogelscherm' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunameubilair' + END + CLASS + NAME 'Vogelscherm' + STYLE + SYMBOL 'aanwezig_urgent' + SIZE 20 + END + END + END + LAYER + NAME 'Bijenwand' + GROUP 'faunaverblijfplaatsen' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunaverblijfplaatsen_v1 where type = 'Bijenwand') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Bijenwand' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunaverblijfplaatsen' + END + CLASS + NAME 'Bijenwand' + STYLE + SYMBOL 'gemeld' + SIZE 20 + END + END + END + LAYER + NAME 'Broeihoop' + GROUP 'faunaverblijfplaatsen' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunaverblijfplaatsen_v1 where type = 'Broeihoop') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Broeihoop' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunaverblijfplaatsen' + END + CLASS + NAME 'Broeihoop' + STYLE + SYMBOL 'bestreden' + SIZE 20 + END + END + END + LAYER + NAME 'Insectenhotel' + GROUP 'faunaverblijfplaatsen' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunaverblijfplaatsen_v1 where type = 'Insectenhotel') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Insectenhotel' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunaverblijfplaatsen' + END + CLASS + NAME 'Insectenhotel' + STYLE + SYMBOL 'niet_aanwezig' + SIZE 20 + END + END + END + LAYER + NAME 'Ooievaarsnest' + GROUP 'faunaverblijfplaatsen' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunaverblijfplaatsen_v1 where type = 'Ooievaarsnest') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Ooievaarsnest' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunaverblijfplaatsen' + END + CLASS + NAME 'Ooievaarsnest' + STYLE + SYMBOL 'niet_bereikbaar' + SIZE 20 + END + END + END + LAYER + NAME 'Vleermuiskast' + GROUP 'faunaverblijfplaatsen' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunaverblijfplaatsen_v1 where type = 'Vleermuiskast') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Vleermuiskast' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunaverblijfplaatsen' + END + CLASS + NAME 'Vleermuiskast' + STYLE + SYMBOL 'aanwezig_standaard' + SIZE 20 + END + END + END + LAYER + NAME 'Vleermuiskelder' + GROUP 'faunaverblijfplaatsen' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunaverblijfplaatsen_v1 where type = 'Vleermuiskelder') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Vleermuiskelder' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunaverblijfplaatsen' + END + CLASS + NAME 'Vleermuiskelder' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Vleermuistoren' + GROUP 'faunaverblijfplaatsen' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunaverblijfplaatsen_v1 where type = 'Vleermuistoren') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Vleermuistoren' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunaverblijfplaatsen' + END + CLASS + NAME 'Vleermuistoren' + STYLE + SYMBOL 'aanwezig_standaard' + SIZE 20 + END + END + END + LAYER + NAME 'Winterverblijf' + GROUP 'faunaverblijfplaatsen' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunaverblijfplaatsen_v1 where type = 'Winterverblijf') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Winterverblijf' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunaverblijfplaatsen' + END + CLASS + NAME 'Winterverblijf' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Eekhoornbrug' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Eekhoornbrug') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Eekhoornbrug' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Eekhoornbrug' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Faunaduiker' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Faunaduiker') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Faunaduiker' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Faunaduiker' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Faunagoot' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Faunagoot') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Faunagoot' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Faunagoot' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Faunapassage' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Faunapassage') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Faunapassage' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Faunapassage' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Faunarichel' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Faunarichel') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Faunarichel' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Faunarichel' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Faunatunnel' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Faunatunnel') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Faunatunnel' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Faunatunnel' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Faunauittreedplaats' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Faunauittreedplaats') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Faunauittreedplaats' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Faunauittreedplaats' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Faunawand' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Faunawand') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Faunawand' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Faunawand' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Keienwal' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Keienwal') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Keienwal' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Keienwal' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Stobbenwal' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Stobbenwal') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Stobbenwal' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Stobbenwal' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Vispassage' + GROUP 'faunavoorziening' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = 'Vispassage') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Vispassage' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Faunavoorziening' + END + CLASS + NAME 'Vispassage' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Amfibieenscherm' + GROUP 'hekken' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM objectenopenbareruimte_hekken_v1 where type = 'Amfibieënscherm') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Amfibienscherm' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Hekken' + END + CLASS + NAME 'Amfibieenscherm' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Faunaraster' + GROUP 'hekken' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM objectenopenbareruimte_hekken_v1 where type = 'Faunaraster') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Faunaraster' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Hekken' + END + CLASS + NAME 'Faunaraster' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Wildrooster' + GROUP 'wildroosters' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie_punt FROM (SELECT * FROM public.objectenopenbareruimte_roosters_v1 where type = 'Wildrooster') AS sub USING srid=28992 USING UNIQUE id" + TYPE POINT + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Wildrooster' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Wildroosters' + END + CLASS + NAME 'Wildrooster' + STYLE + SYMBOL 'preventief' + SIZE 20 + END + END + END + LAYER + NAME 'Poel' + GROUP 'poelen' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA "geometrie FROM (SELECT * FROM public.objectenopenbareruimte_waterobjecten_v1 where type_gedetailleerd = 'Poel') AS sub USING srid=28992 USING UNIQUE id" + TYPE POLYGON + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Poel' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Poelen' + END + CLASS + NAME 'Poel' + STYLE + COLOR '#FF9100' + OPACITY 20 + END + STYLE + OUTLINECOLOR '#FF9100' + WIDTH 2 + END + END + END + LAYER + NAME 'Verbindingszone' + GROUP 'ecologische_gebieden' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA 'geometrie FROM (SELECT * FROM public.ecologie_verbindingszones_v3) AS sub USING srid=28992 USING UNIQUE id' + TYPE POLYGON + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Verbindingszone' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Ecologische gebieden' + END + CLASS + NAME 'Verbindingszone' + STYLE + COLOR '#FF9100' + OPACITY 20 + END + STYLE + OUTLINECOLOR '#FF9100' + WIDTH 2 + END + END + END + LAYER + NAME 'Kerngebied' + GROUP 'ecologische_gebieden' + PROJECTION + 'init=epsg:28992' + END + INCLUDE 'connection/dataservices.inc' + DATA 'geometrie FROM (SELECT * FROM public.ecologie_kerngebieden_v3) AS sub USING srid=28992 USING UNIQUE id' + TYPE POLYGON + METADATA + 'wfs_enable_request' '!*' + 'ows_title' 'Kerngebied' + 'wms_enable_request' '*' + 'ows_abstract' 'Ecologie amsterdam' + 'wms_format' 'image/png' + 'ows_group_title' 'Ecologische gebieden' + END + CLASS + NAME 'Kerngebied' + STYLE + COLOR '#FF9100' + OPACITY 20 + END + STYLE + OUTLINECOLOR '#FF9100' + WIDTH 2 + END + END + END +END diff --git a/gen_ecologie.py b/gen_ecologie.py index 43ec37d6..1fed95e2 100644 --- a/gen_ecologie.py +++ b/gen_ecologie.py @@ -34,12 +34,12 @@ def slugify(s: str) -> str: ("Faunavoorziening","Keienwal", "Keienwal", "preventief"), ("Faunavoorziening","Stobbenwal", "Stobbenwal", "preventief"), ("Faunavoorziening","Vispassage", "Vispassage", "preventief"), - ("Hekken","Amfibiënscherm", "Amfibiënscherm", "preventief"), + ("Hekken","Amfibieenscherm", "Amfibieënscherm", "preventief"), ("Hekken","Faunaraster", "Faunaraster", "preventief"), ("Wildroosters","Wildrooster", "Wildrooster", "preventief"), - ("Poelen","Poel", "Poel", "preventief"), - ("Ecologische gebieden","Verbindingszone", "Verbindingszone", "preventief"), - ("Ecologische gebieden","Kerngebied", "Kerngebied", "preventief") + ("Poelen","Poel", "Poel", "#FF9100"), + ("Ecologische gebieden","Verbindingszone", "Verbindingszone", "#FF9100"), + ("Ecologische gebieden","Kerngebied", "Kerngebied", "#FF9100") ] @@ -69,71 +69,78 @@ def slugify(s: str) -> str: p("INCLUDE", "connection/dataservices.inc") - #hier voor de gewone processierups + #niet echt trots op deze if statements, door deze aanpak is het heel makkelijk aanpasbaar, maar alle functies zijn anders. if group == "Faunameubilair": p( "DATA", - "geometrie FROM" + "geometrie_punt FROM" f" (SELECT * FROM public.ecologie_faunameubilair_v1 where type = '{filter}') AS sub" " USING srid=28992 USING UNIQUE id" ) p("TYPE POINT") + type = 'point' if group == "Faunaverblijfplaatsen": p( "DATA", - "geometrie FROM" + "geometrie_punt FROM" f" (SELECT * FROM public.ecologie_faunaverblijfplaatsen_v1 where type = '{filter}') AS sub" " USING srid=28992 USING UNIQUE id" ) p("TYPE POINT") + type = 'point' if group == "Faunavoorziening": p( "DATA", - "geometrie FROM" - f" (SELECT * FROM public.ecologie_Faunavoorziening_v1 where type = '{filter}') AS sub" + "geometrie_punt FROM" + f" (SELECT * FROM public.ecologie_faunavoorzieningen_v1 where type = '{filter}') AS sub" " USING srid=28992 USING UNIQUE id" ) p("TYPE POINT") + type = 'point' if group == "Hekken": p( "DATA", - "geometrie FROM" - f" (SELECT * FROM public.ecologie_roosters_v1 where type = '{filter}') AS sub" + "geometrie_punt FROM" + f" (SELECT * FROM objectenopenbareruimte_hekken_v1 where type = '{filter}') AS sub" " USING srid=28992 USING UNIQUE id" - ) + ) p("TYPE POINT") - if group == "Roosters": + type = 'point' + if group == "Wildroosters": p( "DATA", - "geometrie FROM" - f" (SELECT * FROM public.ecologie_roosters_v1 where type = '{filter}') AS sub" + "geometrie_punt FROM" + f" (SELECT * FROM public.objectenopenbareruimte_roosters_v1 where type = '{filter}') AS sub" " USING srid=28992 USING UNIQUE id" ) p("TYPE POINT") + type = 'point' if group == "Poelen": p( "DATA", "geometrie FROM" - f" (SELECT * FROM public.ecologie_waterobjecten_v1 where type = '{filter}') AS sub" + f" (SELECT * FROM public.objectenopenbareruimte_waterobjecten_v1 where type_gedetailleerd = '{filter}') AS sub" " USING srid=28992 USING UNIQUE id" ) p("TYPE POLYGON") + type = 'polygon' if group == "Ecologische gebieden": if name == 'Verbindingszone': p( "DATA", "geometrie FROM" - f" (SELECT * FROM public.ecologie_verbindingzones_v3 where type = '{filter}') AS sub" + f" (SELECT * FROM public.ecologie_verbindingszones_v3) AS sub" " USING srid=28992 USING UNIQUE id" ) - elif name == 'Kerngebied': + if name == 'Kerngebied': p( "DATA", "geometrie FROM" - f" (SELECT * FROM public.ecologie_kerngebieden_v3 where type = '{filter}') AS sub" + f" (SELECT * FROM public.ecologie_kerngebieden_v3) AS sub" " USING srid=28992 USING UNIQUE id" ) p("TYPE POLYGON") + type = 'polygon' with block("METADATA"): q("wfs_enable_request", "!*") @@ -147,37 +154,16 @@ def slugify(s: str) -> str: with block("CLASS"): p("NAME", name) - with block("STYLE"): - p("SYMBOL", icon) - p("SIZE", 20) - - #hier voor de preventief processierups - if group == "Eikenprocessierups Preventief": - p( - "DATA", - "geometrie FROM" - # This subquery appears to do nothing, but it actually restricts - # the fields that mapserver sees. - " (select id, boom_id, gbd_buurt_id, geometrie, aantal_behandelingen_eikenprocessierups, geplande_uitvoeringsdatum_na, geplande_uitvoeringsdatum_voor,lastupdate, soortnaam, uiterste_uitvoeringsdatum_tweede_ronde, uitgevoerd_eerste_ronde_op, uitgevoerd_tweede_ronde_op from public.ziekte_plagen_exoten_groen_eikenprocessierups_preventief_v3) AS sub" - " USING srid=28992 USING UNIQUE id" - ) - p("TYPE POINT") - - with block("METADATA"): - q("wfs_enable_request", "!*") - q("ows_title", name) - q("wms_enable_request", "*") - q("ows_abstract", "Eikenprocessierups Preventief in Amsterdam") - q("wms_format", "image/png") - q("ows_group_title", group) + if type == 'polygon': + with block("STYLE"): + p("COLOR", icon) + p("OPACITY", 20) - with block("CLASS"): - p("NAME", name) + with block("STYLE"): + p("OUTLINECOLOR ", icon) + p("WIDTH ", 2) + else: with block("STYLE"): p("SYMBOL", icon) - p("SIZE", 24) - p("OUTLINEWIDTH", 3) - p("OUTLINECOLOR", "#ffffff") - - + p("SIZE", 20)