Jelajahi Sumber

Muudetud faili ja funktsiooni nime 'construct_qgis_output_result_to_better_format'.

Ardo Kubjas 5 tahun lalu
induk
melakukan
f9e27167b6

+ 5 - 3
R/construct_qgis_output_result_to_beter_format.R → R/construct_qgis_output_result_to_better_format.R

@@ -32,7 +32,7 @@
 #' system(cmd)
 #'
 #' }
-construct_qgis_output_result_to_beter_format <- function(str = "", algorithm = "xxxxxxxxxx") {
+construct_qgis_output_result_to_better_format <- function(str = "", algorithm = "xxxxxxxxxx") {
   # Eemaldame reavahed
   str <- gsub("\n", " ", str)
   # Tühjal stringil vahetame kõrvutiolevad 1-kordsed jutumärgid 2-kordsetega
@@ -54,8 +54,10 @@ construct_qgis_output_result_to_beter_format <- function(str = "", algorithm = "
   # Asendame algoritmi
   str <- gsub("algorithm", algorithm, str)
   # Nurksulgude asendamine
-  str <- gsub("[[]", "\"", str)
-  str <- gsub("[]]", "\"", str)
+  str <- gsub("[[]", "", str)
+  str <- gsub("[]]", "", str)
+  # Asendame ="[]'
+  str <- gsub("=\"([ a-zA-Z0-9_ ]*)'", "='\\1'", str)
   cat(str)
   str
 }

+ 47 - 28
R/gpkg_piirkonnale_polygoonide_lisamine.R

@@ -27,17 +27,21 @@ gpkg_piirkonnale_polygoonide_lisamine <- function(obj = NULL, gpkg_home = "/tmp"
   }
   ## Konfiguratsiooni muutujale väärtuste omistamine
   conf <- ruut::get_config()
+  tmp_gpkg_file <- tempfile(fileext = ".gpkg")
+  conf$gpkg_home <- dirname(tmp_gpkg_file)
+  conf$gpkg_file <- gsub(paste0(conf$gpkg_home, "/"), "", tmp_gpkg_file)
+  conf$gpkg_file <- gsub(".gpkg", "", conf$gpkg_file)
+
   conf$gpkg_home <- gpkg_home
   conf$gpkg_file <- obj
-  postgres <- sprintf(
-    "postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'id\' srid=3301 type=Polygon checkPrimaryKeyUnicity=\'1\' ",
-    conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password
-  )
-  tmp_gpkg_file <- tempfile(fileext = ".gpkg")
+  conf$gpkg_table <- "tmp_table"
+  tmp_gpkg_file_output <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = F)
+  tmp_gpkg_file_input <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = T)
+
   ## Algorithm
   # ruut::qgis_algorithm_search_by_word(str = "extract")
   # algorithm <- "native:extractbylocation"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+  # cat(ruut::qgis_show_help(algorithm = algorithm))
 
   ## -------------------- Loop -----------------------
   intersect_layers <- c("piir", "bb")
@@ -51,31 +55,34 @@ gpkg_piirkonnale_polygoonide_lisamine <- function(obj = NULL, gpkg_home = "/tmp"
   andmed <- rbind(andmed, data.frame("schema" = "osm_shp", "table" = "pois_a"))
   andmed <- rbind(andmed, data.frame("schema" = "osm_shp", "table" = "natural_a"))
   for (intersect in intersect_layers) {
+    conf$gpkg_table <- intersect
+    intersect_layer <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = T)
     for (i in 1:nrow(andmed)) {
       conf$gpkg_table <- sprintf("%s_%s", intersect, andmed$table[i])
-      output <- ruut::construct_to_gpkg_output_file_str(conf = conf)
-      ## !!! Trikk: alguses leiame ühisosaga piirkonnad
-      result <- qgisprocess::qgis_run_algorithm(
-        algorithm = "native:extractbylocation",
-        INPUT = sprintf(
-          '%s table=\"%s\".\"%s\" (geom)',
-          postgres, andmed$schema[i], andmed$table[i]
-        ),
-        INTERSECT = sprintf("%s|layername=%s", dsn, intersect),
-        OUTPUT = tmp_gpkg_file,
-        PREDICATE = c(0)
+      conf$table <- andmed$table[i]
+      conf$schema <- andmed$schema[i]
+      output <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = F)
+      input <- ruut::construct_to_gpkg_output_postgres_str(
+        conf = conf, geometry_type = "Polygon", srid = 3301,
+        checkPrimaryKeyUnicity = TRUE, key = "id"
       )
+      ## !!! Trikk: alguses leiame ühisosaga piirkonnad
+      ## ------------------- QGIS: qgisprocess ----------------------
+      str <- paste0("{ 'INPUT' : '", input, "', 'INTERSECT' : '", intersect_layer, "', 'OUTPUT' : '", tmp_gpkg_file_output, "', 'PREDICATE' : [0] }")
+      algorithm <- "native:extractbylocation"
+      cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
+      cat(sprintf("\n%s\n", cmd))
+      system(cmd)
       ## !!! Trikk jätkub: edasi leiame alles ühisosa
-      result <- qgisprocess::qgis_run_algorithm(
-        algorithm = "native:intersection",
-        INPUT = tmp_gpkg_file,
-        INPUT_FIELDS = "",
-        OVERLAY = sprintf("%s|layername=%s", dsn, intersect),
-        OVERLAY_FIELDS = "",
-        OVERLAY_FIELDS_PREFIX = "",
-        OUTPUT = output
-        # .quiet = TRUE
-      )
+      str <- paste0("{ 'INPUT' : '", tmp_gpkg_file_input, "', 'OVERLAY' : '", intersect_layer, "', 'OUTPUT' : '", output, "', 'INPUT_FIELDS' : '', 'OVERLAY_FIELDS' : '', 'OVERLAY_FIELDS_PREFIX' : '' }")
+      str <- paste0("{ 'INPUT' : '", tmp_gpkg_file_input, "', 'INPUT_FIELDS' : ['id','osm_id','code','fclass','name'], 'OUTPUT' : '", output, "', 'OVERLAY' : '", intersect_layer, "', 'OVERLAY_FIELDS' : ['fid','id','left','top','right','bottom'], 'OVERLAY_FIELDS_PREFIX' : '' }")
+      algorithm <- "native:intersection"
+      cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
+      cat(sprintf("\n%s\n", cmd))
+      system(cmd)
+
+
+
       ## Filtreerime maakasutuse kihi 'landuse-a' eraldi alamkihtideks
       if (andmed$table[i] == "landuse_a") {
         landuse_a <- unique(as.data.frame(sf::read_sf(dsn = dsn, layer = sprintf("%s_landuse_a", intersect), as_tibble = T))[, c("code", "fclass")])
@@ -83,7 +90,19 @@ gpkg_piirkonnale_polygoonide_lisamine <- function(obj = NULL, gpkg_home = "/tmp"
         for (k in 1:nrow(landuse_a)) {
           table_suffix <- landuse_a$fclass[k]
           conf$gpkg_table <- sprintf("%s_%s", parent_table, table_suffix)
-          output <- ruut::construct_to_gpkg_output_file_str(conf = conf)
+          input <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = TRUE)
+          sprintf("%s_%s",conf$gpkg_table, table_suffix)
+          output <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = FALSE)
+          str <- paste0("{ 'INPUT' : '", input, "', 'INTERSECT' : '", intersect_layer, "', 'OUTPUT' : '", tmp_gpkg_file, "', FIELD : 'code', OPERATOR : 0, VALUE : '", landuse_a$code[k], "' }")
+          algorithm <- "native:extractbyattribute"
+          cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
+          cat(sprintf("\n%s\n", cmd))
+          system(cmd)
+
+
+
+
+
           result <- qgisprocess::qgis_run_algorithm(
             algorithm = "native:extractbyattribute",
             FIELD = "code",

+ 1 - 1
R/gpkg_piirkonnale_ruudustike_lisamine.R

@@ -52,7 +52,7 @@ gpkg_piirkonnale_ruudustike_lisamine <- function(obj = NULL, gpkg_home = "/tmp")
       )
       ## ------------------- QGIS: qgisprocess ----------------------
       str <- paste0("{ 'INPUT' : '", input, "', 'INTERSECT' : '", intersect_layer, "', 'OUTPUT' : '", output, "', 'PREDICATE' : [0] }")
-      cmd <- ruut::construct_qgis_output_result_to_beter_format(str = str, algorithm = algorithm)
+      cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
       cat(sprintf("\n%s\n", cmd))
       system(cmd)
     }

+ 1 - 1
R/qgis_algorithm_search_by_word.R

@@ -13,7 +13,7 @@
 #' qgis_algorithm_search_by_word(str = "clip")
 #' algorithm <- "native:clip"
 #' # Read help.
-#' qgisprocess::qgis_show_help(algorithm = algorithm)
+#' ruut::qgis_show_help(algorithm = algorithm)
 #'
 #' qgis_algorithm_search_by_word(str = "centroid")
 #' qgis_algorithm_search_by_word(str = "filedownloader")