1 -- Defines defaults used in the topic definitions.
7 local function group_merge(group1, group2)
8 for name, values in pairs(group2) do
9 if group1[name] == nil then
12 for _, v in pairs(values) do
13 table.insert(group1[name], v)
21 -- Customized main tag filter functions
23 local EXCLUDED_FOOTWAYS = { sidewalk = 1, crossing = 1, link = 1, traffic_aisle }
25 local function filter_footways(place)
26 if place.has_name then
27 local footway = place.object.tags.footway
28 if footway == nil or EXCLUDED_FOOTWAYS[footway] ~= 1 then
35 local function include_when_tag_present(key, value, named)
37 return function(place)
38 if place.has_name and place.intags[key] == value then
44 return function(place)
45 if place.intags[key] == value then
53 local function exclude_when_key_present(key, named)
55 return function(place)
56 if place.has_name and place.intags[key] == nil then
62 return function(place)
63 if place.intags[key] == nil then
72 local function lock_transform(place)
73 if place.object.tags.waterway ~= nil then
74 local name = place.object.tags.lock_name
76 return place:clone{names={name=name, ref=place.object.tags.lock_ref}}
83 -- Main tag definition
87 module.MAIN_TAGS.admin = {
88 boundary = {administrative = 'named'},
89 landuse = {residential = 'fallback',
91 farmyard = 'fallback',
92 industrial = 'fallback',
93 commercial = 'fallback',
94 allotments = 'fallback',
96 place = {county = 'always',
98 municipality = 'always',
106 subdivision = 'always',
107 allotments = 'always',
108 neighbourhood = 'always',
110 isolated_dwelling = 'always',
112 city_block = 'always',
116 module.MAIN_TAGS.all_boundaries = {
119 land_area = 'delete',
120 postal_code = 'always'},
121 landuse = 'fallback',
125 module.MAIN_TAGS.natural = {
127 riverbank = 'delete'},
131 coastline = 'delete',
133 water = exclude_when_key_present('water', true)},
134 mountain_pass = {'always',
136 water = {include_when_tag_present('natural', 'water', true),
144 intermittent = 'delete',
149 module.MAIN_TAGS_POIS = function (group)
150 group = group or 'delete'
152 aerialway = {'always',
159 parking_space = group,
160 parking_entrance = group,
161 waste_disposal = group,
162 hunting_stand = group},
163 building = {'fallback',
165 bridge = {'named_with_key',
171 emergency = {'always',
174 fire_hydrant = group},
175 healthcare = {'fallback',
180 turning_circle = group,
181 mini_roundabout = group,
186 turning_loop = group,
187 passing_place = group,
188 street_lamp = 'named',
189 traffic_signals = 'named'},
190 historic = {'fallback',
193 information = {include_when_tag_present('tourism', 'information'),
195 route_marker = 'never',
196 trail_blaze = 'never'},
197 junction = {'fallback',
199 landuse = {cemetery = 'always'},
201 nature_reserve = 'fallback',
202 swimming_pool = 'named',
206 lock = {yes = lock_transform},
207 man_made = {pier = 'always',
211 water_tower = 'always',
214 lighthouse = 'always',
215 watermill = 'always',
217 military = {'always',
228 level_crossing = group,
231 buffer_stop = group},
235 attraction = 'fallback',
238 information = exclude_when_key_present('information')},
239 tunnel = {'named_with_key',
243 module.MAIN_TAGS_STREETS = {}
245 module.MAIN_TAGS_STREETS.default = {
246 place = {square = 'always'},
247 highway = {motorway = 'always',
250 secondary = 'always',
252 unclassified = 'always',
253 residential = 'always',
255 living_street = 'always',
256 pedestrian = 'always',
260 footway = filter_footways,
264 motorway_link = 'named',
265 trunk_link = 'named',
266 primary_link = 'named',
267 secondary_link = 'named',
268 tertiary_link = 'named'}
271 module.MAIN_TAGS_STREETS.car = {
272 place = {square = 'always'},
273 highway = {motorway = 'always',
276 secondary = 'always',
278 unclassified = 'always',
279 residential = 'always',
281 living_street = 'always',
284 motorway_link = 'always',
285 trunk_link = 'always',
286 primary_link = 'always',
287 secondary_link = 'always',
288 tertiary_link = 'always'}
291 module.MAIN_TAGS_STREETS.all = {
292 place = {square = 'always'},
293 highway = {motorway = 'always',
296 secondary = 'always',
298 unclassified = 'always',
299 residential = 'always',
301 living_street = 'always',
302 pedestrian = 'always',
308 bridleway = 'always',
310 motorway_link = 'always',
311 trunk_link = 'always',
312 primary_link = 'always',
313 secondary_link = 'always',
314 tertiary_link = 'always'}
320 module.NAME_TAGS = {}
322 module.NAME_TAGS.core = {main = {'name', 'name:*',
323 'int_name', 'int_name:*',
324 'nat_name', 'nat_name:*',
325 'reg_name', 'reg_name:*',
326 'loc_name', 'loc_name:*',
327 'old_name', 'old_name:*',
328 'alt_name', 'alt_name:*', 'alt_name_*',
329 'official_name', 'official_name:*',
330 'place_name', 'place_name:*',
331 'short_name', 'short_name:*'},
332 extra = {'ref', 'int_ref', 'nat_ref', 'reg_ref',
333 'loc_ref', 'old_ref', 'ISO3166-2'}
335 module.NAME_TAGS.address = {house = {'addr:housename'}}
336 module.NAME_TAGS.poi = group_merge({main = {'brand'},
337 extra = {'iata', 'icao', 'faa'}},
338 module.NAME_TAGS.core)
342 module.ADDRESS_TAGS = {}
344 module.ADDRESS_TAGS.core = { extra = {'addr:*', 'is_in:*', 'tiger:county'},
345 postcode = {'postal_code', 'postcode', 'addr:postcode',
346 'tiger:zip_left', 'tiger:zip_right'},
347 country = {'country_code', 'ISO3166-1',
348 'addr:country_code', 'is_in:country_code',
349 'addr:country', 'is_in:country'}
352 module.ADDRESS_TAGS.houses = { main = {'addr:housenumber',
353 'addr:conscriptionnumber',
354 'addr:streetnumber'},
355 interpolation = {'addr:interpolation'}
358 -- Ignored tags (prefiltered away)
360 module.IGNORE_KEYS = {}
362 module.IGNORE_KEYS.metatags = {'note', 'note:*', 'source', 'source:*', '*source',
363 'attribution', 'comment', 'fixme', 'created_by',
364 'tiger:cfcc', 'tiger:reviewed', 'nysgissam:*',
365 'NHD:*', 'nhd:*', 'gnis:*', 'geobase:*', 'yh:*',
366 'osak:*', 'naptan:*', 'CLC:*', 'import', 'it:fvg:*',
367 'lacounty:*', 'ref:linz:*', 'survey:*',
368 'ref:bygningsnr', 'ref:ruian:*', 'building:ruian:type',
371 module.IGNORE_KEYS.name = {'*:prefix', '*:suffix', 'name:prefix:*', 'name:suffix:*',
372 'name:etymology', 'name:etymology:*',
373 'name:signed', 'name:botanical'}
374 module.IGNORE_KEYS.address = {'addr:street:*', 'addr:city:*', 'addr:district:*',
375 'addr:province:*', 'addr:subdistrict:*', 'addr:place:*',
378 -- Extra tags (prefiltered away)
380 module.EXTRATAGS = {}
382 module.EXTRATAGS.required = {'wikipedia', 'wikipedia:*', 'wikidata', 'capital'}
386 -- Defaults for the entrance table
388 module.ENTRACE_TABLE.default = {main_tags = {'entrance', 'routing:entrance'},
389 extra_exclude=module.IGNORE_KEYS.metatags}