forked from hans/Nominatim
@@ -592,7 +592,11 @@ BEGIN
|
||||
IF NEW.class = 'boundary' and NEW.type = 'administrative' THEN
|
||||
parent_address_level := get_parent_address_level(NEW.geometry, NEW.admin_level);
|
||||
IF parent_address_level >= NEW.rank_address THEN
|
||||
NEW.rank_address := parent_address_level + 2;
|
||||
IF parent_address_level >= 24 THEN
|
||||
NEW.rank_address := 25;
|
||||
ELSE
|
||||
NEW.rank_address := parent_address_level + 2;
|
||||
END IF;
|
||||
END IF;
|
||||
ELSE
|
||||
parent_address_level := 3;
|
||||
@@ -836,7 +840,8 @@ BEGIN
|
||||
SELECT address_rank INTO place_address_level
|
||||
FROM compute_place_rank(NEW.country_code, 'A', 'place',
|
||||
NEW.extratags->'place', 0::SMALLINT, False, null);
|
||||
IF place_address_level > parent_address_level THEN
|
||||
IF place_address_level > parent_address_level and
|
||||
place_address_level < 26 THEN
|
||||
NEW.rank_address := place_address_level;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
@@ -101,3 +101,15 @@ Feature: Rank assignment
|
||||
| R21 | 16 | 18 |
|
||||
| R22 | 16 | 20 |
|
||||
|
||||
Scenario: Admin levels must not be larger than 25
|
||||
Given the named places
|
||||
| osm | class | type | admin | extra+place | geometry |
|
||||
| R20 | boundary | administrative | 6 | neighbourhood | (0 0, 0 2, 2 2, 2 0, 0 0) |
|
||||
| R21 | boundary | administrative | 7 | | (0 0, 0 1, 1 1, 1 0, 0 0) |
|
||||
| R22 | boundary | administrative | 8 | | (0 0, 0 0.5, 0.5 0.5, 0.5 0, 0 0) |
|
||||
When importing
|
||||
Then placex contains
|
||||
| object | rank_search | rank_address |
|
||||
| R20 | 12 | 22 |
|
||||
| R21 | 14 | 24 |
|
||||
| R22 | 16 | 25 |
|
||||
|
||||
Reference in New Issue
Block a user