Esempio n. 1
0
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'
Esempio n. 2
0
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'
Esempio n. 3
0
 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
Esempio n. 4
0
    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