-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathgen_huishoudelijkafvalservicegebieden.py
150 lines (115 loc) · 6.4 KB
/
gen_huishoudelijkafvalservicegebieden.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
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 = [
("Servicegebieden", "Servicegebieden Rest", "Rest"),
("Servicegebieden", "Servicegebieden Glas", "Glas"),
("Servicegebieden", "Servicegebieden Papier", "Papier"),
("Servicegebieden", "Servicegebieden Textiel", "Textiel"),
("Servicegebieden", "Servicegebieden GFT", "GFT"),
("Servicegebiedenlocatie", "Servicegebiedenlocatie Rest", "Rest"),
("Servicegebiedenlocatie", "Servicegebiedenlocatie Glas", "Glas"),
("Servicegebiedenlocatie", "Servicegebiedenlocatie Papier", "Papier"),
("Servicegebiedenlocatie", "Servicegebiedenlocatie Textiel", "Textiel"),
("Servicegebiedenlocatie", "Servicegebiedenlocatie GFT", "GFT")
]
colors = ("#8dd3c7", "#ffffb3", "#bebada", "#fb8072", "#80b1d3", "#fdb462", "#b3de69", "#fccde5", "#d9d9d9", "#bc80bd")
with block("MAP"):
p("NAME", "huishoudelijkafvalservicegebieden")
p("INCLUDE", "header.inc")
with block("WEB"):
with block("METADATA"):
q("ows_title", "Huishoudelijkafval Servicegebieden")
q("ows_onlineresource", "MAP_URL_REPLACE/maps/huishoudelijkafvalservicegebieden")
q("ows_abstract", "Servicegebieden van huishoudelijkafvalcontainers",)
for group, layer_name, filter_value in layers:
if group == 'Servicegebieden':
with block("LAYER"):
sql = f"geometrie from (SELECT *, (regexp_matches(servicegebieden_locatie_id, '[0-9](?!.*[0-9])'))[1] AS last_numeric_digit FROM huishoudelijkafval_servicegebieden where fractie_omschrijving = '{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")
with block("PROJECTION"):
q("init=epsg:28992")
with block("METADATA"):
q("ows_title", layer_name)
q('ows_group_title', group)
q("wms_include_items", "all")
q("ows_abstract", "Servicegebieden")
q("gml_featureid", "id")
q("gml_geometries", "geometry")
q("gml_geometry_type", "polygon")
q("gml_include_items", "all")
q("gml_types", "auto")
q("wms_enable_request", "!GetLegendGraphic")
for i in range(10):
with block("CLASS"):
p("NAME", f"{i}")
# kleine aanpassing aan de print structuur om te voorkomen dat er '' om deze komt.
# de laatste digit wordt gebruikt om zowel een groep te maken als een kleur uit de lijst te pakken,
#dat maakt dat zowel het cluster als het gebied dezelfde kleur krijgen.
print (f'EXPRESSION ("[last_numeric_digit]" eq "{i}")')
with block("STYLE"):
p(f'COLOR "{colors[i]}"')
p("OPACITY", 90)
p(f'OUTLINECOLOR "{colors[i]}"')
p("WIDTH ", 2)
if group == 'Servicegebiedenlocatie':
with block("LAYER"):
sql = f"geometrie from (SELECT *, (regexp_matches(id, '[0-9](?!.*[0-9])'))[1] AS last_numeric_digit FROM huishoudelijkafval_servicegebieden_locatie where cluster_fractie_omschrijving = '{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 POINT")
# p("MINSCALEDENOM 10")
# p("MAXSCALEDENOM 9001")
p("TEMPLATE", "fooOnlyForWMSGetFeatureInfo.html")
p("LABELITEM", "aantal_woningen")
with block("PROJECTION"):
q("init=epsg:28992")
with block("METADATA"):
q("ows_title", layer_name)
q('ows_group_title', group)
q("wms_include_items", "all")
q("ows_abstract", "Servicegebieden locaties")
q("gml_featureid", "id")
q("gml_geometries", "geometry")
q("gml_geometry_type", "point")
q("gml_include_items", "all")
q("gml_types", "auto")
q("wms_enable_request", "!GetLegendGraphic")
for i in range(10):
with block("CLASS"):
p("NAME", f"{i}")
# kleine aanpassing aan de print structuur om te voorkomen dat er '' om deze komt.
# de laatste digit wordt gebruikt om zowel een groep te maken als een kleur uit de lijst te pakken,
#dat maakt dat zowel het cluster als het gebied dezelfde kleur krijgen.
print (f'EXPRESSION ("[last_numeric_digit]" eq "{i}")')
with block("STYLE"):
p("SYMBOL", "stip")
p("SIZE 16")
p(f"COLOR '{colors[i]}'")
p('OUTLINECOLOR 0 0 0')
p ('WIDTH 1')
with block("LABEL"):
p("MINSCALEDENOM 100")
p("MAXSCALEDENOM 1000")
p("COLOR 0 0 0")
p("OUTLINECOLOR 255 255 255")
p("OUTLINEWIDTH 3")
p("FONT", "Ubuntu-M")
p("TYPE truetype")
p("SIZE 10")
p("POSITION AUTO")
p("PARTIALS FALSE")
p("OFFSET -30 10")