diff --git a/assets/layers/power_line/power_line.json b/assets/layers/power_line/power_line.json
new file mode 100644
index 0000000000..1c73fab0a1
--- /dev/null
+++ b/assets/layers/power_line/power_line.json
@@ -0,0 +1,137 @@
+{
+ "id": "power_line",
+ "name": {
+ "en": "Power Lines",
+ "nl": "Elektriciteitsleidingen"
+ },
+ "description": {
+ "en": "Layer showing high-voltage power lines.",
+ "nl": "Laag met hoogspanningsleidingen"
+ },
+ "source": {
+ "osmTags": "power=line"
+ },
+ "minzoom": 11,
+ "title": {
+ "render": {
+ "en": "Power Line"
+ }
+ },
+ "pointRendering": [
+ {
+ "marker": [
+ {
+ "icon": {
+ "render": "bug"
+ }
+ }
+ ],
+ "location": [
+ "point"
+ ]
+ }
+ ],
+ "lineRendering": [
+ {
+ "color": "#ffcc00",
+ "width": 6,
+ "dashArray": "5 5",
+ "imageAlongWay": "./assets/svg/lightning.svg"
+ }
+ ],
+ "tagRenderings": [
+ {
+ "builtin": "operator",
+ "override": {
+ "question": {
+ "en": "Who operates this power line?"
+ },
+ "render": {
+ "en": "This power line is operated by {operator}."
+ }
+ }
+ },
+ {
+ "id": "voltage",
+ "question": {
+ "en": "What is the voltage of this power line?"
+ },
+ "render": {
+ "en": "This power line operates at {voltage} volts."
+ },
+ "freeform": {
+ "key": "voltage",
+ "type": "pnat",
+ "placeholder": {
+ "en": "e.g., 110000"
+ }
+ },
+ "mappings": [
+ {
+ "if": "voltage=110000",
+ "then": {
+ "en": "The voltage of this power line is 110 kV."
+ }
+ },
+ {
+ "if": "voltage=220000",
+ "then": {
+ "en": "The voltage of this power line is 220 kV."
+ }
+ }
+ ]
+ },
+ {
+ "id": "cables",
+ "question": {
+ "en": "How many cables does this power line have?"
+ },
+ "render": {
+ "en": "This power line has {cables} cables."
+ },
+ "freeform": {
+ "key": "cables",
+ "type": "pnat",
+ "placeholder": {
+ "en": "e.g., 3"
+ }
+ }
+ },
+ {
+ "id": "frequency",
+ "question": {
+ "en": "What is the frequency of this power line?"
+ },
+ "render": {
+ "en": "This power line operates at a frequency of {frequency} Hz."
+ },
+ "freeform": {
+ "key": "frequency",
+ "type": "pnat",
+ "placeholder": {
+ "en": "e.g., 50"
+ }
+ }
+ },
+ {
+ "id": "circuits",
+ "question": {
+ "en": "How many circuits does this power line have?"
+ },
+ "render": {
+ "en": "This power line has {circuits} circuits."
+ },
+ "freeform": {
+ "key": "circuits",
+ "type": "pnat",
+ "placeholder": {
+ "en": "e.g., 2"
+ }
+ }
+ }
+ ],
+ "allowMove": {
+ "enableImproveAccuracy": true,
+ "enableRelocation": false
+ }
+}
\ No newline at end of file
diff --git a/assets/layers/power_pole/license_info.json b/assets/layers/power_pole/license_info.json
new file mode 100644
index 0000000000..de8264125a
--- /dev/null
+++ b/assets/layers/power_pole/license_info.json
@@ -0,0 +1,102 @@
+[
+ {
+ "path": "power_pole_1_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_pole_2_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_pole_3_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_pole_4_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_pole_asymmetric.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_pole_asymmetric_armless.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_pole_delta.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_pole_flag.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_pole_triangle.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_pole_triangle_armless.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole.json b/assets/layers/power_pole/power_pole.json
new file mode 100644
index 0000000000..e1a8365ada
--- /dev/null
+++ b/assets/layers/power_pole/power_pole.json
@@ -0,0 +1,265 @@
+{
+ "id": "power_pole",
+ "name": {
+ "en": "Power Poles",
+ "nl": "Elektriciteitspalen"
+ },
+ "description": {
+ "en": "Layer showing power poles.",
+ "nl": "Laag die elektriciteitspalen toont."
+ },
+ "source": {
+ "osmTags": "power=pole"
+ },
+ "minzoom": 16,
+ "title": {
+ "render": {
+ "en": "Power Pole"
+ }
+ },
+ "pointRendering": [
+ {
+ "marker": [
+ {
+ "icon": {
+ "render": "./assets/layers/power_pole/power_pole_1_level.svg",
+ "mappings": [
+ {
+ "if": "design=two-level",
+ "then": "./assets/layers/power_pole/power_pole_2_level.svg"
+ },
+ {
+ "if": "design=three-level",
+ "then": "./assets/layers/power_pole/power_pole_3_level.svg"
+ },
+ {
+ "if": "design=four-level",
+ "then": "./assets/layers/power_pole/power_pole_4_level.svg"
+ },
+ {
+ "if": "design=asymmetric",
+ "then": "./assets/layers/power_pole/power_pole_asymmetric.svg"
+ },
+ {
+ "if": "design=triangle",
+ "then": "./assets/layers/power_pole/power_pole_triangle.svg"
+ },
+ {
+ "if": "design=armless_triangle",
+ "then": "./assets/layers/power_pole/power_pole_triangle_armless.svg"
+ },
+ {
+ "if": "design=flag",
+ "then": "./assets/layers/power_pole/power_pole_flag.svg"
+ },
+ {
+ "if": {
+ "or": [
+ "design=delta",
+ "design=delta_two_level",
+ "design=delta_three_level"
+ ]
+ },
+ "then": "./assets/layers/power_pole/power_pole_delta.svg"
+ }
+ ]
+ }
+ }
+ ],
+ "location": [
+ "point",
+ "centroid"
+ ]
+ }
+ ],
+ "tagRenderings": [
+ {
+ "id": "material",
+ "question": {
+ "en": "What material is this power pole made of?"
+ },
+ "render": {
+ "en": "This power pole is made of {material}."
+ },
+ "freeform": {
+ "key": "material",
+ "type": "string",
+ "placeholder": {
+ "en": "e.g. wood, concrete, steel"
+ }
+ },
+ "mappings": [
+ {
+ "if": "material=wood",
+ "then": {
+ "en": "This power pole is made of wood."
+ }
+ },
+ {
+ "if": "material=concrete",
+ "then": {
+ "en": "This power pole is made of concrete."
+ }
+ },
+ {
+ "if": "material=steel",
+ "then": {
+ "en": "This power pole is made of steel."
+ }
+ },
+ {
+ "if": "material=reinforced_concrete",
+ "then": {
+ "en": "This power pole is made of reinforced concrete."
+ }
+ },
+ {
+ "if": "material=metal",
+ "then": {
+ "en": "This power pole is made of metal."
+ }
+ }
+ ]
+ },
+ {
+ "id": "design",
+ "question": {
+ "en": "What is the design of this power pole?"
+ },
+ "render": {
+ "en": "This power pole has the design {design}."
+ },
+ "freeform": {
+ "key": "design",
+ "type": "string",
+ "placeholder": {
+ "en": "e.g., delta, asymmetric, triangle"
+ }
+ },
+ "mappings": [
+ {
+ "if": "design=one-level",
+ "then": {
+ "en": "This power pole has a one-level design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_1_level.svg"
+ }
+ },
+ {
+ "if": "design=two-level",
+ "then": {
+ "en": "This power pole has a two-level design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_2_level.svg"
+ }
+ },
+ {
+ "if": "design=three-level",
+ "then": {
+ "en": "This power pole has a three-level design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_3_level.svg"
+ }
+ },
+ {
+ "if": "design=four-level",
+ "then": {
+ "en": "This power pole has a four-level design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_4_level.svg"
+ }
+ },
+ {
+ "if": "design=asymmetric",
+ "then": {
+ "en": "This power pole has an asymmetric design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_asymmetric.svg"
+ }
+ },
+ {
+ "if": "design=triangle",
+ "then": {
+ "en": "This power pole has a triangle design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_triangle.svg"
+ }
+ },
+ {
+ "if": "design=armless_triangle",
+ "then": {
+ "en": "This power pole has an armless triangle design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_triangle_armless.svg"
+ }
+ },
+ {
+ "if": "design=flag",
+ "then": {
+ "en": "This power pole has a flag design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_flag.svg"
+ }
+ },
+ {
+ "if": "design=delta",
+ "then": {
+ "en": "This power pole has a delta design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_delta.svg"
+ }
+ },
+ {
+ "if": "design=delta_two_level",
+ "then": {
+ "en": "This power pole has a two-level delta design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_delta.svg"
+ }
+ },
+ {
+ "if": "design=delta_three_level",
+ "then": {
+ "en": "This power pole has a three-level delta design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_pole/power_pole_delta.svg"
+ }
+ }
+ ]
+ },
+ {
+ "builtin": "ref",
+ "override": {
+ "question": {
+ "en": "What is the reference number of this power pole?"
+ },
+ "render": {
+ "en": "This power pole has the reference number {ref}."
+ }
+ }
+ },
+ {
+ "builtin": "operator",
+ "override": {
+ "question": {
+ "en": "Who operates this power pole?"
+ },
+ "render": {
+ "en": "This power pole is operated by {operator}."
+ }
+ }
+ }
+ ],
+ "allowMove": false
+}
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_1_level.svg b/assets/layers/power_pole/power_pole_1_level.svg
new file mode 100644
index 0000000000..eb070a3ccc
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_1_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_1_level.svg.license b/assets/layers/power_pole/power_pole_1_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_1_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_2_level.svg b/assets/layers/power_pole/power_pole_2_level.svg
new file mode 100644
index 0000000000..27447ca250
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_2_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_2_level.svg.license b/assets/layers/power_pole/power_pole_2_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_2_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_3_level.svg b/assets/layers/power_pole/power_pole_3_level.svg
new file mode 100644
index 0000000000..3e8c90e5eb
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_3_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_3_level.svg.license b/assets/layers/power_pole/power_pole_3_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_3_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_4_level.svg b/assets/layers/power_pole/power_pole_4_level.svg
new file mode 100644
index 0000000000..f26c156cdc
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_4_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_4_level.svg.license b/assets/layers/power_pole/power_pole_4_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_4_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_asymmetric.svg b/assets/layers/power_pole/power_pole_asymmetric.svg
new file mode 100644
index 0000000000..703177670d
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_asymmetric.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_asymmetric.svg.license b/assets/layers/power_pole/power_pole_asymmetric.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_asymmetric.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_asymmetric_armless.svg b/assets/layers/power_pole/power_pole_asymmetric_armless.svg
new file mode 100644
index 0000000000..3bd75ab4c4
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_asymmetric_armless.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_asymmetric_armless.svg.license b/assets/layers/power_pole/power_pole_asymmetric_armless.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_asymmetric_armless.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_delta.svg b/assets/layers/power_pole/power_pole_delta.svg
new file mode 100644
index 0000000000..189f1d6c89
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_delta.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_delta.svg.license b/assets/layers/power_pole/power_pole_delta.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_delta.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_flag.svg b/assets/layers/power_pole/power_pole_flag.svg
new file mode 100644
index 0000000000..653db19da1
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_flag.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_flag.svg.license b/assets/layers/power_pole/power_pole_flag.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_flag.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_triangle.svg b/assets/layers/power_pole/power_pole_triangle.svg
new file mode 100644
index 0000000000..8d0eb81afb
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_triangle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_triangle.svg.license b/assets/layers/power_pole/power_pole_triangle.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_triangle.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_triangle_armless.svg b/assets/layers/power_pole/power_pole_triangle_armless.svg
new file mode 100644
index 0000000000..704842fc05
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_triangle_armless.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_pole/power_pole_triangle_armless.svg.license b/assets/layers/power_pole/power_pole_triangle_armless.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_pole/power_pole_triangle_armless.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/license_info.json b/assets/layers/power_tower/license_info.json
new file mode 100644
index 0000000000..ad46855ef8
--- /dev/null
+++ b/assets/layers/power_tower/license_info.json
@@ -0,0 +1,212 @@
+[
+ {
+ "path": "power_tower_1_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_2_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_3_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_4_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_asymmetric.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_barrel.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_delta.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_delta_2_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_delta_3_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_donau.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_donau_inverse.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_flag.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_guyed_h_frame.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_h_frame.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_h_frame_2_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_portal.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_portal_2_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_portal_3_level.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_triangle.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_x_frame.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ },
+ {
+ "path": "power_tower_y_frame.svg",
+ "license": "CC-BY-SA-4.0",
+ "authors": [
+ "Sergey Vartanov"
+ ],
+ "sources": [
+ "https://enzet.ru/roentgen/"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower.json b/assets/layers/power_tower/power_tower.json
new file mode 100644
index 0000000000..9189d58af9
--- /dev/null
+++ b/assets/layers/power_tower/power_tower.json
@@ -0,0 +1,384 @@
+{
+ "id": "power_tower",
+ "name": {
+ "en": "Power Towers",
+ "nl": "Elektriciteitsmasten"
+ },
+ "description": {
+ "en": "Layer showing power towers.",
+ "nl": "Laag die elektriciteitsmasten toont."
+ },
+ "source": {
+ "osmTags": "power=tower"
+ },
+ "minzoom": 14,
+ "title": {
+ "render": {
+ "en": "Power Tower"
+ }
+ },
+ "pointRendering": [
+ {
+ "marker": [
+ {
+ "icon": {
+ "render": "./assets/layers/power_tower/power_tower_1_level.svg",
+ "mappings": [
+ {
+ "if": "design=two-level",
+ "then": "./assets/layers/power_tower/power_tower_2_level.svg"
+ },
+ {
+ "if": "design=three-level",
+ "then": "./assets/layers/power_tower/power_tower_3_level.svg"
+ },
+ {
+ "if": "design=four-level",
+ "then": "./assets/layers/power_tower/power_tower_4_level.svg"
+ },
+ {
+ "if": "design=asymmetric",
+ "then": "./assets/layers/power_tower/power_tower_asymmetric.svg"
+ },
+ {
+ "if": "design=triangle",
+ "then": "./assets/layers/power_tower/power_tower_triangle.svg"
+ },
+ {
+ "if": "design=flag",
+ "then": "./assets/layers/power_tower/power_tower_flag.svg"
+ },
+ {
+ "if": "design=delta",
+ "then": "./assets/layers/power_tower/power_tower_delta.svg"
+ },
+ {
+ "if": "design=delta_two_level",
+ "then": "./assets/layers/power_tower/power_tower_delta_2_level.svg"
+ },
+ {
+ "if": "design=delta_three_level",
+ "then": "./assets/layers/power_tower/power_tower_delta_3_level.svg"
+ },
+ {
+ "if": "design=donau",
+ "then": "./assets/layers/power_tower/power_tower_donau.svg"
+ },
+ {
+ "if": "design=donau_inverse",
+ "then": "./assets/layers/power_tower/power_tower_donau_inverse.svg"
+ },
+ {
+ "if": "design=barrel",
+ "then": "./assets/layers/power_tower/power_tower_barrel.svg"
+ },
+ {
+ "if": "design=y-frame",
+ "then": "./assets/layers/power_tower/power_tower_y_frame.svg"
+ },
+ {
+ "if": "design=x-frame",
+ "then": "./assets/layers/power_tower/power_tower_x_frame.svg"
+ },
+ {
+ "if": "design=h-frame",
+ "then": "./assets/layers/power_tower/power_tower_h_frame.svg"
+ },
+ {
+ "if": "design=guyed_h_frame",
+ "then": "./assets/layers/power_tower/power_tower_guyed_h_frame.svg"
+ },
+ {
+ "if": "design=portal",
+ "then": "./assets/layers/power_tower/power_tower_portal.svg"
+ },
+ {
+ "if": "design=portal-two-level",
+ "then": "./assets/layers/power_tower/power_tower_portal_2_level.svg"
+ },
+ {
+ "if": "design=portal-three-level",
+ "then": "./assets/layers/power_tower/power_tower_portal_3_level.svg"
+ }
+ ]
+ }
+ }
+ ],
+ "location": [
+ "point",
+ "centroid"
+ ]
+ }
+ ],
+ "tagRenderings": [
+ {
+ "id": "material",
+ "question": {
+ "en": "What material is this power tower made of?"
+ },
+ "render": {
+ "en": "This power tower is made of {material}."
+ },
+ "freeform": {
+ "key": "material",
+ "type": "string",
+ "placeholder": {
+ "en": "e.g. wood, concrete, steel"
+ }
+ },
+ "mappings": [
+ {
+ "if": "material=steel",
+ "then": {
+ "en": "This power tower is made of steel."
+ }
+ },
+ {
+ "if": "material=wood",
+ "then": {
+ "en": "This power tower is made of wood."
+ }
+ },
+ {
+ "if": "material=metal",
+ "then": {
+ "en": "This power tower is made of metal."
+ }
+ },
+ {
+ "if": "material=concrete",
+ "then": {
+ "en": "This power tower is made of concrete."
+ }
+ },
+ {
+ "if": "material=reinforced_concrete",
+ "then": {
+ "en": "This power tower is made of reinforced concrete."
+ }
+ }
+ ]
+ },
+ {
+ "id": "design",
+ "question": {
+ "en": "What is the design of this power tower?"
+ },
+ "render": {
+ "en": "This power tower has the design {design}."
+ },
+ "freeform": {
+ "key": "design",
+ "type": "string",
+ "placeholder": {
+ "en": "e.g., delta, donau, h-frame"
+ }
+ },
+ "mappings": [
+ {
+ "if": "design=one-level",
+ "then": {
+ "en": "This power tower has a one-level design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_1_level.svg"
+ }
+ },
+ {
+ "if": "design=two-level",
+ "then": {
+ "en": "This power tower has a two-level design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_2_level.svg"
+ }
+ },
+ {
+ "if": "design=three-level",
+ "then": {
+ "en": "This power tower has a three-level design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_3_level.svg"
+ }
+ },
+ {
+ "if": "design=four-level",
+ "then": {
+ "en": "This power tower has a four-level design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_4_level.svg"
+ }
+ },
+ {
+ "if": "design=asymmetric",
+ "then": {
+ "en": "This power tower has an asymmetric design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_asymmetric.svg"
+ }
+ },
+ {
+ "if": "design=triangle",
+ "then": {
+ "en": "This power tower has a triangle design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_triangle.svg"
+ }
+ },
+ {
+ "if": "design=flag",
+ "then": {
+ "en": "This power tower has a flag design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_flag.svg"
+ }
+ },
+ {
+ "if": "design=delta",
+ "then": {
+ "en": "This power tower has a delta design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_delta.svg"
+ }
+ },
+ {
+ "if": "design=delta_two_level",
+ "then": {
+ "en": "This power tower has a two-level delta design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_delta_2_level.svg"
+ }
+ },
+ {
+ "if": "design=delta_three_level",
+ "then": {
+ "en": "This power tower has a three-level delta design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_delta_3_level.svg"
+ }
+ },
+ {
+ "if": "design=donau",
+ "then": {
+ "en": "This power tower has a Donau design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_donau.svg"
+ }
+ },
+ {
+ "if": "design=donau_inverse",
+ "then": {
+ "en": "This power tower has an inverse Donau design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_donau_inverse.svg"
+ }
+ },
+ {
+ "if": "design=barrel",
+ "then": {
+ "en": "This power tower has a barrel design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_barrel.svg"
+ }
+ },
+ {
+ "if": "design=y-frame",
+ "then": {
+ "en": "This power tower has a Y-frame design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_y_frame.svg"
+ }
+ },
+ {
+ "if": "design=x-frame",
+ "then": {
+ "en": "This power tower has an X-frame design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_x_frame.svg"
+ }
+ },
+ {
+ "if": "design=h-frame",
+ "then": {
+ "en": "This power tower has an H-frame design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_h_frame.svg"
+ }
+ },
+ {
+ "if": "design=guyed_h-frame",
+ "then": {
+ "en": "This power tower has a guyed H-frame design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_guyed_h_frame.svg"
+ }
+ },
+ {
+ "if": "design=portal",
+ "then": {
+ "en": "This power tower has a portal design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_portal.svg"
+ }
+ },
+ {
+ "if": "design=portal-two-level",
+ "then": {
+ "en": "This power tower has a two-level portal design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_portal_2_level.svg"
+ }
+ },
+ {
+ "if": "design=portal-three-level",
+ "then": {
+ "en": "This power tower has a three-level portal design."
+ },
+ "icon": {
+ "path": "./assets/layers/power_tower/power_tower_portal_3_level.svg"
+ }
+ }
+ ]
+ },
+ {
+ "builtin": "ref",
+ "override": {
+ "question": {
+ "en": "What is the reference number of this power tower?"
+ },
+ "render": {
+ "en": "This power tower has the reference number {ref}."
+ }
+ }
+ },
+ {
+ "builtin": "operator",
+ "override": {
+ "question": {
+ "en": "Who operates this power tower?"
+ },
+ "render": {
+ "en": "This power tower is operated by {operator}."
+ }
+ }
+ }
+ ],
+ "allowMove": false
+}
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_1_level.svg b/assets/layers/power_tower/power_tower_1_level.svg
new file mode 100644
index 0000000000..f3cee997e2
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_1_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_1_level.svg.license b/assets/layers/power_tower/power_tower_1_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_1_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_2_level.svg b/assets/layers/power_tower/power_tower_2_level.svg
new file mode 100644
index 0000000000..296ee3b0f3
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_2_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_2_level.svg.license b/assets/layers/power_tower/power_tower_2_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_2_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_3_level.svg b/assets/layers/power_tower/power_tower_3_level.svg
new file mode 100644
index 0000000000..d19516dd8f
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_3_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_3_level.svg.license b/assets/layers/power_tower/power_tower_3_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_3_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_4_level.svg b/assets/layers/power_tower/power_tower_4_level.svg
new file mode 100644
index 0000000000..cea32a0b26
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_4_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_4_level.svg.license b/assets/layers/power_tower/power_tower_4_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_4_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_asymmetric.svg b/assets/layers/power_tower/power_tower_asymmetric.svg
new file mode 100644
index 0000000000..e22dc4a715
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_asymmetric.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_asymmetric.svg.license b/assets/layers/power_tower/power_tower_asymmetric.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_asymmetric.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_barrel.svg b/assets/layers/power_tower/power_tower_barrel.svg
new file mode 100644
index 0000000000..eb340d2eb4
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_barrel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_barrel.svg.license b/assets/layers/power_tower/power_tower_barrel.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_barrel.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_delta.svg b/assets/layers/power_tower/power_tower_delta.svg
new file mode 100644
index 0000000000..a43704bf16
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_delta.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_delta.svg.license b/assets/layers/power_tower/power_tower_delta.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_delta.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_delta_2_level.svg b/assets/layers/power_tower/power_tower_delta_2_level.svg
new file mode 100644
index 0000000000..546f04d93c
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_delta_2_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_delta_2_level.svg.license b/assets/layers/power_tower/power_tower_delta_2_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_delta_2_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_delta_3_level.svg b/assets/layers/power_tower/power_tower_delta_3_level.svg
new file mode 100644
index 0000000000..ad587721f3
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_delta_3_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_delta_3_level.svg.license b/assets/layers/power_tower/power_tower_delta_3_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_delta_3_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_donau.svg b/assets/layers/power_tower/power_tower_donau.svg
new file mode 100644
index 0000000000..e5a6e0b094
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_donau.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_donau.svg.license b/assets/layers/power_tower/power_tower_donau.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_donau.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_donau_inverse.svg b/assets/layers/power_tower/power_tower_donau_inverse.svg
new file mode 100644
index 0000000000..e1d11e7f82
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_donau_inverse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_donau_inverse.svg.license b/assets/layers/power_tower/power_tower_donau_inverse.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_donau_inverse.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_flag.svg b/assets/layers/power_tower/power_tower_flag.svg
new file mode 100644
index 0000000000..65ef7d1384
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_flag.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_flag.svg.license b/assets/layers/power_tower/power_tower_flag.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_flag.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_guyed_h_frame.svg b/assets/layers/power_tower/power_tower_guyed_h_frame.svg
new file mode 100644
index 0000000000..449ef72327
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_guyed_h_frame.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_guyed_h_frame.svg.license b/assets/layers/power_tower/power_tower_guyed_h_frame.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_guyed_h_frame.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_h_frame.svg b/assets/layers/power_tower/power_tower_h_frame.svg
new file mode 100644
index 0000000000..5e2761a173
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_h_frame.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_h_frame.svg.license b/assets/layers/power_tower/power_tower_h_frame.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_h_frame.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_h_frame_2_level.svg b/assets/layers/power_tower/power_tower_h_frame_2_level.svg
new file mode 100644
index 0000000000..f086630a76
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_h_frame_2_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_h_frame_2_level.svg.license b/assets/layers/power_tower/power_tower_h_frame_2_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_h_frame_2_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_portal.svg b/assets/layers/power_tower/power_tower_portal.svg
new file mode 100644
index 0000000000..eb8b280b02
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_portal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_portal.svg.license b/assets/layers/power_tower/power_tower_portal.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_portal.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_portal_2_level.svg b/assets/layers/power_tower/power_tower_portal_2_level.svg
new file mode 100644
index 0000000000..665826083d
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_portal_2_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_portal_2_level.svg.license b/assets/layers/power_tower/power_tower_portal_2_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_portal_2_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_portal_3_level.svg b/assets/layers/power_tower/power_tower_portal_3_level.svg
new file mode 100644
index 0000000000..a2facddc2d
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_portal_3_level.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_portal_3_level.svg.license b/assets/layers/power_tower/power_tower_portal_3_level.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_portal_3_level.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_triangle.svg b/assets/layers/power_tower/power_tower_triangle.svg
new file mode 100644
index 0000000000..01a8e24bd6
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_triangle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_triangle.svg.license b/assets/layers/power_tower/power_tower_triangle.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_triangle.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_x_frame.svg b/assets/layers/power_tower/power_tower_x_frame.svg
new file mode 100644
index 0000000000..6cca19e100
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_x_frame.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_x_frame.svg.license b/assets/layers/power_tower/power_tower_x_frame.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_x_frame.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_y_frame.svg b/assets/layers/power_tower/power_tower_y_frame.svg
new file mode 100644
index 0000000000..f60c57e4f0
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_y_frame.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/layers/power_tower/power_tower_y_frame.svg.license b/assets/layers/power_tower/power_tower_y_frame.svg.license
new file mode 100644
index 0000000000..61df2a1b47
--- /dev/null
+++ b/assets/layers/power_tower/power_tower_y_frame.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: Sergey Vartanov
+SPDX-License-Identifier: CC-BY-SA-4.0
\ No newline at end of file
diff --git a/assets/layers/street_cabinet/street_cabinet.json b/assets/layers/street_cabinet/street_cabinet.json
index ef2e26f64c..963edf4485 100644
--- a/assets/layers/street_cabinet/street_cabinet.json
+++ b/assets/layers/street_cabinet/street_cabinet.json
@@ -29,6 +29,12 @@
"anchor": "bottom"
}
],
+ "lineRendering": [
+ {
+ "color": "#3c3c3c",
+ "fillColor": "#3c3c3c6a"
+ }
+ ],
"presets": [
{
"title": {
@@ -51,25 +57,64 @@
"if": "utility=power",
"then": {
"en": "This street cabinet is for power distribution."
- }
+ },
+ "addExtraTags": [
+ "street_cabinet="
+ ]
},
{
"if": "utility=telecom",
"then": {
"en": "This street cabinet is for telecommunications."
- }
+ },
+ "addExtraTags": [
+ "street_cabinet="
+ ]
},
{
"if": "utility=gas",
"then": {
"en": "This street cabinet is for gas utilities."
- }
+ },
+ "addExtraTags": [
+ "street_cabinet="
+ ]
},
{
"if": "utility=street_lighting",
"then": {
"en": "This street cabinet is for street lighting."
- }
+ },
+ "addExtraTags": [
+ "street_cabinet="
+ ]
+ },
+ {
+ "if": "street_cabinet=traffic_control",
+ "then": {
+ "en": "This street cabinet is for traffic control systems like traffic signals or movable barriers."
+ },
+ "addExtraTags": [
+ "utility="
+ ]
+ },
+ {
+ "if": "street_cabinet=traffic_monitoring",
+ "then": {
+ "en": "This street cabinet is for traffic monitoring systems."
+ },
+ "addExtraTags": [
+ "utility="
+ ]
+ },
+ {
+ "if": "street_cabinet=postal_service",
+ "then": {
+ "en": "This street cabinet is used for storing pending mail before local delivery."
+ },
+ "addExtraTags": [
+ "utility="
+ ]
}
]
},
diff --git a/assets/layers/telecom_exchange/license_info.json b/assets/layers/telecom/license_info.json
similarity index 100%
rename from assets/layers/telecom_exchange/license_info.json
rename to assets/layers/telecom/license_info.json
diff --git a/assets/layers/telecom/telecom.json b/assets/layers/telecom/telecom.json
new file mode 100644
index 0000000000..f15947a874
--- /dev/null
+++ b/assets/layers/telecom/telecom.json
@@ -0,0 +1,162 @@
+{
+ "id": "telecom",
+ "name": {
+ "en": "Telecom"
+ },
+ "description": {
+ "en": "Layer showing telecom exchanges and other related features like connection points and distribution points."
+ },
+ "source": {
+ "osmTags": {
+ "or": [
+ "telecom=exchange",
+ "telecom=distribution_point",
+ "telecom=connection_point"
+ ]
+ }
+ },
+ "minzoom": 9,
+ "title": {
+ "render": {
+ "en": "Telecom Exchange"
+ },
+ "mappings": [
+ {
+ "if": "telecom=connection_point",
+ "then": {
+ "en": "Telecom Connection Point"
+ }
+ },
+ {
+ "if": "telecom=distribution_point",
+ "then": {
+ "en": "Telecom Distribution Point"
+ }
+ }
+ ]
+ },
+ "pointRendering": [
+ {
+ "marker": [
+ {
+ "icon": "./assets/layers/telecom/telecom_exchange.svg"
+ }
+ ],
+ "location": [
+ "point",
+ "centroid"
+ ]
+ }
+ ],
+ "lineRendering": [
+ {
+ "color": "#3c3c3c",
+ "fillColor": "#3c3c3c6a"
+ }
+ ],
+ "presets": [
+ {
+ "title": {
+ "en": "a telecom exchange"
+ },
+ "tags": [
+ "telecom=exchange",
+ "utility=telecom"
+ ]
+ },
+ {
+ "title": {
+ "en": "a telecom connection point"
+ },
+ "tags": [
+ "telecom=connection_point",
+ "utility=telecom"
+ ]
+ },
+ {
+ "title": {
+ "en": "a telecom distribution point"
+ },
+ "tags": [
+ "telecom=distribution_point",
+ "utility=telecom"
+ ]
+ }
+ ],
+ "tagRenderings": [
+ {
+ "id": "located_in",
+ "question": {
+ "en": "Where is this feature located?"
+ },
+ "mappings": [
+ {
+ "if": "building~*",
+ "then": {
+ "en": "This feature is located in a building."
+ },
+ "hideInAnswer": true
+ },
+ {
+ "if": "man_made=street_cabinet",
+ "then": {
+ "en": "This feature is located in a street cabinet."
+ }
+ },
+ {
+ "if": {
+ "and": [
+ "man_made=",
+ "building="
+ ]
+ },
+ "then": {
+ "en": "This feature is most likely located in a building."
+ },
+ "hideInAnswer": true
+ }
+ ]
+ },
+ {
+ "builtin": "operator",
+ "override": {
+ "question": {
+ "en": "What is the operator of this telecom point?"
+ },
+ "render": {
+ "en": "This telecom point is operated by {operator}."
+ }
+ }
+ },
+ {
+ "id": "medium",
+ "question": {
+ "en": "What is the medium used by this telecom point?"
+ },
+ "mappings": [
+ {
+ "if": "telecom:medium=copper",
+ "then": {
+ "en": "The landlines connected to this telecom point use copper wiring."
+ }
+ },
+ {
+ "if": "telecom:medium=fibre",
+ "then": {
+ "en": "The landlines connected to this telecom point use fibre optics."
+ }
+ },
+ {
+ "if": "telecom:medium=coaxial",
+ "then": {
+ "en": "The landlines connected to this telecom point use coaxial cable."
+ }
+ }
+ ]
+ }
+ ],
+ "allowMove": {
+ "enableImproveAccuracy": true,
+ "enableRelocation": false
+ }
+}
\ No newline at end of file
diff --git a/assets/layers/telecom_exchange/telecom_exchange.svg b/assets/layers/telecom/telecom_exchange.svg
similarity index 100%
rename from assets/layers/telecom_exchange/telecom_exchange.svg
rename to assets/layers/telecom/telecom_exchange.svg
diff --git a/assets/layers/telecom_exchange/telecom_exchange.svg.license b/assets/layers/telecom/telecom_exchange.svg.license
similarity index 100%
rename from assets/layers/telecom_exchange/telecom_exchange.svg.license
rename to assets/layers/telecom/telecom_exchange.svg.license
diff --git a/assets/layers/telecom_exchange/telecom_exchange.json b/assets/layers/telecom_exchange/telecom_exchange.json
deleted file mode 100644
index d822e11831..0000000000
--- a/assets/layers/telecom_exchange/telecom_exchange.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "id": "telecom_exchange",
- "name": {
- "en": "Telecom Exchanges"
- },
- "description": {
- "en": "Layer showing telecom exchanges, which are facilities that connect telephone lines and manage telecommunications traffic."
- },
- "source": {
- "osmTags": "telecom=exchange"
- },
- "minzoom": 9,
- "title": {
- "render": {
- "en": "Telecom Exchange"
- }
- },
- "pointRendering": [
- {
- "marker": [
- {
- "icon": "./assets/layers/telecom_exchange/telecom_exchange.svg"
- }
- ],
- "location": [
- "point",
- "centroid"
- ]
- }
- ],
- "presets": [
- {
- "title": {
- "en": "a telecom exchange"
- },
- "tags": [
- "telecom=exchange"
- ]
- }
- ],
- "tagRenderings": [
- {
- "builtin": "operator",
- "override": {
- "question": {
- "en": "What is the operator of this telecom exchange?"
- },
- "render": {
- "en": "This telecom exchange is operated by {operator}."
- }
- }
- },
- {
- "id": "medium",
- "question": {
- "en": "What is the medium used by this telecom exchange?"
- },
- "mappings": [
- {
- "if": "telecom:medium=copper",
- "then": {
- "en": "The landlines connected to this telecom exchange use copper wiring."
- }
- },
- {
- "if": "telecom:medium=fibre",
- "then": {
- "en": "The landlines connected to this telecom exchange use fibre optics."
- }
- },
- {
- "if": "telecom:medium=coaxial",
- "then": {
- "en": "The landlines connected to this telecom exchange use coaxial cable."
- }
- }
- ]
- }
- ],
- "allowMove": {
- "enableImproveAccuracy": true,
- "enableRelocation": false
- }
-}
\ No newline at end of file
diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json
index 90ca8bed06..0c3b2aad83 100644
--- a/assets/svg/license_info.json
+++ b/assets/svg/license_info.json
@@ -69,14 +69,6 @@
],
"sources": []
},
- {
- "path": "blocked.svg",
- "license": "CC0-1.0",
- "authors": [
- "Pieter Vander Vennet"
- ],
- "sources": []
- },
{
"path": "brick_wall_raw.svg",
"license": "CC0-1.0",
@@ -474,6 +466,16 @@
"https://liberapay.com/"
]
},
+ {
+ "path": "lightning.svg",
+ "license": "CC0-1.0",
+ "authors": [
+ "FontAwesome"
+ ],
+ "sources": [
+ "https://commons.wikimedia.org/wiki/File:Power-lightning_icon-icons.com_74466.svg"
+ ]
+ },
{
"path": "loading.svg",
"license": "TRIVIAL",
diff --git a/assets/svg/lightning.svg b/assets/svg/lightning.svg
new file mode 100644
index 0000000000..c085a87a66
--- /dev/null
+++ b/assets/svg/lightning.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/assets/svg/lightning.svg.license b/assets/svg/lightning.svg.license
new file mode 100644
index 0000000000..e0b474620a
--- /dev/null
+++ b/assets/svg/lightning.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: FontAwesome
+SPDX-License-Identifier: CC0-1.0
\ No newline at end of file
diff --git a/assets/themes/infrastructure/infrastructure.json b/assets/themes/infrastructure/infrastructure.json
index 4430e2d00e..df92efa322 100644
--- a/assets/themes/infrastructure/infrastructure.json
+++ b/assets/themes/infrastructure/infrastructure.json
@@ -10,13 +10,16 @@
},
"icon": "./assets/layers/street_cabinet/street_cabinet.svg",
"layers": [
+ "telecom",
+ "power_tower",
+ "power_pole",
+ "power_line",
+ "street_cabinet",
{
"builtin": "utility_pole",
"override": {
"minzoom": 17
}
- },
- "street_cabinet",
- "telecom_exchange"
+ }
]
}
\ No newline at end of file
diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
index ba471a9390..4bf42d5170 100644
--- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json
+++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
@@ -696,6 +696,10 @@
{
"if": "theme=winter_service",
"then": "./assets/svg/snowflake.svg"
+ },
+ {
+ "if": "theme=zhv",
+ "then": "./assets/layers/transit_stops/bus_stop.svg"
}
]
}
diff --git a/src/Models/Constants.ts b/src/Models/Constants.ts
index 4b627d7a99..7595ef69db 100644
--- a/src/Models/Constants.ts
+++ b/src/Models/Constants.ts
@@ -249,6 +249,7 @@ export default class Constants {
"key",
"invalid",
"invalid",
+ "lightning",
"link",
"location",
"location_empty",