| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- -- Määrame skeemi keskkonnamuutujast või vaikimisi 'public'
- local schema = os.getenv("PGSCHEMA") or "public"
- -- This config example file is released into the Public Domain.
- -- This config shows how to access the attributes of OSM objects: the version,
- -- changeset id, timestamp, user id and user name. Note that some OSM files do
- -- not contain all of those attributes, so check your input data if you get
- -- empty fields.
- -- Set this to the projection you want to use
- local srid = 3301
- local tables = {}
- tables.nodes = osm2pgsql.define_node_table('nodes', {
- { column = 'tags', type = 'jsonb' },
- { column = 'geom', type = 'point', projection = srid },
- { column = 'version', type = 'int' },
- { column = 'changeset', type = 'int' },
- -- There is no built-in type for timestamps in osm2pgsql. So we use the
- -- PostgreSQL type "timestamp" and then have to convert our timestamps
- -- to a valid text representation for that type.
- --
- -- Timestamps in OSM are always in UTC, depending on your use case you
- -- might want to store them using "timestamptz" instead.
- -- See https://github.com/openstreetmap/osm2pgsql/issues/1785
- { column = 'created', sql_type = 'timestamp' },
- { column = 'uid', type = 'int' },
- { column = 'user', type = 'text' },
- }, {
- schema = schema,
- proj = 3301
- })
- tables.ways = osm2pgsql.define_way_table('ways', {
- { column = 'tags', type = 'jsonb' },
- { column = 'geom', type = 'linestring', projection = srid },
- { column = 'version', type = 'int' },
- { column = 'changeset', type = 'int' },
- { column = 'created', sql_type = 'timestamp' },
- { column = 'uid', type = 'int' },
- { column = 'user', type = 'text' },
- { column = 'nodes', type = 'text', sql_type = 'bigint[]' },
- }, {
- schema = schema,
- proj = 3301
- })
- tables.relations = osm2pgsql.define_relation_table('relations', {
- { column = 'tags', type = 'jsonb' },
- { column = 'version', type = 'int' },
- { column = 'changeset', type = 'int' },
- { column = 'created', sql_type = 'timestamp' },
- { column = 'uid', type = 'int' },
- { column = 'user', type = 'text' },
- { column = 'members', type = 'jsonb' },
- }, {
- schema = schema,
- proj = 3301
- })
- local function format_date(ts)
- return os.date('!%Y-%m-%dT%H:%M:%SZ', ts)
- end
- function osm2pgsql.process_node(object)
- if next(object.tags) == nil then
- return
- end
- tables.nodes:insert({
- tags = object.tags,
- geom = object:as_point(),
- version = object.version,
- changeset = object.changeset,
- created = format_date(object.timestamp),
- uid = object.uid,
- user = object.user
- })
- end
- function osm2pgsql.process_way(object)
- tables.ways:insert({
- tags = object.tags,
- geom = object:as_linestring(),
- version = object.version,
- changeset = object.changeset,
- created = format_date(object.timestamp),
- uid = object.uid,
- user = object.user,
- nodes = '{' .. table.concat(object.nodes, ',') .. '}'
- })
- end
- function osm2pgsql.process_relation(object)
- tables.relations:insert({
- tags = object.tags,
- version = object.version,
- changeset = object.changeset,
- created = format_date(object.timestamp),
- uid = object.uid,
- user = object.user,
- members = object.members
- })
- end
|