epk02t_grids.R 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #' 100x100 meetrit kaardiruudukeste genereerimine
  2. #'
  3. #' NB!!!! 100x100 meetrit ruudustike genereerimine võtab aega > 12 tundi. Eesti projektsioonile vastava ning kogu Eestit katva ruutvõrgustiku genereerimine ja salvestamine andmebaasi. Ruutvõrgustiku ruudu suurus 100x100 meetrit. Võrgustik salvestatakse vaikimisi andmebaasi nime 'maaamet.epk02t_grid' alla.Loe: \url{https://geoportaal.maaamet.ee/est/Ruumiandmed/Kaardilehtede-susteemid-p224.html}. Koniguratsiooni muutmiseks muuda konfiguratsiooni. Muutujate vaikeväärtused on sellised, et ei ole vaja midagi muuta.
  4. #' @param conf A list() of configuration variables. Default values \code{\link[ruut]{get_config}}.
  5. #' @return No output.
  6. #' @seealso [ruut::get_config()], [ruut::copy_shp_to_db()]
  7. #' @keywords postgis, maps, ESRI Shpfile, OSM
  8. #' @export
  9. #' @examples
  10. #' \dontrun{
  11. #'
  12. #' conf <- ruut::get_config()
  13. #' epk02t_grids(conf = conf)
  14. #' }
  15. #'
  16. epk02t_grids <- function(conf = NULL) {
  17. ans <- utils::askYesNo("Do you want to import maps into database?", default = F)
  18. if (!ans | is.na(ans)) {
  19. cat("\n------------------------\n")
  20. cat("Kaardikihte ei lisatud.")
  21. cat("\n------------------------\n")
  22. return()
  23. }
  24. if (ans) {
  25. # Temp directory
  26. tmp_dir <- sprintf("%s/%s/epk02t_grid", system.file(package = "estmap"), "maaamet_epk_grids")
  27. if (!dir.exists(tmp_dir)) {
  28. dir.create(tmp_dir, recursive = T)
  29. }
  30. conf <- ruut::get_config()
  31. conf$table <- "epk02t_grid"
  32. conf$schema <- "maaamet"
  33. conf$schema <- "gtfs"
  34. ## Loe instaleeritud tabelid andmebaasis
  35. installed_tables <- ruut::db_schema_tablenames(conf = conf)
  36. algorithm <- "grass7:v.mkgrid"
  37. if (!conf$table %in% installed_tables) {
  38. # 1:40
  39. for (i in 1:40) {
  40. coordinates <- sprintf("300000,6%s0000 [EPSG:3301]", (29 + i))
  41. map <- sprintf("%s/%s.gpkg", tmp_dir, i)
  42. cat(sprintf("\n%s/40 1. coordinates: %s, 2. map: %s", i, coordinates, map))
  43. # ------------------
  44. result <- qgisprocess::qgis_run_algorithm(
  45. algorithm = algorithm,
  46. "-h" = 0,
  47. "-p" = 0,
  48. GRASS_OUTPUT_TYPE_PARAMETER = 3,
  49. GRASS_REGION_PARAMETER = "300000,800000,6320000,6700000 [EPSG:3301]",
  50. GRASS_VECTOR_DSCO = "",
  51. GRASS_VECTOR_EXPORT_NOCAT = 0,
  52. GRASS_VECTOR_LCO = "",
  53. angle = 0,
  54. box = "100,100",
  55. breaks = 0,
  56. coordinates = coordinates,
  57. grid = "100,5000", # "4000,5000"
  58. map = map,
  59. position = 0,
  60. .quiet = TRUE
  61. )
  62. # result
  63. ## Muudame rea numbreid, kuna tsükliga lähevad need kaduma.
  64. layers <- rgdal::ogrListLayers(map)
  65. x <- rgdal::readOGR(map, layers[1])
  66. x$row <- x$row + (i - 1) * 100
  67. x$cat <- rev(x$cat + (i - 1) * 100)
  68. rgdal::writeOGR(obj = x, dsn = map, layer = layers[1], driver = "GPKG", overwrite_layer = T)
  69. ## Lisame kihi andmebaasi
  70. cmd <- sprintf(
  71. paste0(
  72. "ogr2ogr -append --config PG_USE_COPY YES -f PostgreSQL ",
  73. "PG:\" dbname='%s' host=%s port=%d user='%s' password='%s' ",
  74. "sslmode=%s active_schema=%s \" -lco DIM=2 \"%s\" -nlt GEOMETRY ",
  75. "-lco GEOMETRY_NAME=geometry -lco FID=%s -nln %s.%s ",
  76. "-s_srs %s -t_srs %s -nlt %s"
  77. ),
  78. conf$dbname, conf$host, conf$port, conf$user, conf$password, conf$sslmode,
  79. conf$schema, map, "id", conf$schema, conf$table, "EPSG:3301", "EPSG:4326",
  80. "POLYGON"
  81. )
  82. cat(sprintf("\n-----------------\n%s\n", cmd))
  83. system(cmd)
  84. cat(sprintf(
  85. "Fail fail %s kopeeriti POSTGIS andmebaasi %s.%s\n\n",
  86. map, conf$schema, conf$table
  87. ))
  88. }
  89. cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
  90. # result
  91. } else {
  92. cat(sprintf(
  93. "\n-----------------\nUue andmebaasi '%s' installimiseks pead vana enne kustutama.\n",
  94. conf$table
  95. ))
  96. }
  97. }
  98. }