43 lines
1.3 KiB
MySQL
43 lines
1.3 KiB
MySQL
|
CREATE OR REPLACE FUNCTION poi_class_rank(class text)
|
||
|
RETURNS int AS
|
||
|
$$
|
||
|
SELECT CASE class
|
||
|
WHEN 'hospital' THEN 20
|
||
|
WHEN 'railway' THEN 40
|
||
|
WHEN 'bus' THEN 50
|
||
|
WHEN 'attraction' THEN 70
|
||
|
WHEN 'harbor' THEN 75
|
||
|
WHEN 'college' THEN 80
|
||
|
WHEN 'school' THEN 85
|
||
|
WHEN 'stadium' THEN 90
|
||
|
WHEN 'zoo' THEN 95
|
||
|
WHEN 'town_hall' THEN 100
|
||
|
WHEN 'campsite' THEN 110
|
||
|
WHEN 'cemetery' THEN 115
|
||
|
WHEN 'park' THEN 120
|
||
|
WHEN 'library' THEN 130
|
||
|
WHEN 'police' THEN 135
|
||
|
WHEN 'post' THEN 140
|
||
|
WHEN 'golf' THEN 150
|
||
|
WHEN 'shop' THEN 400
|
||
|
WHEN 'grocery' THEN 500
|
||
|
WHEN 'fast_food' THEN 600
|
||
|
WHEN 'clothing_store' THEN 700
|
||
|
WHEN 'bar' THEN 800
|
||
|
ELSE 1000
|
||
|
END;
|
||
|
$$ LANGUAGE SQL IMMUTABLE
|
||
|
PARALLEL SAFE;
|
||
|
|
||
|
CREATE OR REPLACE FUNCTION poi_class(subclass text, mapping_key text)
|
||
|
RETURNS text AS
|
||
|
$$
|
||
|
SELECT CASE
|
||
|
-- Special case subclass collision between office=university and amenity=university
|
||
|
WHEN mapping_key = 'amenity' AND subclass = 'university' THEN 'college'
|
||
|
%%FIELD_MAPPING: class %%
|
||
|
ELSE subclass
|
||
|
END;
|
||
|
$$ LANGUAGE SQL IMMUTABLE
|
||
|
PARALLEL SAFE;
|