Improve OSM name handling

This commit is contained in:
Edward Betts 2021-07-02 11:14:37 +02:00
parent 906bdb7256
commit e62dd4d1d6
2 changed files with 16 additions and 2 deletions

View file

@ -421,8 +421,8 @@ def find_osm_candidates(item, bounds):
for osm, dist in get_nearby(bounds, item):
tags = osm.tags
tags.pop("way_area", None)
name = osm.name or tags.get("addr:housename") or tags.get("inscription")
if not name and "addr:housenumber" in tags and "addr:street" in tags:
name = osm.display_name()
if not name and osm.has_street_address:
name = address_from_tags(tags)
if isinstance(osm, model.Polygon) and "building" in osm.tags:

View file

@ -232,6 +232,20 @@ class MapMixin:
def as_EWKT(cls):
return column_property(func.ST_AsEWKT(cls.way), deferred=True)
@hybrid_property
def has_street_address(self):
return ("addr:housenumber" in self.tags
and "addr:street" in self.tags)
def display_name(self):
for key in 'bridge:name', 'tunnel:name', 'lock_name':
if key in self.tags:
return self.tags[key]
return (self.name
or self.tags.get("addr:housename")
or self.tags.get("inscription"))
def geojson(self):
return json.loads(self.geojson_str)