Skip to content

Commit

Permalink
don't delete names on unknown country boundaries
Browse files Browse the repository at this point in the history
If a country boundary has a country_code that is unknown to
Nominatim, it would delete all names because the coalascing
with country_name would not yield any result.
  • Loading branch information
lonvia committed Feb 18, 2017
1 parent 679e4c4 commit c897b96
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 2 deletions.
5 changes: 4 additions & 1 deletion sql/functions.sql
Original file line number Diff line number Diff line change
Expand Up @@ -1988,7 +1988,10 @@ BEGIN

-- Patch in additional country names
IF NEW.admin_level = 2 AND NEW.type = 'administrative' AND NEW.country_code is not null THEN
select coalesce(country_name.name || NEW.name,NEW.name) from country_name where country_name.country_code = lower(NEW.country_code) INTO NEW.name;
SELECT name FROM country_name WHERE country_code = lower(NEW.country_code) INTO existing;
IF existing.name IS NOT NULL THEN
NEW.name = existing.name || NEW.name;
END IF;
END IF;

-- Have we already done this place?
Expand Down
35 changes: 34 additions & 1 deletion test/bdd/osm2pgsql/update/relation.feature
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@ Feature: Update of relations by osm2pgsql
"""
Then place has no entry for R1
@wip
Scenario: Type tag is renamed to something unknown
When loading osm data
"""
Expand All @@ -124,3 +123,37 @@ Feature: Update of relations by osm2pgsql
"""
Then place has no entry for R1
Scenario: Country boundary names are left untouched when country_code unknown
When loading osm data
"""
n200 Tamenity=prison x0 y0
n201 x0 y0.0001
n202 x0.0001 y0.0001
n203 x0.0001 y0
"""
And updating osm data
"""
w1 Nn200,n201,n202,n203,n200
r1 Ttype=boundary,boundary=administrative,name=Foo,country_code=XX,admin_level=2 Mw1@
"""
Then place contains
| object | country_code | name |
| R1 | XX | 'name' : 'Foo' |

Scenario: Country boundary names are extended when country_code known
When loading osm data
"""
n200 Tamenity=prison x0 y0
n201 x0 y0.0001
n202 x0.0001 y0.0001
n203 x0.0001 y0
"""
And updating osm data
"""
w1 Nn200,n201,n202,n203,n200
r1 Ttype=boundary,boundary=administrative,name=Foo,country_code=ch,admin_level=2 Mw1@
"""
Then place contains
| object | country_code | name+name:de | name+name |
| R1 | ch | Schweiz | Foo |

0 comments on commit c897b96

Please sign in to comment.