00_algandmed.R 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #' Andmebaasi loomine ja ühendamine
  2. #'
  3. source("functions/delete_existing_variables.R")
  4. library(dplyr)
  5. library(qgisprocess)
  6. library(sf)
  7. par(oma = c(0, 0, 0, 0)) # outer margin
  8. par(mar = c(0, 0, 0, 0) + 0.0)
  9. source("01_funktsioonid.R")
  10. # Uue schema loomine
  11. conf <- ruut::get_config()
  12. conf$schema <- "xxx_artikkel_210127"
  13. ruut::db_create_new_schema(conf = conf)
  14. # Objektide nimekiri
  15. objektid <- c("valga", "matsalu", "lahemaa")
  16. # ----------------- Loe piirkond (objekt) -----------------
  17. ## Piirkonna 'pk'
  18. conn <- ruut::db_connect(conf = conf)
  19. ## Valitud objekti indeks
  20. i <- 1
  21. for (i in 1:length(objektid)) {
  22. ## 1. piirkonna piir
  23. obj <- objektid[i]
  24. pk <- pk_piir(obj = obj)
  25. sf::st_geometry(pk) %>% plot()
  26. gpkg_home <- "/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa"
  27. dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
  28. input_layer_name <- "piir"
  29. input_layer <- sprintf("%s|layername=%s", dsn, input_layer_name)
  30. output_layer_name <- "boundarybox_3301"
  31. tmp_gpkg_file <- tempfile(fileext = ".gpkg")
  32. # write to gpkg
  33. class(pk)
  34. sf::write_sf(pk,
  35. dsn = dsn,
  36. layer = "piir", driver = "gpkg", append = FALSE )
  37. # layer_options = c("OVERWRITE=true", "append=FALSE")
  38. # ruut::construct_qgis_output_result_to_beter_format()
  39. ## 2. piirkonna 3301 projektsiooniga piirikast
  40. ## 2.1 Esmalt leiame milliset 500x500 meetri ruutudega on objekt kaetud.
  41. # ruut::qgis_algorithm_search_by_word(str = "grid")
  42. algorithm <- "native:creategrid"
  43. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  44. result <- qgisprocess::qgis_run_algorithm(
  45. algorithm = algorithm,
  46. CRS = "EPSG:3301",
  47. # EXTENT = '25.454305528,26.259893095,59.454118579,59.714621582 [EPSG:4326]',
  48. EXTENT = input_layer,
  49. HOVERLAY = 0,
  50. HSPACING = 500,
  51. TYPE = 2,
  52. VOVERLAY = 0,
  53. VSPACING = 500,
  54. OUTPUT = qgisprocess::qgis_tmp_file(ext = ".gpkg"),
  55. .quiet = TRUE
  56. )
  57. result
  58. pk_grid <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
  59. # sf::st_geometry(pk_grid) %>% plot()
  60. ## 2.2 Leitud ruutudele leiame piirikasti.
  61. algorithm <- "qgis:minimumboundinggeometry"
  62. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  63. result1 <- qgisprocess::qgis_run_algorithm(
  64. algorithm = algorithm,
  65. FIELD = "",
  66. INPUT = pk_grid,
  67. TYPE = 3,
  68. OUTPUT = tmp_gpkg_file,
  69. .quiet = TRUE
  70. )
  71. result1
  72. pk_grid_bb <- sf::read_sf(qgisprocess::qgis_output(result1, "OUTPUT"))
  73. sf::st_geometry(pk_grid_bb) %>% plot(add =T)
  74. system(sprintf("ogr2ogr -f GPKG -overwrite %s %s -nln %s", dsn, tmp_gpkg_file, output_layer_name))
  75. }
  76. conn <- ruut::db_connect()
  77. q <- sprintf("SELECT * FROM %s.%s_bb", "xxx_artikkel_210127", obj)
  78. cat(sprintf("\n-----------------\n%s\n\n", q))
  79. pk_bb_3301 <- sf::st_read(conn, query = q)
  80. sf::st_geometry(pk) %>% plot()
  81. sf::st_geometry(pk_bb_3301) %>% plot(add = T)
  82. ## 3. piirkonna epk10t ruudud
  83. # 3.1 kogu ruutvõrgustik
  84. epk10t_grid <- pk_epk10t_grid(obj = objektid[i])
  85. # 3.1 ainult piirkonna ruutvõrgustik
  86. epk10t <- pk_epk10t(obj = objektid[i])
  87. sf::st_geometry(epk10t_grid) %>% plot(border = 3, lwd = 0.3, col = "#d3fffb")
  88. sf::st_geometry(epk10t) %>% plot(add = T, border = 3, lwd = 0.3, col = "#a3fffb")
  89. sf::st_geometry(pk) %>% plot(add = T)
  90. # 4 piirkonna epk10t kaardiruutude nimekiri ortofotode allalaadimiseks
  91. epk10t_nr <- pk_epk10t_ruutude_nimekiri(objektid[i])
  92. ## 5. piirkonna epk2t ruudud
  93. # 3.1 kogu ruutvõrgustik
  94. epk2t_grid <- pk_epk2t_grid(obj = objektid[i])
  95. # 3.1 ainult piirkonna ruutvõrgustik
  96. epk2t <- pk_epk2t(obj = objektid[i])
  97. sf::st_geometry(epk2t_grid) %>% plot(border = 3, lwd = 0.3, col = "#d3fffb")
  98. sf::st_geometry(epk2t) %>% plot(add = T, border = 3, lwd = 0.3, col = "#a3fffb")
  99. sf::st_geometry(pk) %>% plot(add = T)
  100. ## -------------- Muud ruudustikega seotud demo joonised ----------------
  101. ## 2. Kaardiruudustiku epk200t (100x100km) piirikast
  102. conn <- ruut::db_connect()
  103. q <- sprintf("SELECT * FROM %s.%s", "maaamet", "epk200t_bb")
  104. cat(sprintf("\n-----------------\n%s\n\n", q))
  105. epk200t_bb <- sf::st_read(conn, query = q)
  106. sf::st_geometry(epk200t_bb) %>% plot()
  107. ## 3. Kaardiruudustiku epk200t (100x100km)
  108. conn <- ruut::db_connect()
  109. q <- sprintf("SELECT * FROM %s.%s", "maaamet", "epk200t")
  110. cat(sprintf("\n-----------------\n%s\n\n", q))
  111. epk200t <- sf::st_read(conn, query = q)
  112. sf::st_geometry(epk200t) %>% plot(add = T, border = 3, lwd = 0.3, col = "#d3fffb")