mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-16 15:47:58 +00:00
compute address parts for rank 30 objects on the fly
Rank 30 objects usually use the address parts of their parent. When the parent has address parts that are areas but not marked as isaddress, then the parent might go through multiple administrative areas. In that case recheck if the right area has been choosen for the object in question instead of relying on isaddress. Note that we really only have to do the recomputation in the case of 'isarea = True and isaddress = False' which hopefully keeps the number of additional geometric operations we have to do to a minimum. There is one more special case to be taken into account here: a street may go through two administrative areas and a house along that street is placed in one of the area while the addr:* tags says it belongs to the other. In that case we must not switch the isaddress to the one it is situated. To avoid that recheck the address names against the name of the ara. That is not perfect but should cover most cases. Fixes #328.
This commit is contained in:
@@ -397,3 +397,35 @@ Feature: Address computation
|
||||
Then results contain
|
||||
| osm_type | osm_id | name |
|
||||
| N | 1 | Bolder, Wonderway, Left |
|
||||
|
||||
Scenario: POIs can correct address parts on the fly
|
||||
Given the grid
|
||||
| 1 | | | | 2 | | 5 |
|
||||
| | | | 9 | | 8 | |
|
||||
| 4 | | | | 3 | | 6 |
|
||||
And the places
|
||||
| osm | class | type | admin | name | geometry |
|
||||
| R1 | boundary | administrative | 8 | Left | (1,2,3,4,1) |
|
||||
| R2 | boundary | administrative | 8 | Right | (2,3,6,5,2) |
|
||||
And the places
|
||||
| osm | class | type | name | geometry |
|
||||
| W1 | highway | primary | Wonderway | 2,3 |
|
||||
| N1 | amenity | cafe | Bolder | 9 |
|
||||
| N2 | amenity | cafe | Leftside | 8 |
|
||||
When importing
|
||||
Then place_addressline contains
|
||||
| object | address | isaddress |
|
||||
| W1 | R1 | False |
|
||||
| W1 | R2 | True |
|
||||
And place_addressline doesn't contain
|
||||
| object | address |
|
||||
| N1 | R1 |
|
||||
| N2 | R2 |
|
||||
When searching for "Bolder"
|
||||
Then results contain
|
||||
| osm_type | osm_id | name |
|
||||
| N | 1 | Bolder, Wonderway, Left |
|
||||
When searching for "Leftside"
|
||||
Then results contain
|
||||
| osm_type | osm_id | name |
|
||||
| N | 2 | Leftside, Wonderway, Right |
|
||||
|
||||
Reference in New Issue
Block a user