def test_name_field(): name = Name() elem = OSMElem(1, [], 'test', tags={'name': 'fixme'}) assert name.value('fixme', elem) == '' assert elem.name == '' elem = OSMElem(1, [], 'test', tags={'name': 'Foo Street'}) assert name.value('Foo Street', elem) == 'Foo Street' assert elem.name == 'Foo Street'
def test_localized_name_field(): name = LocalizedName(['name:de', 'name:en', 'foo']) elem = OSMElem(1, [], 'test', tags={'name': 'Foo'}) assert name.value(None, elem) == '' assert elem.name == '' elem = OSMElem(1, [], 'test', tags={'name:de': 'Foo', 'name:en': 'Bar'}) assert name.value(None, elem) == 'Foo' assert elem.name == 'Foo' elem = OSMElem(1, [], 'test', tags={'name:es': 'Foo', 'name:en': 'Bar'}) assert name.value(None, elem) == 'Bar' assert elem.name == 'Bar' elem = OSMElem(1, [], 'test', tags={'name:es': 'Foo', 'foo': 'Bar'}) assert name.value(None, elem) == 'Bar' assert elem.name == 'Bar'
def insert(self, mappings, osm_id, geom, tags): inserted = False for type, ms in mappings: for m in ms: osm_elem = OSMElem(osm_id, geom, type, tags) try: m.filter(osm_elem) m.build_geom(osm_elem) extra_args = m.field_values(osm_elem) self.db_queue.put((m, osm_id, osm_elem, extra_args)) inserted = True except DropElem: pass return inserted
def insert(self, mappings, osm_id, geom, tags): inserted = False osm_objects = {} for type, ms in mappings: for m in ms: osm_elem = OSMElem(osm_id, geom, type, tags) try: m.filter(osm_elem) except DropElem: continue if m.geom_type in osm_objects: obj = osm_objects[m.geom_type] obj['fields'].update(m.field_dict(osm_elem)) obj['fields'][type[0]] = type[1] obj['mapping_names'].append(m.name) else: try: m.build_geom(osm_elem) except DropElem: continue obj = {} obj['fields'] = m.field_dict(osm_elem) obj['fields'][type[0]] = type[1] obj['osm_id'] = osm_id obj['geometry'] = osm_elem.geom obj['mapping_names'] = [m.name] osm_objects[m.geom_type] = obj inserted = True for obj in osm_objects.itervalues(): if isinstance(obj['geometry'], (list, )): for geom in obj['geometry']: obj_part = obj.copy() obj_part['geometry'] = geom self.db_queue.put(obj_part) else: self.db_queue.put(obj) return inserted