convert import styles to themepark

Introduces presets which avoid much of the previous configuration
duplication. The original import files are now thin wrappers around
the themepark themes.
This commit is contained in:
Sarah Hoffmann
2024-12-06 12:12:27 +01:00
parent d1b7c14f79
commit 59bce26afe
15 changed files with 442 additions and 457 deletions

View File

@@ -4,6 +4,10 @@ local flex = require('themes/nominatim/init')
function flex.load_topic(name, cfg)
local topic_file = debug.getinfo(1, "S").source:sub(2):match("(.*/)") .. 'themes/nominatim/topics/'.. name .. '.lua'
if topic_file == nil then
error('Cannot find topic: ' .. name)
end
loadfile(topic_file)(nil, flex, cfg or {})
end

View File

@@ -1,74 +1,6 @@
-- This is just an alias for the Nominatim themepark address topic
local flex = require('flex-base')
flex.set_main_tags{
highway = {motorway = 'always',
trunk = 'always',
primary = 'always',
secondary = 'always',
tertiary = 'always',
unclassified = 'always',
residential = 'always',
road = 'always',
living_street = 'always',
pedestrian = 'always',
service = 'named',
cycleway = 'named',
path = 'named',
footway = 'named',
steps = 'named',
bridleway = 'named',
track = 'named',
motorway_link = 'named',
trunk_link = 'named',
primary_link = 'named',
secondary_link = 'named',
tertiary_link = 'named'},
boundary = {administrative = 'named',
postal_code = 'always'},
landuse = 'fallback',
place = 'always'
}
flex.set_prefilters{delete_keys = {'building', 'source',
'source', '*source', 'type',
'is_in:postcode', '*:wikidata', '*:wikipedia',
'*:prefix', '*:suffix', 'name:prefix:*', 'name:suffix:*',
'name:etymology', 'name:signed', 'name:botanical',
'addr:street:name', 'addr:street:type'},
delete_tags = {landuse = {'cemetry', 'no'},
boundary = {'place'}},
extra_keys = {'wikipedia', 'wikipedia:*', 'wikidata', 'capital', 'area'}
}
flex.set_name_tags{main = {'name', 'name:*',
'int_name', 'int_name:*',
'nat_name', 'nat_name:*',
'reg_name', 'reg_name:*',
'loc_name', 'loc_name:*',
'old_name', 'old_name:*',
'alt_name', 'alt_name:*', 'alt_name_*',
'official_name', 'official_name:*',
'place_name', 'place_name:*',
'short_name', 'short_name:*'},
extra = {'ref', 'int_ref', 'nat_ref', 'reg_ref',
'loc_ref', 'old_ref',
'iata', 'icao', 'pcode', 'pcode:*', 'ISO3166-2'},
house = {'addr:housename'}
}
flex.set_address_tags{main = {'addr:housenumber',
'addr:conscriptionnumber',
'addr:streetnumber'},
extra = {'addr:*', 'is_in:*', 'tiger:county'},
postcode = {'postal_code', 'postcode', 'addr:postcode',
'tiger:zip_left', 'tiger:zip_right'},
country = {'country_code', 'ISO3166-1',
'addr:country_code', 'is_in:country_code',
'addr:country', 'is_in:country'},
interpolation = {'addr:interpolation'}
}
flex.set_unused_handling{extra_keys = {'place'}}
flex.load_topic('address')
return flex

View File

@@ -1,72 +1,6 @@
-- This is just an alias for the Nominatim themepark admin topic
local flex = require('flex-base')
flex.set_main_tags{
boundary = {administrative = 'named'},
landuse = {residential = 'fallback',
farm = 'fallback',
farmyard = 'fallback',
industrial = 'fallback',
commercial = 'fallback',
allotments = 'fallback',
retail = 'fallback'},
place = {county = 'always',
district = 'always',
municipality = 'always',
city = 'always',
town = 'always',
borough = 'always',
village = 'always',
suburb = 'always',
hamlet = 'always',
croft = 'always',
subdivision = 'always',
allotments = 'always',
neighbourhood = 'always',
quarter = 'always',
isolated_dwelling = 'always',
farm = 'always',
city_block = 'always',
mountain_pass = 'always',
square = 'always',
locality = 'always'}
}
flex.set_prefilters{delete_keys = {'building', 'source', 'highway',
'addr:housenumber', 'addr:street', 'addr:city',
'addr:interpolation',
'source', '*source', 'type',
'is_in:postcode', '*:wikidata', '*:wikipedia',
'*:prefix', '*:suffix', 'name:prefix:*', 'name:suffix:*',
'name:etymology', 'name:signed', 'name:botanical',
'addr:street:name', 'addr:street:type'},
delete_tags = {landuse = {'cemetry', 'no'},
boundary = {'place'}},
extra_keys = {'wikipedia', 'wikipedia:*', 'wikidata', 'capital'}
}
flex.set_name_tags{main = {'name', 'name:*',
'int_name', 'int_name:*',
'nat_name', 'nat_name:*',
'reg_name', 'reg_name:*',
'loc_name', 'loc_name:*',
'old_name', 'old_name:*',
'alt_name', 'alt_name:*', 'alt_name_*',
'official_name', 'official_name:*',
'place_name', 'place_name:*',
'short_name', 'short_name:*'},
extra = {'ref', 'int_ref', 'nat_ref', 'reg_ref',
'loc_ref', 'old_ref',
'iata', 'icao', 'pcode', 'pcode:*', 'ISO3166-2'}
}
flex.set_address_tags{extra = {'addr:*', 'is_in:*'},
postcode = {'postal_code', 'postcode', 'addr:postcode'},
country = {'country_code', 'ISO3166-1',
'addr:country_code', 'is_in:country_code',
'addr:country', 'is_in:country'},
postcode_fallback = false
}
flex.set_unused_handling{extra_keys = {'place'}}
flex.load_topic('admin')
return flex

View File

@@ -1,126 +1,6 @@
-- This is just an alias for the Nominatim themepark full topic
local flex = require('flex-base')
flex.set_main_tags{
building = 'fallback',
emergency = 'always',
healthcare = 'fallback',
historic = 'always',
military = 'always',
natural = 'named',
highway = {'always',
street_lamp = 'named',
traffic_signals = 'named',
service = 'named',
cycleway = 'named',
path = 'named',
footway = 'named',
steps = 'named',
bridleway = 'named',
track = 'named',
motorway_link = 'named',
trunk_link = 'named',
primary_link = 'named',
secondary_link = 'named',
tertiary_link = 'named'},
railway = 'named',
man_made = {'none',
pier = 'always',
tower = 'always',
bridge = 'always',
works = 'named',
water_tower = 'always',
dyke = 'named',
adit = 'named',
lighthouse = 'always',
watermill = 'always',
tunnel = 'always'},
aerialway = 'always',
boundary = {'named',
postal_code = 'always'},
aeroway = 'always',
amenity = 'always',
club = 'always',
craft = 'always',
junction = 'fallback',
landuse = 'fallback',
leisure = {'always',
nature_reserve = 'fallback'},
office = 'always',
mountain_pass = 'always',
shop = 'always',
tourism = 'always',
bridge = 'named_with_key',
tunnel = 'named_with_key',
waterway = 'named',
place = 'always'
}
flex.set_prefilters{delete_keys = {'note', 'note:*', 'source', '*source', 'attribution',
'comment', 'fixme', 'FIXME', 'created_by', 'NHD:*',
'nhd:*', 'gnis:*', 'geobase:*', 'KSJ2:*', 'yh:*',
'osak:*', 'naptan:*', 'CLC:*', 'import', 'it:fvg:*',
'type', 'lacounty:*', 'ref:ruian:*', 'building:ruian:type',
'ref:linz:*', 'is_in:postcode'},
delete_tags = {emergency = {'yes', 'no', 'fire_hydrant'},
historic = {'yes', 'no'},
military = {'yes', 'no'},
natural = {'yes', 'no', 'coastline'},
highway = {'no', 'turning_circle', 'mini_roundabout',
'noexit', 'crossing', 'give_way', 'stop'},
railway = {'level_crossing', 'no', 'rail', 'switch',
'abandoned', 'signal', 'buffer_stop', 'razed'},
aerialway = {'pylon', 'no'},
aeroway = {'no'},
amenity = {'no', 'parking_space', 'parking_entrance',
'waste_disposal', 'hunting_stand'},
club = {'no'},
craft = {'no'},
leisure = {'no'},
office = {'no'},
mountain_pass = {'no'},
shop = {'no'},
tourism = {'yes', 'no'},
bridge = {'no'},
tunnel = {'no'},
waterway = {'riverbank'},
building = {'no'},
boundary = {'place', 'land_area'}},
extra_keys = {'*:prefix', '*:suffix', 'name:prefix:*', 'name:suffix:*',
'name:etymology', 'name:signed', 'name:botanical',
'wikidata', '*:wikidata',
'*:wikipedia', 'brand:wikipedia:*',
'addr:street:name', 'addr:street:type'}
}
flex.set_name_tags{main = {'name', 'name:*',
'int_name', 'int_name:*',
'nat_name', 'nat_name:*',
'reg_name', 'reg_name:*',
'loc_name', 'loc_name:*',
'old_name', 'old_name:*',
'alt_name', 'alt_name:*', 'alt_name_*',
'official_name', 'official_name:*',
'place_name', 'place_name:*',
'short_name', 'short_name:*', 'brand'},
extra = {'ref', 'int_ref', 'nat_ref', 'reg_ref',
'loc_ref', 'old_ref',
'iata', 'icao', 'pcode', 'pcode:*', 'ISO3166-2'},
house = {'addr:housename'}
}
flex.set_address_tags{main = {'addr:housenumber',
'addr:conscriptionnumber',
'addr:streetnumber'},
extra = {'addr:*', 'is_in:*', 'tiger:county'},
postcode = {'postal_code', 'postcode', 'addr:postcode',
'tiger:zip_left', 'tiger:zip_right'},
country = {'country_code', 'ISO3166-1',
'addr:country_code', 'is_in:country_code',
'addr:country', 'is_in:country'},
interpolation = {'addr:interpolation'}
}
flex.set_unused_handling{delete_keys = {'tiger:*'}}
flex.load_topic('full', {with_extratags = true})
return flex

View File

@@ -1,126 +1,6 @@
-- This is just an alias for the Nominatim themepark full topic
local flex = require('flex-base')
flex.set_main_tags{
building = 'fallback',
emergency = 'always',
healthcare = 'fallback',
historic = 'always',
military = 'always',
natural = 'named',
highway = {'always',
street_lamp = 'named',
traffic_signals = 'named',
service = 'named',
cycleway = 'named',
path = 'named',
footway = 'named',
steps = 'named',
bridleway = 'named',
track = 'named',
motorway_link = 'named',
trunk_link = 'named',
primary_link = 'named',
secondary_link = 'named',
tertiary_link = 'named'},
railway = 'named',
man_made = {'none',
pier = 'always',
tower = 'always',
bridge = 'always',
works = 'named',
water_tower = 'always',
dyke = 'named',
adit = 'named',
lighthouse = 'always',
watermill = 'always',
tunnel = 'always'},
aerialway = 'always',
boundary = {'named',
postal_code = 'always'},
aeroway = 'always',
amenity = 'always',
club = 'always',
craft = 'always',
junction = 'fallback',
landuse = 'fallback',
leisure = {'always',
nature_reserve = 'fallback'},
office = 'always',
mountain_pass = 'always',
shop = 'always',
tourism = 'always',
bridge = 'named_with_key',
tunnel = 'named_with_key',
waterway = 'named',
place = 'always'
}
flex.set_prefilters{delete_keys = {'note', 'note:*', 'source', '*source', 'attribution',
'comment', 'fixme', 'FIXME', 'created_by', 'NHD:*',
'nhd:*', 'gnis:*', 'geobase:*', 'KSJ2:*', 'yh:*',
'osak:*', 'naptan:*', 'CLC:*', 'import', 'it:fvg:*',
'type', 'lacounty:*', 'ref:ruian:*', 'building:ruian:type',
'ref:linz:*', 'is_in:postcode',
'*:prefix', '*:suffix', 'name:prefix:*', 'name:suffix:*',
'name:etymology', 'name:signed', 'name:botanical',
'*:wikidata', '*:wikipedia', 'brand:wikipedia:*',
'addr:street:name', 'addr:street:type'},
delete_tags = {emergency = {'yes', 'no', 'fire_hydrant'},
historic = {'yes', 'no'},
military = {'yes', 'no'},
natural = {'yes', 'no', 'coastline'},
highway = {'no', 'turning_circle', 'mini_roundabout',
'noexit', 'crossing', 'give_way', 'stop'},
railway = {'level_crossing', 'no', 'rail', 'switch',
'abandoned', 'signal', 'buffer_stop', 'razed'},
aerialway = {'pylon', 'no'},
aeroway = {'no'},
amenity = {'no', 'parking_space', 'parking_entrance',
'waste_disposal', 'hunting_stand'},
club = {'no'},
craft = {'no'},
leisure = {'no'},
office = {'no'},
mountain_pass = {'no'},
shop = {'no'},
tourism = {'yes', 'no'},
bridge = {'no'},
tunnel = {'no'},
waterway = {'riverbank'},
building = {'no'},
boundary = {'place', 'land_area'}},
extra_keys = {'wikidata', 'wikipedia', 'wikipedia:*'}
}
flex.set_name_tags{main = {'name', 'name:*',
'int_name', 'int_name:*',
'nat_name', 'nat_name:*',
'reg_name', 'reg_name:*',
'loc_name', 'loc_name:*',
'old_name', 'old_name:*',
'alt_name', 'alt_name:*', 'alt_name_*',
'official_name', 'official_name:*',
'place_name', 'place_name:*',
'short_name', 'short_name:*', 'brand'},
extra = {'ref', 'int_ref', 'nat_ref', 'reg_ref',
'loc_ref', 'old_ref',
'iata', 'icao', 'pcode', 'pcode:*', 'ISO3166-2'},
house = {'addr:housename'}
}
flex.set_address_tags{main = {'addr:housenumber',
'addr:conscriptionnumber',
'addr:streetnumber'},
extra = {'addr:*', 'is_in:*', 'tiger:county'},
postcode = {'postal_code', 'postcode', 'addr:postcode',
'tiger:zip_left', 'tiger:zip_right'},
country = {'country_code', 'ISO3166-1',
'addr:country_code', 'is_in:country_code',
'addr:country', 'is_in:country'},
interpolation = {'addr:interpolation'}
}
flex.set_unused_handling{extra_keys = {'place'}}
flex.load_topic('full')
return flex

View File

@@ -1,74 +1,6 @@
-- This is just an alias for the Nominatim themepark street topic
local flex = require('flex-base')
flex.set_main_tags{
highway = {motorway = 'always',
trunk = 'always',
primary = 'always',
secondary = 'always',
tertiary = 'always',
unclassified = 'always',
residential = 'always',
road = 'always',
living_street = 'always',
pedestrian = 'always',
service = 'named',
cycleway = 'named',
path = 'named',
footway = 'named',
steps = 'named',
bridleway = 'named',
track = 'named',
motorway_link = 'named',
trunk_link = 'named',
primary_link = 'named',
secondary_link = 'named',
tertiary_link = 'named'},
boundary = {administrative = 'named',
postal_code = 'always'},
landuse = 'fallback',
place = 'always'
}
flex.set_prefilters{delete_keys = {'building', 'source',
'addr:housenumber', 'addr:street',
'source', '*source', 'type',
'is_in:postcode', '*:wikidata', '*:wikipedia',
'*:prefix', '*:suffix', 'name:prefix:*', 'name:suffix:*',
'name:etymology', 'name:signed', 'name:botanical',
'addr:street:name', 'addr:street:type'},
delete_tags = {landuse = {'cemetry', 'no'},
boundary = {'place'}},
extra_keys = {'wikipedia', 'wikipedia:*', 'wikidata', 'capital', 'area'}
}
flex.set_name_tags{main = {'name', 'name:*',
'int_name', 'int_name:*',
'nat_name', 'nat_name:*',
'reg_name', 'reg_name:*',
'loc_name', 'loc_name:*',
'old_name', 'old_name:*',
'alt_name', 'alt_name:*', 'alt_name_*',
'official_name', 'official_name:*',
'place_name', 'place_name:*',
'short_name', 'short_name:*'},
extra = {'ref', 'int_ref', 'nat_ref', 'reg_ref',
'loc_ref', 'old_ref',
'iata', 'icao', 'pcode', 'pcode:*', 'ISO3166-2'}
}
flex.set_address_tags{main = {'addr:housenumber',
'addr:conscriptionnumber',
'addr:streetnumber'},
extra = {'addr:*', 'is_in:*', 'tiger:county'},
postcode = {'postal_code', 'postcode', 'addr:postcode',
'tiger:zip_left', 'tiger:zip_right'},
country = {'country_code', 'ISO3166-1',
'addr:country_code', 'is_in:country_code',
'addr:country', 'is_in:country'},
interpolation = {'addr:interpolation'},
postcode_fallback = false
}
flex.set_unused_handling{extra_keys = {'place'}}
flex.load_topic('street')
return flex

View File

@@ -65,6 +65,8 @@ local place_table_definition = {
}
local insert_row
local script_path = debug.getinfo(1, "S").source:match("@?(.*/)")
local PRESETS = loadfile(script_path .. 'presets.lua')()
if themepark then
themepark:add_table(place_table_definition)
@@ -687,12 +689,26 @@ end
function module.ignore_keys(data)
if type(data) == 'string' then
local preset = data
data = PRESETS.IGNORE_KEYS[data]
if data == nil then
error('Unknown preset for ignored keys: ' .. preset)
end
end
merge_filters_into_main('delete', data)
add_pre_filter{delete = data}
end
function module.add_for_extratags(data)
if type(data) == 'string' then
local preset = data
data = PRESETS.EXTRATAGS[data] or PRESETS.IGNORE_KEYS[data]
if data == nil then
error('Unknown preset for extratags: ' .. preset)
end
end
merge_filters_into_main('extra', data)
add_pre_filter{extra = data}
end
@@ -709,11 +725,25 @@ function module.set_main_tags(data)
MAIN_KEYS[key] = nil
end
end
module.add_main_tags(data)
module.modify_main_tags(data)
end
function module.add_main_tags(data)
function module.modify_main_tags(data)
if type(data) == 'string' then
local preset = data
if data:sub(1, 7) == 'street/' then
data = PRESETS.MAIN_TAGS_STREETS[data:sub(8)]
elseif data:sub(1, 4) == 'poi/' then
data = PRESETS.MAIN_TAGS_POIS(data:sub(5))
else
data = PRESETS.MAIN_TAGS[data]
end
if data == nil then
error('Unknown preset for main tags: ' .. preset)
end
end
for k, v in pairs(data) do
if MAIN_KEYS[k] == nil then
MAIN_KEYS[k] = {}
@@ -736,6 +766,14 @@ end
function module.modify_name_tags(data)
if type(data) == 'string' then
local preset = data
data = PRESETS.NAME_TAGS[data]
if data == nil then
error('Unknown preset for name keys: ' .. preset)
end
end
for k,v in pairs(data) do
if next(v) then
NAMES[k] = v
@@ -764,6 +802,14 @@ end
function module.modify_address_tags(data)
if type(data) == 'string' then
local preset = data
data = PRESETS.ADDRESS_TAGS[data]
if data == nil then
error('Unknown preset for address keys: ' .. preset)
end
end
for k, v in pairs(data) do
if k == 'postcode_fallback' then
POSTCODE_FALLBACK = v

View File

@@ -0,0 +1,281 @@
-- Defines defaults used in the topic definitions.
local module = {}
-- Main tag definition
module.MAIN_TAGS = {}
module.MAIN_TAGS.admin = {
boundary = {administrative = 'named'},
landuse = {residential = 'fallback',
farm = 'fallback',
farmyard = 'fallback',
industrial = 'fallback',
commercial = 'fallback',
allotments = 'fallback',
retail = 'fallback'},
place = {county = 'always',
district = 'always',
municipality = 'always',
city = 'always',
town = 'always',
borough = 'always',
village = 'always',
suburb = 'always',
hamlet = 'always',
croft = 'always',
subdivision = 'always',
allotments = 'always',
neighbourhood = 'always',
quarter = 'always',
isolated_dwelling = 'always',
farm = 'always',
city_block = 'always',
locality = 'always'}
}
module.MAIN_TAGS.all_boundaries = {
boundary = {'named',
place = 'delete',
land_area = 'delete',
postal_code = 'always'},
landuse = 'fallback',
place = 'always'
}
module.MAIN_TAGS.natural = {
waterway = {'named',
riverbank = 'delete'},
natural = {'named',
yes = 'delete',
no = 'delete',
coastline = 'delete',
saddle = 'fallback'},
mountain_pass = {'always',
no = 'delete'}
}
module.MAIN_TAGS_POIS = function (group)
group = group or 'delete'
return {
aerialway = {'always',
no = group,
pylon = group},
aeroway = {'always',
no = group},
amenity = {'always',
no = group,
parking_space = group,
parking_entrance = group,
waste_disposal = group,
hunting_stand = group},
building = {'fallback',
no = group},
bridge = {'named_with_key',
no = group},
club = {'always',
no = group},
craft = {'always',
no = group},
emergency = {'always',
no = group,
yes = group,
fire_hydrant = group},
healthcare = {'fallback',
yes = group,
no = group},
highway = {'always',
no = group,
turning_circle = group,
mini_roundabout = group,
noexit = group,
crossing = group,
give_way = group,
stop = group,
turning_loop = group,
passing_place = group,
street_lamp = 'named',
traffic_signals = 'named'},
historic = {'always',
yes = group,
no = group},
junction = {'fallback',
no = group},
leisure = {'always',
nature_reserve = 'fallback',
no = group},
man_made = {pier = 'always',
tower = 'always',
bridge = 'always',
works = 'named',
water_tower = 'always',
dyke = 'named',
adit = 'named',
lighthouse = 'always',
watermill = 'always',
tunnel = 'always'},
military = {'always',
yes = group,
no = group},
office = {'always',
no = group},
railway = {'named',
rail = group,
no = group,
abandoned = group,
disused = group,
razed = group,
level_crossing = group,
switch = group,
signal = group,
buffer_stop = group},
shop = {'always',
no = group},
tourism = {'always',
no = group,
yes = group},
tunnel = {'named_with_key',
no = group}
} end
module.MAIN_TAGS_STREETS = {}
module.MAIN_TAGS_STREETS.default = {
place = {square = 'always'},
highway = {motorway = 'always',
trunk = 'always',
primary = 'always',
secondary = 'always',
tertiary = 'always',
unclassified = 'always',
residential = 'always',
road = 'always',
living_street = 'always',
pedestrian = 'always',
service = 'named',
cycleway = 'named',
path = 'named',
footway = 'named',
steps = 'named',
bridleway = 'named',
track = 'named',
motorway_link = 'named',
trunk_link = 'named',
primary_link = 'named',
secondary_link = 'named',
tertiary_link = 'named'}
}
module.MAIN_TAGS_STREETS.car = {
place = {square = 'always'},
highway = {motorway = 'always',
trunk = 'always',
primary = 'always',
secondary = 'always',
tertiary = 'always',
unclassified = 'always',
residential = 'always',
road = 'always',
living_street = 'always',
service = 'always',
track = 'always',
motorway_link = 'always',
trunk_link = 'always',
primary_link = 'always',
secondary_link = 'always',
tertiary_link = 'always'}
}
module.MAIN_TAGS_STREETS.all = {
place = {square = 'always'},
highway = {motorway = 'always',
trunk = 'always',
primary = 'always',
secondary = 'always',
tertiary = 'always',
unclassified = 'always',
residential = 'always',
road = 'always',
living_street = 'always',
pedestrian = 'always',
service = 'always',
cycleway = 'always',
path = 'always',
footway = 'always',
steps = 'always',
bridleway = 'always',
track = 'always',
motorway_link = 'always',
trunk_link = 'always',
primary_link = 'always',
secondary_link = 'always',
tertiary_link = 'always'}
}
-- name tags
module.NAME_TAGS = {}
module.NAME_TAGS.core = {main = {'name', 'name:*',
'int_name', 'int_name:*',
'nat_name', 'nat_name:*',
'reg_name', 'reg_name:*',
'loc_name', 'loc_name:*',
'old_name', 'old_name:*',
'alt_name', 'alt_name:*', 'alt_name_*',
'official_name', 'official_name:*',
'place_name', 'place_name:*',
'short_name', 'short_name:*'},
extra = {'ref', 'int_ref', 'nat_ref', 'reg_ref',
'loc_ref', 'old_ref', 'ISO3166-2'}
}
module.NAME_TAGS.address = {house = {'addr:housename'}}
module.NAME_TAGS.poi = {extra = {'ref', 'int_ref', 'nat_ref', 'reg_ref',
'loc_ref', 'old_ref',
'iata', 'icao',
'ISO3166-2'}}
-- Address tagging
module.ADDRESS_TAGS = {}
module.ADDRESS_TAGS.core = { extra = {'addr:*', 'is_in:*', 'tiger:county'},
postcode = {'postal_code', 'postcode', 'addr:postcode',
'tiger:zip_left', 'tiger:zip_right'},
country = {'country_code', 'ISO3166-1',
'addr:country_code', 'is_in:country_code',
'addr:country', 'is_in:country'}
}
module.ADDRESS_TAGS.houses = { main = {'addr:housenumber',
'addr:conscriptionnumber',
'addr:streetnumber'},
interpolation = {'addr:interpolation'}
}
-- Ignored tags (prefiltered away)
module.IGNORE_KEYS = {}
module.IGNORE_KEYS.metatags = {'note', 'note:*', 'source', 'source:*', '*source',
'attribution', 'comment', 'fixme', 'created_by',
'tiger:cfcc', 'tiger:reviewed', 'nysgissam:*',
'NHD:*', 'nhd:*', 'gnis:*', 'geobase:*', 'yh:*',
'osak:*', 'naptan:*', 'CLC:*', 'import', 'it:fvg:*',
'lacounty:*', 'ref:linz:*',
'ref:bygningsnr', 'ref:ruian:*', 'building:ruian:type',
'type',
'is_in:postcode'}
module.IGNORE_KEYS.name = {'*:prefix', '*:suffix', 'name:prefix:*', 'name:suffix:*',
'name:etymology', 'name:signed', 'name:botanical'}
module.IGNORE_KEYS.address = {'addr:street:*', 'addr:TW:dataset'}
-- Extra tags (prefiltered away)
module.EXTRATAGS = {}
module.EXTRATAGS.required = {'wikipedia', 'wikipedia:*', 'wikidata', 'capital'}
return module

View File

@@ -0,0 +1,23 @@
local _, flex, cfg = ...
flex.set_main_tags('admin')
flex.modify_main_tags('street/' .. (cfg.street_theme or 'default'))
flex.modify_main_tags{boundary = {postal_code = 'always'}}
flex.set_name_tags('core')
flex.modify_name_tags('address')
flex.set_address_tags('core')
flex.modify_address_tags('houses')
flex.ignore_keys('metatags')
flex.add_for_extratags('required')
if cfg.with_extratags then
flex.set_unused_handling{delete_keys = {'tiger:*'}}
flex.add_for_extratags('name')
flex.add_for_extratags('address')
else
flex.ignore_keys('name')
flex.ignore_keys('address')
end

View File

@@ -0,0 +1,20 @@
local _, flex, cfg = ...
flex.set_main_tags('admin')
flex.set_name_tags('core')
flex.set_address_tags('core')
flex.set_postcode_fallback(false)
flex.ignore_keys('metatags')
flex.add_for_extratags('required')
if cfg.with_extratags then
flex.set_unused_handling{delete_keys = {'tiger:*'}}
flex.add_for_extratags('name')
flex.add_for_extratags('address')
else
flex.ignore_keys('name')
flex.ignore_keys('address')
end

View File

@@ -0,0 +1,32 @@
local _, flex, cfg = ...
local group
if cfg.with_extratags then
group = 'extra'
else
group = 'delete'
end
flex.set_main_tags('all_boundaries')
flex.modify_main_tags('natural')
flex.modify_main_tags('street/' .. (cfg.street_theme or 'default'))
flex.modify_main_tags('poi/' .. group)
flex.set_name_tags('core')
flex.modify_name_tags('address')
flex.modify_name_tags('poi')
flex.set_address_tags('core')
flex.modify_address_tags('houses')
flex.ignore_keys('metatags')
flex.add_for_extratags('required')
if cfg.with_extratags then
flex.set_unused_handling{delete_keys = {'tiger:*'}}
flex.add_for_extratags('name')
flex.add_for_extratags('address')
else
flex.ignore_keys('name')
flex.ignore_keys('address')
end

View File

@@ -0,0 +1,22 @@
local _, flex, cfg = ...
flex.set_main_tags('admin')
flex.modify_main_tags('street/' .. (cfg.street_theme or 'default'))
flex.modify_main_tags{boundary = {postal_code = 'always'}}
flex.set_name_tags('core')
flex.set_address_tags('core')
flex.set_postcode_fallback(false)
flex.ignore_keys('metatags')
flex.add_for_extratags('required')
if cfg.with_extratags then
flex.set_unused_handling{delete_keys = {'tiger:*'}}
flex.add_for_extratags('name')
flex.add_for_extratags('address')
else
flex.ignore_keys('name')
flex.ignore_keys('address')
end