Browse Source

Vahekoopia.

Ardo Kubjas 5 years ago
parent
commit
b3184392f5
1 changed files with 80 additions and 15 deletions
  1. 80 15
      00_algandmed.R

+ 80 - 15
00_algandmed.R

@@ -1,6 +1,9 @@
 #' Andmebaasi loomine ja ühendamine
 #'
 
+str <- ""
+ruut::construct_qgis_output_result_to_beter_format(str = str)
+
 source("functions/delete_existing_variables.R")
 
 library(dplyr)
@@ -28,7 +31,8 @@ conn <- ruut::db_connect(conf = conf)
 i <- 1
 
 for (i in 1:length(objektid)) {
-  ## 1. piirkonna piir
+  ## ---------------- 1. piirkonna piir ------------------
+  ## Muutujad: pk - piirkond
   obj <- objektid[i]
   pk <- pk_piir(obj = obj)
   sf::st_geometry(pk) %>% plot()
@@ -42,11 +46,10 @@ for (i in 1:length(objektid)) {
   class(pk)
   sf::write_sf(pk,
     dsn = dsn,
-    layer = "piir", driver = "gpkg", append = FALSE )
-  # layer_options = c("OVERWRITE=true", "append=FALSE")
-  # ruut::construct_qgis_output_result_to_beter_format()
+    layer = "piir", driver = "gpkg", append = FALSE
+  )
 
-  ## 2. piirkonna 3301 projektsiooniga piirikast
+  ## ------------ 2. piirkonna 3301 projektsiooniga piirikast --------------
   ## 2.1  Esmalt leiame milliset 500x500 meetri ruutudega on objekt kaetud.
   # ruut::qgis_algorithm_search_by_word(str = "grid")
   algorithm <- "native:creategrid"
@@ -61,8 +64,8 @@ for (i in 1:length(objektid)) {
     TYPE = 2,
     VOVERLAY = 0,
     VSPACING = 500,
-    OUTPUT = qgisprocess::qgis_tmp_file(ext = ".gpkg"),
-    .quiet = TRUE
+    OUTPUT = qgisprocess::qgis_tmp_file(ext = ".gpkg")
+    # .quiet = TRUE
   )
   result
   pk_grid <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
@@ -70,21 +73,83 @@ for (i in 1:length(objektid)) {
   ## 2.2 Leitud ruutudele leiame piirikasti.
   algorithm <- "qgis:minimumboundinggeometry"
   # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result1 <- qgisprocess::qgis_run_algorithm(
+  result <- qgisprocess::qgis_run_algorithm(
     algorithm = algorithm,
     FIELD = "",
     INPUT = pk_grid,
     TYPE = 3,
-    OUTPUT = tmp_gpkg_file,
-    .quiet = TRUE
+    OUTPUT = tmp_gpkg_file
+    # .quiet = TRUE
   )
-  result1
-  pk_grid_bb <- sf::read_sf(qgisprocess::qgis_output(result1, "OUTPUT"))
-  sf::st_geometry(pk_grid_bb) %>% plot(add =T)
+  result
+  pk_grid_bb <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
+  sf::st_geometry(pk_grid_bb) %>% plot(add = T)
   system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s", dsn, tmp_gpkg_file, output_layer_name))
-}
-
 
+  ## ------------- 3. piirkonna epk10t (5x5 km) ruudud --------------------
+  # 3.1 kogu ruutvõrgustik
+  ruudud <- c("epk10t_grid", "epk2t_grid", "epk02t_grid")
+  j <- 4
+  for (j in 1:length(ruudud)) {
+    ruut <- ruudud[j]
+    output_layer_name <- ruut
+    conf <- ruut::get_config()
+    pg <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
+    input <- sprintf(
+      'postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"%s\".\"%s\" (geometry)',
+      conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password,
+      "maaamet", ruut
+    )
+    # ruut::qgis_algorithm_search_by_word(str = "extract")
+    algorithm <- "native:extractbylocation"
+    # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+    result <- qgisprocess::qgis_run_algorithm(
+      algorithm = algorithm,
+      INPUT = input,
+      INTERSECT = sprintf("%s|layername=%s", dsn, "boundarybox_3301"),
+      OUTPUT = tmp_gpkg_file,
+      PREDICATE = c(0, 1)
+      # .quiet = TRUE
+    )
+    result
+    assign(ruut, sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT")))
+    system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s", dsn, tmp_gpkg_file, output_layer_name))
+  }
+  sf::st_geometry(epk10t_grid) %>% plot(add = T)
+
+  # 3.2 ainult piirkonnaga seotud ning informatsiooni sisaldav ruutvõrgustik
+  ruudud <- c("epk10t", "epk2t")
+  j <- 4
+  for (j in 1:length(ruudud)) {
+    ruut <- ruudud[j]
+    output_layer_name <- ruut
+    conf <- ruut::get_config()
+    pg <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
+    input <- sprintf(
+      'postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"%s\".\"%s\" (geometry)',
+      conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password,
+      "maaamet", ruut
+    )
+    # ruut::qgis_algorithm_search_by_word(str = "extract")
+    algorithm <- "native:extractbylocation"
+    # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+    result <- qgisprocess::qgis_run_algorithm(
+      algorithm = algorithm,
+      INPUT = input,
+      INTERSECT = input_layer,
+      OUTPUT = tmp_gpkg_file,
+      PREDICATE = c(0, 1)
+      # .quiet = TRUE
+    )
+    result
+    assign(ruut, sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT")))
+    system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s", dsn, tmp_gpkg_file, output_layer_name))
+  }
+  sf::st_geometry(epk10t) %>% plot(add = T)
+  ## ---------------------- vaata layer'id ----------------------
+  # Vaata layer'eid
+  sf::st_layers(dsn = dsn)
+}