mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
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
|
FOR location IN
|
||||||
SELECT placex.place_id, osm_type, osm_id, name,
|
SELECT placex.place_id, osm_type, osm_id, name,
|
||||||
CASE WHEN extratags ? 'place' THEN 'place' ELSE class END as class,
|
CASE WHEN extratags ? 'place' or extratags ? 'linked_place'
|
||||||
CASE WHEN extratags ? 'place' THEN extratags->'place' ELSE type END as type,
|
THEN 'place' ELSE class END as class,
|
||||||
|
coalesce(extratags->'place', extratags->'linked_place', type) as type,
|
||||||
admin_level, fromarea, isaddress,
|
admin_level, fromarea, isaddress,
|
||||||
CASE WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
|
CASE WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
|
||||||
distance, country_code, postcode
|
distance, country_code, postcode
|
||||||
|
|||||||
@@ -818,7 +818,7 @@ BEGIN
|
|||||||
--DEBUG: RAISE WARNING 'Using full index mode for % %', NEW.osm_type, NEW.osm_id;
|
--DEBUG: RAISE WARNING 'Using full index mode for % %', NEW.osm_type, NEW.osm_id;
|
||||||
SELECT * INTO location FROM find_linked_place(NEW);
|
SELECT * INTO location FROM find_linked_place(NEW);
|
||||||
IF location.place_id is not null THEN
|
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
|
-- Use this as the centre point of the geometry
|
||||||
NEW.centroid := coalesce(location.centroid,
|
NEW.centroid := coalesce(location.centroid,
|
||||||
@@ -830,7 +830,7 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- merge in extra tags
|
-- merge in extra tags
|
||||||
NEW.extratags := hstore(location.class, location.type)
|
NEW.extratags := hstore('linked_' || location.class, location.type)
|
||||||
|| coalesce(location.extratags, ''::hstore)
|
|| coalesce(location.extratags, ''::hstore)
|
||||||
|| coalesce(NEW.extratags, ''::hstore);
|
|| coalesce(NEW.extratags, ''::hstore);
|
||||||
|
|
||||||
|
|||||||
@@ -127,3 +127,19 @@ Feature: Linking of places
|
|||||||
| N3:natural | - |
|
| N3:natural | - |
|
||||||
| N3:place | R1 |
|
| 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
|
When importing
|
||||||
Then placex contains
|
Then placex contains
|
||||||
| object | extratags |
|
| object | extratags |
|
||||||
| R1 | 'wikidata' : '34', 'place' : 'city' |
|
| R1 | 'wikidata' : '34', 'linked_place' : 'city' |
|
||||||
When updating places
|
When updating places
|
||||||
| osm | class | type | name | extra+oneway | admin | geometry |
|
| osm | class | type | name | extra+oneway | admin | geometry |
|
||||||
| N3 | place | city | newname | yes | 30 | 0.00001 0 |
|
| N3 | place | city | newname | yes | 30 | 0.00001 0 |
|
||||||
Then placex contains
|
Then placex contains
|
||||||
| object | extratags |
|
| object | extratags |
|
||||||
| R1 | 'wikidata' : '34', 'oneway' : 'yes', 'place' : 'city' |
|
| R1 | 'wikidata' : '34', 'oneway' : 'yes', 'linked_place' : 'city' |
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user