Просмотр исходного кода

Lisatud kaartide ruutvõrgustike genereerimine.

Ardo Kubjas 5 лет назад
Родитель
Сommit
229946e544
2 измененных файлов с 169 добавлено и 9 удалено
  1. 7 3
      00_piirkonna_uute_geomeetriate_loomine.R
  2. 162 6
      01_funktsioonid.R

+ 7 - 3
00_piirkonna_uute_geomeetriate_loomine.R

@@ -4,7 +4,7 @@
 ## 1. Piirkonda katvate epk10t ruudud
 for (i in 1:length(objektid)) {
   cat(sprintf("\n-----------------\n%s\n\n", objektid[i]))
-  result <- create_pk_piir_bb(obj = objektid[i])
+  result <- create_pk_epk10t(obj = objektid[i])
   epk10t <- sf::read_sf(qgis_output(result, "OUTPUT"))
   sf::st_geometry(epk10t) %>% plot()
   conf$table <- sprintf("%s_epk10t", objektid[i])
@@ -13,7 +13,7 @@ for (i in 1:length(objektid)) {
 
 ## 2. Ortofotode allalaadimine
 # kaardiruutude nimekiri
-epk10t <- pk_piir_bb(obj = objektid[i])
+epk10t <- pk_epk10t(obj = objektid[i])
 epk10t_nr <- epk10t$nr
 j <- 2
 pattern <- sprintf("%s.tif", epk10t_nr[j])
@@ -26,4 +26,8 @@ if (length(ls) == 0) {
 ## 3. Kaardiruutude epk200t piirikasti loomine
 create_epk200t_bb()
 
-## 4.
+## 4. Kogu Eestit katva võrgustike (grid) loomine
+create_epk200t_grid() # 100x100 km
+create_epk10t_grid() # 5x5 km
+create_epk2t_grid() # 1x1 km
+create_epk02t_grid() # 100x100 m

+ 162 - 6
01_funktsioonid.R

@@ -14,8 +14,8 @@ pk_piir <- function(obj) {
 
 
 # -----------------------------------------------------------------------
-## Funktsioon: piirkonna piiri piirikasti (boundary box) loomine
-create_pk_piir_bb <- function(obj) {
+## Funktsioon: piirkonna piiri katvate epk10t (5x5km) ruutude loomine
+create_pk_epk10t <- function(obj) {
   # obj - objekti nimetus (näiteks: valga)
   # ruut::qgis_algorithm_search_by_word(str = "extract")
   algorithm <- "native:extractbylocation"
@@ -30,17 +30,17 @@ create_pk_piir_bb <- function(obj) {
   )
   result
 }
-# create_pk_piir_bb(obj = objektid[i])
+# create_pk_epk10t(obj = objektid[i])
 
-## Funktsioon: piirkonna piiri piirikasti (boundary box) lugemine
-pk_piir_bb <- function(obj) {
+## Funktsioon: piirkonna piiri katvate epk10t (5x5km) ruutude lugemine
+pk_epk10t <- function(obj) {
   # obj - objekti nimetus (näiteks: valga)
   conn <- ruut::db_connect()
   q <- sprintf("SELECT * FROM %s.%s_epk10t", conf$schema, tolower(obj))
   cat(sprintf("\n-----------------\n%s\n\n", q))
   sf::st_read(conn, query = q)
 }
-# pk_piir_bb(obj = "valga")
+# pk_epk10t(obj = "valga")
 
 
 # -----------------------------------------------------------------------
@@ -67,3 +67,159 @@ create_epk200t_bb <- function() {
   cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
   # result
 }
+
+
+
+# ---------------------------------------------------------------------
+## Grdid genereerimine.
+#' Funktsioonid gnereerivad kogu Eestit (s.o maaameti 100x100 km kogu Eestit katvate
+#' ruudstikega määratud ala). Ruutvõrgustik genereeritakse ruutudele 1x1, 5x5 ja
+#' 100x100 km.
+
+# 1. 100x100 km ruudustik
+create_epk200t_grid <- function() {
+  # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
+  algorithm <- "grass7:v.mkgrid"
+  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+  result <- qgisprocess::qgis_run_algorithm(
+    algorithm = algorithm,
+    "-h" = 0,
+    "-p" = 0,
+    GRASS_OUTPUT_TYPE_PARAMETER = 0,
+    GRASS_REGION_PARAMETER = "",
+    GRASS_VECTOR_DSCO = "",
+    GRASS_VECTOR_EXPORT_NOCAT = 0,
+    GRASS_VECTOR_LCO = "",
+    angle = 0,
+    box = "100000,100000",
+    breaks = 0,
+    coordinates = "300000,6300000 [EPSG:3301]",
+    grid = "4,5",
+    map = "tmp/epk200t_grrid.gpkg",
+    position = 0,
+    .quiet = TRUE
+  )
+  # result
+  epk200t_grid <- sf::read_sf(qgis_output(result, "map"))
+  sf::st_geometry(epk200t_grid) %>% plot()
+  conf <- ruut::get_config()
+  conf$table <- "epk200t_grid"
+  conf$schema <- "maaamet"
+  ruut::copy_qgis_object_to_db(
+    x = result, conf = conf, geometry_type = "POLYGON",
+    crs_source = "EPSG:3301"
+  )
+  cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
+  # result
+}
+
+# 2. 5x5 km ruudustik
+create_epk10t_grid <- function() {
+  # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
+  algorithm <- "grass7:v.mkgrid"
+  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+  result <- qgisprocess::qgis_run_algorithm(
+    algorithm = algorithm,
+    "-h" = 0,
+    "-p" = 0,
+    GRASS_OUTPUT_TYPE_PARAMETER = 0,
+    GRASS_REGION_PARAMETER = "",
+    GRASS_VECTOR_DSCO = "",
+    GRASS_VECTOR_EXPORT_NOCAT = 0,
+    GRASS_VECTOR_LCO = "",
+    angle = 0,
+    box = "5000,5000", # 5x5 km
+    breaks = 0,
+    coordinates = "300000,6300000 [EPSG:3301]",
+    grid = "80,100", # ridade ja veergude arv
+    map = "tmp/epk10t_grrid.gpkg",
+    position = 0,
+    .quiet = TRUE
+  )
+  # result
+  epk10t_grid <- sf::read_sf(qgis_output(result, "map"))
+  sf::st_geometry(epk10t_grid) %>% plot()
+  conf <- ruut::get_config()
+  conf$table <- "epk10t_grid"
+  conf$schema <- "maaamet"
+  ruut::copy_qgis_object_to_db(
+    x = result, conf = conf, geometry_type = "POLYGON",
+    crs_source = "EPSG:3301"
+  )
+  cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
+  # result
+}
+
+# 3. 1 x 1 km ruudustik
+create_epk2t_grid <- function() {
+  # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
+  algorithm <- "grass7:v.mkgrid"
+  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+  result <- qgisprocess::qgis_run_algorithm(
+    algorithm = algorithm,
+    "-h" = 0,
+    "-p" = 0,
+    GRASS_OUTPUT_TYPE_PARAMETER = 0,
+    GRASS_REGION_PARAMETER = "",
+    GRASS_VECTOR_DSCO = "",
+    GRASS_VECTOR_EXPORT_NOCAT = 0,
+    GRASS_VECTOR_LCO = "",
+    angle = 0,
+    box = "1000,1000",
+    breaks = 0,
+    coordinates = "300000,6300000 [EPSG:3301]",
+    grid = "400,500",
+    map = "tmp/epk2t_grrid.gpkg",
+    position = 0,
+    .quiet = TRUE
+  )
+  # result
+  # epk2t_grid <- sf::read_sf(qgis_output(result, "map"))
+  # sf::st_geometry(epk2t_grid) %>% plot()
+  conf <- ruut::get_config()
+  conf$table <- "epk2t_grid"
+  conf$schema <- "maaamet"
+  ruut::copy_qgis_object_to_db(
+    x = result, conf = conf, geometry_type = "POLYGON",
+    crs_source = "EPSG:3301"
+  )
+  cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
+  # result
+}
+
+# 3. 100 x 100 m ruudustik
+create_epk02t_grid <- function() {
+  # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
+  algorithm <- "grass7:v.mkgrid"
+  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+  result <- qgisprocess::qgis_run_algorithm(
+    algorithm = algorithm,
+    "-h" = 0,
+    "-p" = 0,
+    GRASS_OUTPUT_TYPE_PARAMETER = 0,
+    GRASS_REGION_PARAMETER = "",
+    GRASS_VECTOR_DSCO = "",
+    GRASS_VECTOR_EXPORT_NOCAT = 0,
+    GRASS_VECTOR_LCO = "",
+    angle = 0,
+    box = "100,100",
+    breaks = 0,
+    coordinates = "300000,6300000 [EPSG:3301]",
+    grid = "4000,5000",
+    map = "tmp/epk02t_grrid.gpkg",
+    position = 0,
+    .quiet = TRUE
+  )
+  # result
+  # epk02t_grid <- sf::read_sf(qgis_output(result, "map"))
+  # sf::st_geometry(epk02t_grid) %>% plot()
+  conf <- ruut::get_config()
+  conf$table <- "epk02t_grid"
+  conf$schema <- "maaamet"
+  ruut::copy_qgis_object_to_db(
+    x = result, conf = conf, geometry_type = "POLYGON",
+    crs_source = "EPSG:3301"
+  )
+  cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
+  # result
+}