fix for mappings where key and name of field differ

master
Oliver Tonnhofer 2014-03-28 11:14:02 +01:00
parent d1b2c2796b
commit 251e5c9941
4 changed files with 27 additions and 3 deletions

View File

@ -37,13 +37,13 @@ type MakeValue func(string, *element.OSMElem, Match) interface{}
type MakeMakeValue func(string, FieldType, Field) (MakeValue, error)
type FieldSpec struct {
Name string
Key string
Type FieldType
}
func (f *FieldSpec) Value(elem *element.OSMElem, match Match) interface{} {
if f.Type.Func != nil {
return f.Type.Func(elem.Tags[f.Name], elem, match)
return f.Type.Func(elem.Tags[f.Key], elem, match)
}
return nil
}
@ -79,7 +79,7 @@ func (t *Table) TableFields() *TableFields {
for _, mappingField := range t.Fields {
field := FieldSpec{}
field.Name = mappingField.Name
field.Key = mappingField.Key
fieldType := mappingField.FieldType()
if fieldType != nil {

View File

@ -237,6 +237,12 @@ def test_missing_nodes():
place_10000 = query_row(db_conf, 'osm_places', 10000)
assert place_10000['name'] == 'Foo', place_10000
def test_name_tags():
"""Road contains multiple names"""
road = query_row(db_conf, 'osm_roads', 1101)
assert road['name'] == 'name', road
assert road['name:de'] == 'name:de', road
assert road['name_en'] == 'name:en', road
def test_landusage_to_waterarea_1():
"""Parks inserted into landusages"""

View File

@ -302,6 +302,18 @@
<tag k="type" v="multipolygon"/>
</relation>
<!-- test multiple name mappings -->
<node id="1101" version="1" timestamp="2011-11-11T00:11:11Z" lat="60" lon="60"/>
<node id="1102" version="1" timestamp="2011-11-11T00:11:11Z" lat="60" lon="60.1"/>
<way id="1101" version="1" timestamp="2011-11-11T00:11:11Z">
<nd ref="1101"/>
<nd ref="1102"/>
<tag k="highway" v="residential"/>
<tag k="name" v="name"/>
<tag k="name:de" v="name:de"/>
<tag k="name:en" v="name:en"/>
</way>
<!-- test invalid "banana-polygon" (inverted-shell) -->
<node id="7101" version="1" timestamp="2011-11-11T00:11:11Z" lat="60" lon="60"/>
<node id="7102" version="1" timestamp="2011-11-11T00:11:11Z" lat="60" lon="62"/>

View File

@ -689,6 +689,12 @@
"name": "name:de",
"key": "name:de"
},
{
"type": "string",
"#": " check for different name/keys",
"name": "name_en",
"key": "name:en"
},
{
"type": "boolint",
"name": "tunnel",