diff --git a/layers/poi/mapping.yaml b/layers/poi/mapping.yaml
index 9b24e0e..117705c 100644
--- a/layers/poi/mapping.yaml
+++ b/layers/poi/mapping.yaml
@@ -18,6 +18,7 @@ def_poi_mapping_amenity: &poi_mapping_amenity
- biergarten
- bus_station
- cafe
+ - charging_station
- cinema
- clinic
- college
diff --git a/layers/poi/mapping_diagram.png b/layers/poi/mapping_diagram.png
index ccd3fe7..1b5726f 100644
Binary files a/layers/poi/mapping_diagram.png and b/layers/poi/mapping_diagram.png differ
diff --git a/layers/poi/poi.yaml b/layers/poi/poi.yaml
index e56a964..937292a 100644
--- a/layers/poi/poi.yaml
+++ b/layers/poi/poi.yaml
@@ -106,6 +106,8 @@ layer:
subclass: ['castle', 'ruins']
atm:
subclass: ['atm']
+ fuel:
+ subclass: ['fuel', 'charging_station']
subclass:
description: |
Original value of either the
diff --git a/layers/poi/style.json b/layers/poi/style.json
index 84ca222..33c0885 100644
--- a/layers/poi/style.json
+++ b/layers/poi/style.json
@@ -997,7 +997,8 @@
"class",
"car",
"bicycle_parking",
- "fuel"
+ "fuel",
+ "charging_station"
]
],
"order": 170
diff --git a/layers/poi/update_poi_point.sql b/layers/poi/update_poi_point.sql
index f7c9a12..ddabb77 100644
--- a/layers/poi/update_poi_point.sql
+++ b/layers/poi/update_poi_point.sql
@@ -43,11 +43,11 @@ BEGIN
-- (using name for parcel lockers is discouraged, see osm wiki)
UPDATE osm_poi_point
SET (name, tags) = (
- CONCAT(COALESCE(tags -> 'brand', tags -> 'operator'), concat(' ', tags -> 'ref')),
- tags || hstore('name', CONCAT(COALESCE(tags -> 'brand', tags -> 'operator'), concat(' ', tags -> 'ref')))
+ TRIM(CONCAT(COALESCE(tags -> 'brand', tags -> 'operator'), concat(' ', tags -> 'ref'))),
+ tags || hstore('name', TRIM(CONCAT(COALESCE(tags -> 'brand', tags -> 'operator'), concat(' ', tags -> 'ref'))))
)
WHERE (full_update OR osm_id IN (SELECT osm_id FROM poi_point.osm_ids))
- AND subclass = 'parcel_locker'
+ AND subclass IN ('parcel_locker', 'charging_station')
AND name = ''
AND COALESCE(tags -> 'brand', tags -> 'operator') IS NOT NULL;
diff --git a/layers/poi/update_poi_polygon.sql b/layers/poi/update_poi_polygon.sql
index aef9133..fc8db96 100644
--- a/layers/poi/update_poi_polygon.sql
+++ b/layers/poi/update_poi_polygon.sql
@@ -36,6 +36,19 @@ $$
AND funicular = 'yes'
AND subclass = 'station';
+ -- Parcel locker and charging_station without name
+ -- use either brand or operator and add ref if present
+ -- (using name for parcel lockers is discouraged, see osm wiki)
+ UPDATE osm_poi_polygon
+ SET (name, tags) = (
+ TRIM(CONCAT(COALESCE(tags -> 'brand', tags -> 'operator'), concat(' ', tags -> 'ref'))),
+ tags || hstore('name', TRIM(CONCAT(COALESCE(tags -> 'brand', tags -> 'operator'), concat(' ', tags -> 'ref'))))
+ )
+ WHERE (full_update OR osm_id IN (SELECT osm_id FROM poi_polygon.osm_ids))
+ AND subclass IN ('parcel_locker', 'charging_station')
+ AND name = ''
+ AND COALESCE(tags -> 'brand', tags -> 'operator') IS NOT NULL;
+
UPDATE osm_poi_polygon
SET tags = update_tags(tags, geometry)
WHERE (full_update OR osm_id IN (SELECT osm_id FROM poi_polygon.osm_ids))
diff --git a/tests/import/600_import-poi.osm b/tests/import/600_import-poi.osm
index 93de4f6..17d2ffe 100644
--- a/tests/import/600_import-poi.osm
+++ b/tests/import/600_import-poi.osm
@@ -28,4 +28,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test-post-import.sql b/tests/test-post-import.sql
index 373c557..3a06f5f 100644
--- a/tests/test-post-import.sql
+++ b/tests/test-post-import.sql
@@ -195,6 +195,20 @@ BEGIN
IF cnt <> 1 THEN
INSERT INTO omt_test_failures VALUES(600, 'import', 'osm_poi_point parcel_locker with name like "OpenMapTiles Parcel Locker PL00%" expected 1, got ' || cnt);
END IF;
+
+ -- verify that charging stations are imported with correct name which can come from tags like brand or operator and can contain ref
+ SELECT COUNT(*) INTO cnt FROM osm_poi_point
+ WHERE subclass = 'charging_station'
+ AND tags->'name' = 'OpenMapTiles Charging Station';
+ IF cnt <> 2 THEN
+ INSERT INTO omt_test_failures VALUES(600, 'import', 'osm_poi_point charging_station with name "OpenMapTiles Charging Station" expected 2, got ' || cnt);
+ END IF;
+ SELECT COUNT(*) INTO cnt FROM osm_poi_polygon
+ WHERE subclass = 'charging_station'
+ AND tags->'name' = 'OpenMapTiles Charging Station Brand';
+ IF cnt <> 1 THEN
+ INSERT INTO omt_test_failures VALUES(600, 'import', 'osm_poi_polygon charging_station with name "OpenMapTiles Charging Station Brand" expected 1, got ' || cnt);
+ END IF;
END;
diff --git a/tests/test-post-update.sql b/tests/test-post-update.sql
index 9695310..d712ac0 100644
--- a/tests/test-post-update.sql
+++ b/tests/test-post-update.sql
@@ -98,7 +98,7 @@ BEGIN
WHERE subclass = 'parcel_locker'
AND tags->'name' like 'OpenMapTiles Parcel Locker%';
IF cnt <> 2 THEN
- INSERT INTO omt_test_failures VALUES(600, 'update', 'osm_poi_point atm with name "OpenMapTiles ATM" expected 2, got ' || cnt);
+ INSERT INTO omt_test_failures VALUES(600, 'update', 'osm_poi_point atm with name "OpenMapTiles Parcel Locker%" expected 2, got ' || cnt);
END IF;
SELECT COUNT(*) INTO cnt FROM osm_poi_point
WHERE subclass = 'parcel_locker'
@@ -107,6 +107,26 @@ BEGIN
INSERT INTO omt_test_failures VALUES(600, 'update', 'osm_poi_point parcel_locker with name "Different operator PL001" expected 1, got ' || cnt);
END IF;
+ -- for charging_station
+ SELECT COUNT(*) INTO cnt FROM osm_poi_point
+ WHERE subclass = 'charging_station'
+ AND tags->'name' = 'OpenMapTiles Charging Station';
+ IF cnt <> 1 THEN
+ INSERT INTO omt_test_failures VALUES(600, 'update', 'osm_poi_point charging_station with name "OpenMapTiles Charging Station" expected 1, got ' || cnt);
+ END IF;
+ SELECT COUNT(*) INTO cnt FROM osm_poi_point
+ WHERE subclass = 'charging_station'
+ AND tags->'name' = 'OpenMapTiles Charging Station Brand';
+ IF cnt <> 1 THEN
+ INSERT INTO omt_test_failures VALUES(600, 'update', 'osm_poi_point charging_station with name "OpenMapTiles Charging Station Brand" expected 1, got ' || cnt);
+ END IF;
+ SELECT COUNT(*) INTO cnt FROM osm_poi_polygon
+ WHERE subclass = 'charging_station'
+ AND tags->'name' = 'OpenMapTiles Charging Station';
+ IF cnt <> 1 THEN
+ INSERT INTO omt_test_failures VALUES(600, 'update', 'osm_poi_polygon charging_station with name "OpenMapTiles Charging Station" expected 1, got ' || cnt);
+ END IF;
+
END;
$$;
diff --git a/tests/update/600_update-poi.osc b/tests/update/600_update-poi.osc
index e03e31f..2dfed16 100644
--- a/tests/update/600_update-poi.osc
+++ b/tests/update/600_update-poi.osc
@@ -15,5 +15,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+