admin.lua 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. print(">> admin.lua laaditud")
  2. print(">> osm2pgsql.insert_object =", osm2pgsql.insert_object)
  3. print(">> osm2pgsql.insert =", osm2pgsql.insert)
  4. print(">> osm2pgsql.process_way =", osm2pgsql.process_way)
  5. -- Määrame skeemi keskkonnamuutujast või vaikimisi 'public'
  6. local schema = os.getenv("PGSCHEMA") or "public"
  7. print(">> admin.lua laaditud skeemiga: " .. schema)
  8. -- Defineerime tabeli ainult way/relation objektide jaoks
  9. osm2pgsql.define_way_table('osm_admin', {
  10. { column = 'osm_id', type = 'int' },
  11. { column = 'admin_level', type = 'text' },
  12. { column = 'name', type = 'text' },
  13. { column = 'name_et', type = 'text' },
  14. { column = 'wikidata', type = 'text' },
  15. { column = 'tags', type = 'hstore' },
  16. { column = 'geom', type = 'geometry', projection = 3857, not_null = true }
  17. }, {
  18. schema = schema,
  19. proj = 3301
  20. })
  21. -- Töötleb administratiivseid way-objekte
  22. function osm2pgsql.process_way(object)
  23. if object.tags["boundary"] ~= "administrative" then return end
  24. local admin_level = object.tags["admin_level"]
  25. if not admin_level or not (admin_level == "4" or admin_level == "6" or admin_level == "8") then return end
  26. if not object.is_closed then return end
  27. local geom = object:as_polygon()
  28. if not geom then return end
  29. osm2pgsql.insert_object('osm_admin', {
  30. osm_id = object.id,
  31. admin_level = admin_level,
  32. name = object.tags["name"],
  33. name_et = object.tags["name:et"],
  34. wikidata = object.tags["wikidata"],
  35. tags = object.tags,
  36. geom = geom
  37. })
  38. end
  39. -- Töötleb administratiivseid relation-objekte
  40. function osm2pgsql.process_relation(object)
  41. if object.tags["boundary"] ~= "administrative" then return end
  42. local admin_level = object.tags["admin_level"]
  43. if not admin_level or not (admin_level == "4" or admin_level == "6" or admin_level == "8") then return end
  44. local geom = object:as_multipolygon()
  45. if not geom then return end
  46. osm2pgsql.insert_object('osm_admin', {
  47. osm_id = object.id,
  48. admin_level = admin_level,
  49. name = object.tags["name"],
  50. name_et = object.tags["name:et"],
  51. wikidata = object.tags["wikidata"],
  52. tags = object.tags,
  53. geom = geom
  54. })
  55. end
  56. -- Node'de ignoreerimine
  57. function osm2pgsql.process_node(object)
  58. -- ei tee midagi
  59. end