mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
force update on rank30 children when place name changes
Name changes may have an effect on parenting. Don't update surrounding rank30 objects with addr:place tags as this is potentially too expensive.
This commit is contained in:
@@ -271,18 +271,26 @@ BEGIN
|
|||||||
and x.class = p.class;
|
and x.class = p.class;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- When streets change their name, the parenting of rank30 objects may change.
|
IF coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
|
||||||
IF existingplacex.rank_address between 26 and 27
|
|
||||||
and coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
|
|
||||||
THEN
|
THEN
|
||||||
UPDATE placex SET indexed_status = 2
|
IF existingplacex.rank_address between 26 and 27 THEN
|
||||||
WHERE indexed_status = 0 and address ? 'street'
|
-- When streets change their name, this may have an effect on POI objects
|
||||||
and parent_place_id = existingplacex.place_id;
|
-- with addr:street tags.
|
||||||
UPDATE placex SET indexed_status = 2
|
UPDATE placex SET indexed_status = 2
|
||||||
WHERE indexed_status = 0 and rank_search = 30 and address ? 'street'
|
WHERE indexed_status = 0 and address ? 'street'
|
||||||
and ST_DWithin(NEW.geometry, geometry, 0.002);
|
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);
|
||||||
|
ELSEIF existingplacex.rank_address between 16 and 25 THEN
|
||||||
|
-- When places change their name, this may have an effect on POI objects
|
||||||
|
-- with addr:place tags.
|
||||||
|
UPDATE placex SET indexed_status = 2
|
||||||
|
WHERE indexed_status = 0 and address ? 'place' and rank_search = 30
|
||||||
|
and parent_place_id = existingplacex.place_id;
|
||||||
|
-- No update of surrounding objects, potentially too expensive.
|
||||||
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- Abort the add (we modified the existing place instead)
|
-- Abort the add (we modified the existing place instead)
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ Feature: Update parenting of objects
|
|||||||
| N2 | W3 | 3 |
|
| N2 | W3 | 3 |
|
||||||
| N3 | W3 | 3 |
|
| N3 | W3 | 3 |
|
||||||
|
|
||||||
|
|
||||||
Scenario: Housenumber is reparented when street gets name matching addr:street
|
Scenario: Housenumber is reparented when street gets name matching addr:street
|
||||||
Given the grid
|
Given the grid
|
||||||
| 1 | | | 2 |
|
| 1 | | | 2 |
|
||||||
@@ -58,3 +59,107 @@ Feature: Update parenting of objects
|
|||||||
Then placex contains
|
Then placex contains
|
||||||
| object | parent_place_id |
|
| object | parent_place_id |
|
||||||
| N1 | W2 |
|
| N1 | W2 |
|
||||||
|
|
||||||
|
|
||||||
|
Scenario: Housenumber is reparented when street looses 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 | X 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 | W2 |
|
||||||
|
When updating places
|
||||||
|
| osm | class | type | name | geometry |
|
||||||
|
| W2 | highway | residential | B street | 3,4 |
|
||||||
|
Then placex contains
|
||||||
|
| object | parent_place_id |
|
||||||
|
| N1 | W1 |
|
||||||
|
|
||||||
|
|
||||||
|
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 |
|
||||||
|
|
||||||
|
|
||||||
|
# Invalidation of geometries currently disabled for addr:place matches.
|
||||||
|
@Fail
|
||||||
|
Scenario: Housenumber is reparented when place is renamed to matching addr:place
|
||||||
|
Given the grid
|
||||||
|
| 1 | | | 2 |
|
||||||
|
| | 10 | 4 | |
|
||||||
|
| | | | |
|
||||||
|
| | | 5 | |
|
||||||
|
And the places
|
||||||
|
| osm | class | type | name | geometry |
|
||||||
|
| W1 | highway | residential | A street | 1,2 |
|
||||||
|
| N5 | place | village | Bdorf | 5 |
|
||||||
|
| N4 | place | village | Other | 4 |
|
||||||
|
And the places
|
||||||
|
| osm | class | type | housenr | addr_place | geometry |
|
||||||
|
| N1 | building | yes | 3 | Cdorf | 10 |
|
||||||
|
When importing
|
||||||
|
Then placex contains
|
||||||
|
| object | parent_place_id |
|
||||||
|
| N1 | N4 |
|
||||||
|
When updating places
|
||||||
|
| osm | class | type | name | geometry |
|
||||||
|
| N5 | place | village | Cdorf | 5 |
|
||||||
|
Then placex contains
|
||||||
|
| object | parent_place_id |
|
||||||
|
| N1 | N5 |
|
||||||
|
|
||||||
|
|
||||||
|
Scenario: Housenumber is reparented when it looses a matching addr:place
|
||||||
|
Given the grid
|
||||||
|
| 1 | | | 2 |
|
||||||
|
| | 10 | 4 | |
|
||||||
|
| | | | |
|
||||||
|
| | | 5 | |
|
||||||
|
And the places
|
||||||
|
| osm | class | type | name | geometry |
|
||||||
|
| W1 | highway | residential | A street | 1,2 |
|
||||||
|
| N5 | place | village | Bdorf | 5 |
|
||||||
|
| N4 | place | village | Other | 4 |
|
||||||
|
And the places
|
||||||
|
| osm | class | type | housenr | addr_place | geometry |
|
||||||
|
| N1 | building | yes | 3 | Bdorf | 10 |
|
||||||
|
When importing
|
||||||
|
Then placex contains
|
||||||
|
| object | parent_place_id |
|
||||||
|
| N1 | N5 |
|
||||||
|
When updating places
|
||||||
|
| osm | class | type | name | geometry |
|
||||||
|
| N5 | place | village | Cdorf | 5 |
|
||||||
|
Then placex contains
|
||||||
|
| object | parent_place_id |
|
||||||
|
| N1 | N4 |
|
||||||
|
|||||||
Reference in New Issue
Block a user