mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-12-24 13:31:37 +03:00
force update of surrounding houses when street name changes
When the street changes its name then this may cause changes in the parenting of rank-30 objects with an addr:street tag. Fixes #2242.
This commit is contained in:
parent
d562f11298
commit
316205e455
@ -247,6 +247,7 @@ BEGIN
|
||||
indexed_status = 2,
|
||||
geometry = NEW.geometry
|
||||
where place_id = existingplacex.place_id;
|
||||
|
||||
-- if a node(=>house), which is part of a interpolation line, changes (e.g. the street attribute) => mark this line for reparenting
|
||||
-- (already here, because interpolation lines are reindexed before nodes, so in the second call it would be too late)
|
||||
IF NEW.osm_type='N'
|
||||
@ -270,6 +271,18 @@ BEGIN
|
||||
and x.class = p.class;
|
||||
END IF;
|
||||
|
||||
-- When streets change their name, the parenting of rank30 objects may change.
|
||||
IF existingplacex.rank_address between 26 and 27
|
||||
and coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
|
||||
THEN
|
||||
UPDATE placex SET indexed_status = 2
|
||||
WHERE indexed_status = 0 and address ? 'street'
|
||||
and parent_place_id = existingplacex.place_id;
|
||||
UPDATE placex SET indexed_status = 2
|
||||
WHERE indexed_status = 0 and rank_search = 30 and address ? 'street'
|
||||
and ST_DWithin(NEW.geometry, geometry, 0.002);
|
||||
END IF;
|
||||
|
||||
END IF;
|
||||
|
||||
-- Abort the add (we modified the existing place instead)
|
||||
|
@ -1,7 +1,7 @@
|
||||
@DB
|
||||
Feature: Update parenting of objects
|
||||
|
||||
Scenario: POI inside building inherits addr:street change
|
||||
Scenario: POI inside building inherits addr:street change
|
||||
Given the scene building-on-street-corner
|
||||
And the named places
|
||||
| osm | class | type | geometry |
|
||||
@ -34,3 +34,27 @@ Scenario: POI inside building inherits addr:street change
|
||||
| N1 | W3 | 3 |
|
||||
| N2 | W3 | 3 |
|
||||
| N3 | W3 | 3 |
|
||||
|
||||
Scenario: Housenumber is reparented when street gets name matching addr:street
|
||||
Given the grid
|
||||
| 1 | | | 2 |
|
||||
| | 10 | | |
|
||||
| | | | |
|
||||
| 3 | | | 4 |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W1 | highway | residential | A street | 1,2 |
|
||||
| W2 | highway | residential | B street | 3,4 |
|
||||
And the places
|
||||
| osm | class | type | housenr | street | geometry |
|
||||
| N1 | building | yes | 3 | X street | 10 |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
| N1 | W1 |
|
||||
When updating places
|
||||
| osm | class | type | name | geometry |
|
||||
| W2 | highway | residential | X street | 3,4 |
|
||||
Then placex contains
|
||||
| object | parent_place_id |
|
||||
| N1 | W2 |
|
||||
|
Loading…
Reference in New Issue
Block a user