Skip to content

Commit

Permalink
Do/historischeondergrondseelementen (#604)
Browse files Browse the repository at this point in the history
* WIP: Gen file voor historische elementen, wacht op wat naam wijzigingen etc

* WIP: updates values

* WIP: python voor bodeminfo. extra lagen toegevoegd.

* WIP: Labels afgemaakt en regels gemaakt

* Mapfile klaar. Labels, kleuren etc gecheckt. Nu laatste check in prd
  • Loading branch information
Doldenburgamsterdam authored Sep 25, 2024
1 parent acd470b commit de95c14
Show file tree
Hide file tree
Showing 2 changed files with 1,340 additions and 0 deletions.
238 changes: 238 additions & 0 deletions gen_historischebodeminformatie.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
import re
import random

from generate import block, header, p, q


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 = [
("Bodemgebruik en obstakels", "Boerderij", "Boerderij", ('#ebdc56', False)), #VLAK zit in 'objecten' tabel
("Bodemgebruik en obstakels", "Defensieterrein", "Defensieterrein", ('#d5587c', False)),
("Bodemgebruik en obstakels", "Fabriek/bedrijventerrein", "Fabriek/bedrijventerrein", ('#a78409', False)),
("Bodemgebruik en obstakels", "Gebouw", "Gebouw", ('#0e6f99', False)),
("Bodemgebruik en obstakels", "Glastuinbouw", "Glastuinbouw", ('#9bca54', False)),
("Bodemgebruik en obstakels", "Object", "Object", ('#03cea2', False)),
("Bodemgebruik en obstakels", "Overig", "Overig", ('#d00ee5', False)),
("Bodemgebruik en obstakels", "Spoorwegemplacement", "Spoorwegemplacement", ('#ae95b9', False)),
("Bodemgebruik en obstakels", "Stookruimte/olietank", "Stookruimte/olietank", ('#713dbe', False)),
("Bodemgebruik en obstakels", "Tram- en busremises", "Tram en busremises", ('#3a15e1', False)),
("Bodemgebruik en obstakels", "Volkstuinen", "Volkstuinen", ('#06d3f7', False)),
("Lijnvormige obstakels", "Gasbuis", "Gasbuis", ('#bfb479', True)), #LIJN zit in 'kabels en leidingen'
("Lijnvormige obstakels", "Grondkering", "Grondkering", ('#d7650e',False)),
("Lijnvormige obstakels", "Kabel", "Kabel", ('#d67814', True)),
("Lijnvormige obstakels", "Mantelbuis", "Mantelbuis", ('#79e0d4', True)),
("Lijnvormige obstakels", "Persleiding", "Persleiding", ('#20a620', True)),
("Lijnvormige obstakels", "Riool", "Riool", ('#0e5129', True)),
("Lijnvormige obstakels", "Spoorweg", "Spoorweg", ('#232323', True)),
("Lijnvormige obstakels", "Waterleiding", "Waterleiding", ('#3a15e1', True)),
("Dempingen en ophogingen", "Demping", "Demping", ('#e4d62e', False)), #dit zit uiteraard in dempingen en ophogingen
("Dempingen en ophogingen", "Depot/stort", "Depot/stort", ('#ce7263', False)),
("Dempingen en ophogingen", "Dijk", "Dijk", ('#66b2b1', False)),
("Dempingen en ophogingen", "Ophoging", "Ophoging", ('#8c8c8b', False))
]



with block("MAP"):
p("NAME", "historischebodeminformatie")
p("INCLUDE", "header.inc")

# with block("PROJECTION"):
# q("init=epsg:28992")


with block("WEB"):
with block("METADATA"):
q("ows_title", "Historische Bodeminformatie")
q("ows_onlineresource", "MAP_URL_REPLACE/maps/historischebodeminformatie")
q("ows_abstract", "Historische Bodeminformatie",)


for group, layer_name, filter_value, colors in layers:

if group == "Bodemgebruik en obstakels":

with block("LAYER"):
sql = f"geometrie from (SELECT * FROM public.historische_bodeminformatie_bodemgebruik_en_obstakels where categorie = '{filter_value}') as subquery USING srid=28992 USING UNIQUE id"


layer_name_slug = slugify(layer_name)

p("NAME", layer_name_slug)
p("INCLUDE", "connection/dataservices.inc")
p("DATA", sql)
p('GROUP', slugify(group))
p("TYPE POLYGON")
p("TEMPLATE", "fooOnlyForWMSGetFeatureInfo.html")
p("LABELITEM", "beschrijving")


with block("METADATA"):
q("ows_title", layer_name)
q('ows_group_title', group)
q("wms_include_items", "all")
q("ows_abstract", "Bodemgebruik en obstakels")
q("gml_featureid", "id")
q("gml_geometries", "geometry")
q("gml_geometry_type", "polygon")
q("gml_include_items", "all")
q("gml_types", "auto")


with block("CLASS"):
p("NAME", f"{layer_name_slug}")
p("TITLE", f"{layer_name}")

with block("STYLE"):
p(f'COLOR "{colors[0]}"')
p("OPACITY", 40)
p(f'OUTLINECOLOR "{colors[0]}"')
p("WIDTH ", 2)

with block("LABEL"):
p("MAXSCALEDENOM 5000")
p("COLOR 0 0 0")
p("OUTLINECOLOR 255 255 255")
p("OUTLINEWIDTH 3")
p("FONT", "Ubuntu-M")
p("TYPE truetype")
p("SIZE 8")
p("POSITION AUTO")
p("PARTIALS FALSE")
p("OFFSET -60 10")

if group == "Lijnvormige obstakels":

with block("LAYER"):
sql = f"geometrie from (SELECT * FROM public.historische_bodeminformatie_lijnvormige_obstakels where categorie = '{filter_value}') as subquery USING srid=28992 USING UNIQUE id"


layer_name_slug = slugify(layer_name)

p("NAME", layer_name_slug)
p("INCLUDE", "connection/dataservices.inc")
p("DATA", sql)
p('GROUP', slugify(group))
p("TYPE LINE")
p("TEMPLATE", "fooOnlyForWMSGetFeatureInfo.html")
p("LABELITEM", "beschrijving")


with block("METADATA"):
q("ows_title", layer_name)
q('ows_group_title', group)
q("wms_include_items", "all")
q("ows_abstract", 'Lijnvormige obstakels')
q("gml_featureid", "id")
q("gml_geometries", "geometrie")
q("gml_geometry_type", "linestring")
q("gml_include_items", "all")
q("gml_types", "auto")


with block("CLASS"):
p("NAME", f"{layer_name_slug}")
p("TITLE", f"{layer_name}")

with block("STYLE"):
p(f'COLOR "{colors[0]}"')
p("OPACITY", 40)
p(f'OUTLINECOLOR "{colors[0]}"')
p("WIDTH ", 2)
if colors[1] == True:
with block("PATTERN"):
print ("10 5")

with block("LABEL"):
p("MAXSCALEDENOM 3000")
p("COLOR 0 0 0")
p("OUTLINECOLOR 255 255 255")
p("OUTLINEWIDTH 3")
p("FONT", "Ubuntu-M")
p("TYPE truetype")
p("SIZE 8")
p("POSITION AUTO")
p("PARTIALS FALSE")
p("OFFSET -60 10")

if group == "Dempingen en ophogingen":

with block("LAYER"):
sql = f"geometrie from (SELECT * FROM public.historische_bodeminformatie_dempingen_en_ophogingen where categorie = '{filter_value}') as subquery USING srid=7415 USING UNIQUE id"


layer_name_slug = slugify(layer_name)

p("NAME", layer_name_slug)
p("INCLUDE", "connection/dataservices.inc")
p("DATA", sql)
p('GROUP', slugify(group))
p("TYPE POLYGON")
p("TEMPLATE", "fooOnlyForWMSGetFeatureInfo.html")


with block("METADATA"):
q("ows_title", layer_name)
q('ows_group_title', group)
q("wms_include_items", "all")
q("ows_abstract", 'Dempingen en ophogingen')
q("gml_featureid", "id")
q("gml_geometries", "geometrie")
q("gml_geometry_type", "polygon")
q("gml_include_items", "all")
q("gml_types", "auto")


with block("CLASS"):
p("NAME", f"{layer_name_slug}")
p("TITLE", f"{layer_name}")

with block("STYLE"):
p(f'COLOR "{colors[0]}"')
p("OPACITY", 40)
p(f'OUTLINECOLOR "{colors[0]}"')
p("WIDTH ", 2)

#ik verdubbel het label omdat er twee opties zijn, ik krijg het simpeler even niet gefixt..
with block("LABEL"):
p("EXPRESSION ([van_minimaal_jaar] = [van_maximaal_jaar])")
p("TEXT '[van_minimaal_jaar]'")
p("MAXSCALEDENOM 3000")
p("COLOR 0 0 0")
p(f'OUTLINECOLOR "{colors[0]}"')
p("OUTLINEWIDTH 1.5")
p("FONT", "Ubuntu-M")
p("TYPE truetype")
p("SIZE 8")
p("POSITION AUTO")
p("PARTIALS FALSE")

with block("LABEL"):
p("EXPRESSION ([van_minimaal_jaar] != [van_maximaal_jaar] AND LENGTH('[van_minimaal_jaar]') > 0 AND LENGTH('[van_maximaal_jaar]') > 0)")
p("TEXT '[van_minimaal_jaar] - [van_maximaal_jaar]'")
p("MAXSCALEDENOM 3000")
p("COLOR 0 0 0")
p(f'OUTLINECOLOR "{colors[0]}"')
p("OUTLINEWIDTH 1.5")
p("FONT", "Ubuntu-M")
p("TYPE truetype")
p("SIZE 8")
p("POSITION AUTO")
p("PARTIALS FALSE")

with block("LABEL"):
p("EXPRESSION (LENGTH('[van_maximaal_jaar]') = 0)")
p("TEXT '[van_minimaal_jaar]'")
p("MAXSCALEDENOM 3000")
p("COLOR 0 0 0")
p(f'OUTLINECOLOR "{colors[0]}"')
p("OUTLINEWIDTH 1.5")
p("FONT", "Ubuntu-M")
p("TYPE truetype")
p("SIZE 8")
p("POSITION AUTO")
p("PARTIALS FALSE")
Loading

0 comments on commit de95c14

Please sign in to comment.