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 @@ + + + + + + + + + + + + +