forked from hans/Nominatim
move linked place type into linked_place extratags
Using linked_place means that we don't overwrite any place tags on the boundary. This is important when we wanto to use the information for linking.
This commit is contained in:
@@ -202,8 +202,9 @@ BEGIN
|
||||
|
||||
FOR location IN
|
||||
SELECT placex.place_id, osm_type, osm_id, name,
|
||||
CASE WHEN extratags ? 'place' THEN 'place' ELSE class END as class,
|
||||
CASE WHEN extratags ? 'place' THEN extratags->'place' ELSE type END as type,
|
||||
CASE WHEN extratags ? 'place' or extratags ? 'linked_place'
|
||||
THEN 'place' ELSE class END as class,
|
||||
coalesce(extratags->'place', extratags->'linked_place', type) as type,
|
||||
admin_level, fromarea, isaddress,
|
||||
CASE WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
|
||||
distance, country_code, postcode
|
||||
|
||||
@@ -818,7 +818,7 @@ BEGIN
|
||||
--DEBUG: RAISE WARNING 'Using full index mode for % %', NEW.osm_type, NEW.osm_id;
|
||||
SELECT * INTO location FROM find_linked_place(NEW);
|
||||
IF location.place_id is not null THEN
|
||||
--DEBUG: RAISE WARNING 'Linked %', location;
|
||||
--DEBUG: RAISE WARNING 'Linked %', location;
|
||||
|
||||
-- Use this as the centre point of the geometry
|
||||
NEW.centroid := coalesce(location.centroid,
|
||||
@@ -830,7 +830,7 @@ BEGIN
|
||||
END IF;
|
||||
|
||||
-- merge in extra tags
|
||||
NEW.extratags := hstore(location.class, location.type)
|
||||
NEW.extratags := hstore('linked_' || location.class, location.type)
|
||||
|| coalesce(location.extratags, ''::hstore)
|
||||
|| coalesce(NEW.extratags, ''::hstore);
|
||||
|
||||
|
||||
@@ -127,3 +127,19 @@ Feature: Linking of places
|
||||
| N3:natural | - |
|
||||
| N3:place | R1 |
|
||||
|
||||
Scenario: Nodes with 'role' label are always linked
|
||||
Given the places
|
||||
| osm | class | type | admin | name | geometry |
|
||||
| R13 | boundary | administrative | 6 | Garbo | poly-area:0.1 |
|
||||
| N2 | place | hamlet | 15 | Vario | 0.006 0.00001 |
|
||||
And the relations
|
||||
| id | members | tags+type |
|
||||
| 13 | N2:label | boundary |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | linked_place_id |
|
||||
| N2 | R13 |
|
||||
And placex contains
|
||||
| object | centroid | name+name | extratags+linked_place |
|
||||
| R13 | 0.006 0.00001 | Garbo | hamlet |
|
||||
|
||||
|
||||
@@ -125,11 +125,11 @@ Feature: Updates of linked places
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | extratags |
|
||||
| R1 | 'wikidata' : '34', 'place' : 'city' |
|
||||
| R1 | 'wikidata' : '34', 'linked_place' : 'city' |
|
||||
When updating places
|
||||
| osm | class | type | name | extra+oneway | admin | geometry |
|
||||
| N3 | place | city | newname | yes | 30 | 0.00001 0 |
|
||||
Then placex contains
|
||||
| object | extratags |
|
||||
| R1 | 'wikidata' : '34', 'oneway' : 'yes', 'place' : 'city' |
|
||||
| R1 | 'wikidata' : '34', 'oneway' : 'yes', 'linked_place' : 'city' |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user