| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- -- Määrame skeemi keskkonnamuutujast või vaikimisi 'public'
- local schema = os.getenv("PGSCHEMA") or "public"
- local tables = {}
- -- Define the "countries" locator and get all country geometries from the
- -- database. Use the import-countries.lua file to import them first, before
- -- you run this.
- local countries = osm2pgsql.define_locator({name = "countries"})
- countries:add_from_db("SELECT code, ST_Subdivide(geom, 200) FROM " .. schema .. ".countries")
- -- Funktsioon, mis eemaldab soovimatud võtmed tagidest
- local function clean_tags(tags)
- local keys_to_remove = {
- "border_zone"
- }
- for _, key in ipairs(keys_to_remove) do
- tags[key] = nil
- end
- return next(tags) == nil
- end
- -- Defineerime relatsioonide tabeli, kuhu salvestame halduspiirid
- tables.boundaries =
- osm2pgsql.define_relation_table(
- "administrative",
- {
- {column = "country", type = "text"},
- {column = "type", type = "text"},
- {column = "admin_level", type = "int"},
- {column = "name", type = "text"},
- {column = "code", type = "text"},
- {column = "countycode", type = "text"},
- {column = "parishcode", type = "text"},
- {column = "tags", type = "jsonb"},
- {column = "geom", type = "geometry", not_null = true} -- lubame erinevad geomeetriatüübid
- },
- {
- schema = schema,
- proj = 3301
- }
- )
- -- Peamine funktsioon, mis töötleb OSM relatsioone
- function osm2pgsql.process_relation(object)
- local relation_type = object.tags["type"]
- local geom = object:as_multipolygon()
- if not geom then
- return
- end
- -- Kontrollime, kas geomeetria asub Eestis
- local cc = countries:first_intersecting(geom)
- if cc ~= "EE" then
- return
- end
- -- Töötleme ainult boundary-relatsioone
- if relation_type == "boundary" then
- local name = object.tags["name"]
- local type = object.tags["boundary"]
- local admin_level = object.tags.admin_level
- local code = object.tags["EHAK:code"]
- local countycode = object.tags["EHAK:countycode"]
- local parishcode = object.tags["EHAK:parishcode"]
- -- Eemaldame soovimatud tagid
- if clean_tags(object.tags) then
- return
- end
- -- Koostame rea andmebaasi jaoks
- local row = {
- country = cc,
- type = type,
- admin_level = admin_level,
- name = name,
- code = code,
- countycode = countycode,
- parishcode = parishcode,
- tags = object.tags,
- geom = geom
- }
- tables.boundaries:insert(row)
- end
- end
|