mirror of
https://github.com/osm2pgsql-dev/osm2pgsql.git
synced 2025-07-31 02:20:28 +00:00
282 lines
6.6 KiB
Lua
282 lines
6.6 KiB
Lua
-- This config example file is released into the Public Domain.
|
|
|
|
-- This is a generic configuration that is a good starting point for
|
|
-- real-world projects. Data is split into tables according to geometry type
|
|
-- and most tags are stored in jsonb columns.
|
|
|
|
-- Set this to the projection you want to use
|
|
local srid = 3857
|
|
|
|
local tables = {}
|
|
|
|
tables.points = osm2pgsql.define_node_table('points', {
|
|
{ column = 'tags', type = 'jsonb' },
|
|
{ column = 'geom', type = 'point', projection = srid, not_null = true },
|
|
})
|
|
|
|
tables.lines = osm2pgsql.define_way_table('lines', {
|
|
{ column = 'tags', type = 'jsonb' },
|
|
{ column = 'geom', type = 'linestring', projection = srid, not_null = true },
|
|
})
|
|
|
|
tables.polygons = osm2pgsql.define_area_table('polygons', {
|
|
{ column = 'tags', type = 'jsonb' },
|
|
{ column = 'geom', type = 'geometry', projection = srid, not_null = true },
|
|
})
|
|
|
|
tables.routes = osm2pgsql.define_relation_table('routes', {
|
|
{ column = 'tags', type = 'jsonb' },
|
|
{ column = 'geom', type = 'multilinestring', projection = srid, not_null = true },
|
|
})
|
|
|
|
tables.boundaries = osm2pgsql.define_relation_table('boundaries', {
|
|
{ column = 'tags', type = 'jsonb' },
|
|
{ column = 'geom', type = 'multilinestring', projection = srid, not_null = true },
|
|
})
|
|
|
|
-- These tag keys are generally regarded as useless for most rendering. Most
|
|
-- of them are from imports or intended as internal information for mappers.
|
|
--
|
|
-- If a key ends in '*' it will match all keys with the specified prefix.
|
|
--
|
|
-- If you want some of these keys, perhaps for a debugging layer, just
|
|
-- delete the corresponding lines.
|
|
local delete_keys = {
|
|
-- "mapper" keys
|
|
'attribution',
|
|
'comment',
|
|
'created_by',
|
|
'fixme',
|
|
'note',
|
|
'note:*',
|
|
'odbl',
|
|
'odbl:note',
|
|
'source',
|
|
'source:*',
|
|
'source_ref',
|
|
|
|
-- "import" keys
|
|
|
|
-- Corine Land Cover (CLC) (Europe)
|
|
'CLC:*',
|
|
|
|
-- Geobase (CA)
|
|
'geobase:*',
|
|
-- CanVec (CA)
|
|
'canvec:*',
|
|
|
|
-- osak (DK)
|
|
'osak:*',
|
|
-- kms (DK)
|
|
'kms:*',
|
|
|
|
-- ngbe (ES)
|
|
-- See also note:es and source:file above
|
|
'ngbe:*',
|
|
|
|
-- Friuli Venezia Giulia (IT)
|
|
'it:fvg:*',
|
|
|
|
-- KSJ2 (JA)
|
|
-- See also note:ja and source_ref above
|
|
'KSJ2:*',
|
|
-- Yahoo/ALPS (JA)
|
|
'yh:*',
|
|
|
|
-- LINZ (NZ)
|
|
'LINZ2OSM:*',
|
|
'linz2osm:*',
|
|
'LINZ:*',
|
|
'ref:linz:*',
|
|
|
|
-- WroclawGIS (PL)
|
|
'WroclawGIS:*',
|
|
-- Naptan (UK)
|
|
'naptan:*',
|
|
|
|
-- TIGER (US)
|
|
'tiger:*',
|
|
-- GNIS (US)
|
|
'gnis:*',
|
|
-- National Hydrography Dataset (US)
|
|
'NHD:*',
|
|
'nhd:*',
|
|
-- mvdgis (Montevideo, UY)
|
|
'mvdgis:*',
|
|
|
|
-- EUROSHA (Various countries)
|
|
'project:eurosha_2012',
|
|
|
|
-- UrbIS (Brussels, BE)
|
|
'ref:UrbIS',
|
|
|
|
-- NHN (CA)
|
|
'accuracy:meters',
|
|
'sub_sea:type',
|
|
'waterway:type',
|
|
-- StatsCan (CA)
|
|
'statscan:rbuid',
|
|
|
|
-- RUIAN (CZ)
|
|
'ref:ruian:addr',
|
|
'ref:ruian',
|
|
'building:ruian:type',
|
|
-- DIBAVOD (CZ)
|
|
'dibavod:id',
|
|
-- UIR-ADR (CZ)
|
|
'uir_adr:ADRESA_KOD',
|
|
|
|
-- GST (DK)
|
|
'gst:feat_id',
|
|
|
|
-- Maa-amet (EE)
|
|
'maaamet:ETAK',
|
|
-- FANTOIR (FR)
|
|
'ref:FR:FANTOIR',
|
|
|
|
-- 3dshapes (NL)
|
|
'3dshapes:ggmodelk',
|
|
-- AND (NL)
|
|
'AND_nosr_r',
|
|
|
|
-- OPPDATERIN (NO)
|
|
'OPPDATERIN',
|
|
-- Various imports (PL)
|
|
'addr:city:simc',
|
|
'addr:street:sym_ul',
|
|
'building:usage:pl',
|
|
'building:use:pl',
|
|
-- TERYT (PL)
|
|
'teryt:simc',
|
|
|
|
-- RABA (SK)
|
|
'raba:id',
|
|
-- DCGIS (Washington DC, US)
|
|
'dcgis:gis_id',
|
|
-- Building Identification Number (New York, US)
|
|
'nycdoitt:bin',
|
|
-- Chicago Building Inport (US)
|
|
'chicago:building_id',
|
|
-- Louisville, Kentucky/Building Outlines Import (US)
|
|
'lojic:bgnum',
|
|
-- MassGIS (Massachusetts, US)
|
|
'massgis:way_id',
|
|
-- Los Angeles County building ID (US)
|
|
'lacounty:*',
|
|
-- Address import from Bundesamt für Eich- und Vermessungswesen (AT)
|
|
'at_bev:addr_date',
|
|
|
|
-- misc
|
|
'import',
|
|
'import_uuid',
|
|
'OBJTYPE',
|
|
'SK53_bulk:load',
|
|
'mml:class'
|
|
}
|
|
|
|
-- The osm2pgsql.make_clean_tags_func() function takes the list of keys
|
|
-- and key prefixes defined above and returns a function that can be used
|
|
-- to clean those tags out of a Lua table. The clean_tags function will
|
|
-- return true if it removed all tags from the table.
|
|
local clean_tags = osm2pgsql.make_clean_tags_func(delete_keys)
|
|
|
|
-- Helper function that looks at the tags and decides if this is possibly
|
|
-- an area.
|
|
local function has_area_tags(tags)
|
|
if tags.area == 'yes' then
|
|
return true
|
|
end
|
|
if tags.area == 'no' then
|
|
return false
|
|
end
|
|
|
|
return tags.aeroway
|
|
or tags.amenity
|
|
or tags.building
|
|
or tags.harbour
|
|
or tags.historic
|
|
or tags.landuse
|
|
or tags.leisure
|
|
or tags.man_made
|
|
or tags.military
|
|
or tags.natural
|
|
or tags.office
|
|
or tags.place
|
|
or tags.power
|
|
or tags.public_transport
|
|
or tags.shop
|
|
or tags.sport
|
|
or tags.tourism
|
|
or tags.water
|
|
or tags.waterway
|
|
or tags.wetland
|
|
or tags['abandoned:aeroway']
|
|
or tags['abandoned:amenity']
|
|
or tags['abandoned:building']
|
|
or tags['abandoned:landuse']
|
|
or tags['abandoned:power']
|
|
or tags['area:highway']
|
|
or tags['building:part']
|
|
end
|
|
|
|
function osm2pgsql.process_node(object)
|
|
if clean_tags(object.tags) then
|
|
return
|
|
end
|
|
|
|
tables.points:insert({
|
|
tags = object.tags,
|
|
geom = object:as_point()
|
|
})
|
|
end
|
|
|
|
function osm2pgsql.process_way(object)
|
|
if clean_tags(object.tags) then
|
|
return
|
|
end
|
|
|
|
if object.is_closed and has_area_tags(object.tags) then
|
|
tables.polygons:insert({
|
|
tags = object.tags,
|
|
geom = object:as_polygon()
|
|
})
|
|
else
|
|
tables.lines:insert({
|
|
tags = object.tags,
|
|
geom = object:as_linestring()
|
|
})
|
|
end
|
|
end
|
|
|
|
function osm2pgsql.process_relation(object)
|
|
local relation_type = object:grab_tag('type')
|
|
|
|
if clean_tags(object.tags) then
|
|
return
|
|
end
|
|
|
|
if relation_type == 'route' then
|
|
tables.routes:insert({
|
|
tags = object.tags,
|
|
geom = object:as_multilinestring()
|
|
})
|
|
return
|
|
end
|
|
|
|
if relation_type == 'boundary' or (relation_type == 'multipolygon' and object.tags.boundary) then
|
|
tables.boundaries:insert({
|
|
tags = object.tags,
|
|
geom = object:as_multilinestring():line_merge()
|
|
})
|
|
return
|
|
end
|
|
|
|
if relation_type == 'multipolygon' then
|
|
tables.polygons:insert({
|
|
tags = object.tags,
|
|
geom = object:as_multipolygon()
|
|
})
|
|
end
|
|
end
|
|
|