01_funktsioonid.R 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #' Funktsioonid
  2. #'
  3. # -----------------------------------------------------------------------
  4. ## Funktsioon: piirkonna piir
  5. pk_piir <- function(obj) {
  6. # obj - objekti nimetus (näiteks: valga)
  7. conn <- ruut::db_connect()
  8. q <- sprintf("SELECT * FROM %s.%s_piir", conf$schema, tolower(obj))
  9. cat(sprintf("\n-----------------\n%s\n\n", q))
  10. sf::st_read(conn, query = q)
  11. }
  12. # pk_piir(obj = "valga")
  13. # -----------------------------------------------------------------------
  14. ## Funktsioon: piirkonna piiri piirikasti (boundary box) loomine
  15. create_pk_piir_bb <- function(obj) {
  16. # obj - objekti nimetus (näiteks: valga)
  17. # ruut::qgis_algorithm_search_by_word(str = "extract")
  18. algorithm <- "native:extractbylocation"
  19. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  20. result <- qgisprocess::qgis_run_algorithm(
  21. algorithm = algorithm,
  22. INPUT = 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"maaamet\".\"epk10t\" (geometry)',
  23. INTERSECT = sprintf('postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'ogc_fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"xxx_artikkel_210127\".\"%s_piir\" (geometry)', obj),
  24. OUTPUT = qgisprocess::qgis_tmp_vector(),
  25. PREDICATE = c(0, 1),
  26. .quiet = TRUE
  27. )
  28. result
  29. }
  30. # create_pk_piir_bb(obj = objektid[i])
  31. ## Funktsioon: piirkonna piiri piirikasti (boundary box) lugemine
  32. pk_piir_bb <- function(obj) {
  33. # obj - objekti nimetus (näiteks: valga)
  34. conn <- ruut::db_connect()
  35. q <- sprintf("SELECT * FROM %s.%s_epk10t", conf$schema, tolower(obj))
  36. cat(sprintf("\n-----------------\n%s\n\n", q))
  37. sf::st_read(conn, query = q)
  38. }
  39. # pk_piir_bb(obj = "valga")
  40. # -----------------------------------------------------------------------
  41. ## Funktsioon: epk200t (100x100km) kaardiruutudele piirikasti (boundary box) loomine
  42. create_epk200t_bb <- function() {
  43. # ruut::qgis_algorithm_search_by_word(str = "bounding")
  44. algorithm <- "qgis:minimumboundinggeometry"
  45. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  46. result <- qgisprocess::qgis_run_algorithm(
  47. algorithm = algorithm,
  48. FIELD = "",
  49. INPUT = 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"maaamet\".\"epk200t\" (geometry)',
  50. TYPE = 3,
  51. OUTPUT = qgisprocess::qgis_tmp_vector(),
  52. .quiet = TRUE
  53. )
  54. # result
  55. epk200t_bb <- sf::read_sf(qgis_output(result, "OUTPUT"))
  56. sf::st_geometry(epk200t_bb) %>% plot()
  57. conf <- ruut::get_config()
  58. conf$table <- "epk200t_bb"
  59. conf$schema <- "maaamet"
  60. ruut::copy_qgis_object_to_db(x = result, conf = conf, geometry_type = "POLYGON")
  61. cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
  62. # result
  63. }