Răsfoiți Sursa

QGIS 3.18 uus versioon!!!!!!!
Vana qgis_process ei tööta endist moodi. Muudetud 'construct_qgis_output_result_to_beter_format'.

Ardo Kubjas 5 ani în urmă
părinte
comite
16cb76264f

+ 34 - 37
R/construct_qgis_output_result_to_beter_format.R

@@ -8,8 +8,8 @@
 #' Input parameters:
 #' { 'CREATEINDEX' : True, 'DATABASE' : 'Data', 'DROP_STRING_LENGTH' : False, 'ENCODING' : 'UTF-8', 'FORCE_SINGLEPART' : False, 'GEOMETRY_COLUMN' : 'geom', 'INPUT' : '/data/gpkg/teed/teed_l.gpkg|layername=teed_l', 'LOWERCASE_NAMES' : True, 'OVERWRITE' : True, 'PRIMARY_KEY' : 'fid', 'SCHEMA' : 'data', 'TABLENAME' : 'mikihiir' }
 #' @param str string A QGIS input parameters.
-#' @return A string.
-#' @seealso [qgisprocess::qgis_run_algorithm], [ruut::construct_ogr2ogr_PG_connect_str]
+#' @param algorithm string A QGIS algorithm.
+#' @return A string.[ruut::construct_ogr2ogr_PG_connect_str]
 #' @keywords QGIS
 #' @export
 #' @examples
@@ -17,43 +17,40 @@
 #' \dontrun{
 #'
 #' # QGIS funktsiooni käivitamisel saatakse logisse argumentidest järgmine väljund
-#' str <- "{ 'CREATEINDEX' : True, 'DATABASE' : 'Data', 'DROP_STRING_LENGTH' : False,
-#' 'ENCODING' : 'UTF-8', 'FORCE_SINGLEPART' : False, 'GEOMETRY_COLUMN' : 'geom',
-#' 'INPUT' : '/data/gpkg/teed/teed_l.gpkg|layername=teed_l', 'LOWERCASE_NAMES' : True,
-#' 'OVERWRITE' : True, 'PRIMARY_KEY' : 'fid', 'SCHEMA' : 'data', 'TABLENAME' : 'mikihiir' }"
+#' ## Demo
+#' # Algorithm 'Buffer' starting…
+#' system(sprintf("qgis_process list | grep %s", 'Buffer'))
+#' algorithm <- "native:buffer"
+#'
+#' str <- "{ 'DISSOLVE' : False, 'DISTANCE' : 100, 'END_CAP_STYLE' : 2,
+#' 'INPUT' : '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/matsalu.gpkg|layername=bb',
+#' 'JOIN_STYLE' : 1, 'MITER_LIMIT' : 2,
+#' 'OUTPUT' : 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' password=\'osm\'
+#' sslmode=disable table=\"data\".\"test22\" (geom)', 'SEGMENTS' : 5 }"
+#'
+#' cmd <- ruut::construct_qgis_output_result_to_beter_format(str = str, algorithm = algorithm)
+#' system(cmd)
 #'
-#' construct_qgis_output_result_to_beter_format(str = str)
 #' }
-construct_qgis_output_result_to_beter_format <- function(str = "") {
-  ## Asendame "\'" sümbolitega "$$", et hilem tagasiasendust teha.
-  str <- gsub("=\'([a-zA-Z0-9_/=./]*)\' ", "=@@\\1@@ ", str)
-  str <- gsub("\\\"([a-zA-Z0-9_/=./]*)\\\"", "##\\1##", str)
-  ## Asendame autentimise tunnuse salasõnaga.
-  str <- gsub("(authcfg=[0-9a-zA-Z_/=.]+\\.{0,1}[0-9a-zA-Z_/=.]*)", "password=@@osm@@", str)
-  str <- gsub("'True'", "1", str)
-  str <- gsub("'False'", "0", str)
-  # Numbrite ümbert ülakomade eemaldamine
-  str <- gsub("'([0-9]+\\.{0,1}[0-9]*)'", "\\1", str)
-  str <- gsub("[(]geom[)]", "(geom)", str)
-  str_list <- str
+construct_qgis_output_result_to_beter_format <- function(str = "", algorithm = "xxxxxxxxxx") {
+  # Tühjal stringil vahetame kõrvutiolevad 1-kordsed jutumärgid 2-kordsetega
+  str <- gsub("''", "\"\"", str)
   # Suurte tähtede ümbert ülakomade eemaldamine
-  str <- gsub("'([A-Z_]*)'", "\\1", str)
-  str <- gsub("[{]", "algorithm=algorithm,", str)
+  str <- gsub("'([A-Z_]*)'", "--\\1", str)
+  # Väärtustel vahetame väärtuste välimised 1-kordsed jutumärgid 2-kordsetega
+  str <- gsub(" : '", "=\"", str)
+  str <- gsub("', ", "\" ", str)
+  str <- gsub(" : ", "=", str)
+  ## Asendame autentimise tunnuse salasõnaga.
+  str <- gsub("(authcfg=[0-9a-zA-Z_/=.]+\\.{0,1}[0-9a-zA-Z_/=.]*)", "password='osm'", str)
+  # Loogiliste sulgude eemaldamine
+  str <- gsub("[{]", "qgis_process run algorithm ", str)
   str <- gsub("[}]", "", str)
-  str <- gsub("##", "\"", str, fixed = T)
-  str <- gsub("@@", "\\'", str, fixed = T)
-  str <- gsub(", ", ",\n", str)
-  str <- gsub(":", "=", str)
-  str <- gsub("[[]", "c(", str)
-  str <- gsub("[]]", ")", str)
-
-  # list
-  str_list <- gsub("'", "\"", str_list)
-  str_list <- gsub("@@", "\\", str_list)
-  str_list <- gsub("##", "\\", str_list)
-  str_list <- jsonlite::fromJSON(str_list)
-  # names(str_list)
-
-  cat(sprintf("\n\n%s\n\n\n",str))
-  return(str_list)
+  str <- gsub("\"([ a-zA-Z0-9_ ]*)\"", "\\\\\"\\1\\\\\"", str)
+  # Eemaldame komad
+  str <- gsub(", ", " ", str)
+  # Asendame algoritmi
+  str <- gsub("algorithm", algorithm, str)
+  cat(str)
+  str
 }

+ 3 - 12
R/db_repair_tabel_geometry.R

@@ -26,18 +26,9 @@ db_repair_tabel_geometry <- function(conf = conf) {
     "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
   )
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = "native:fixgeometries",
-    INPUT = sprintf(
-      '%s table=\"%s\".\"%s\" (geom)',
-      postgres, conf$schema, conf$table
-    ),
-    OUTPUT = sprintf(
-      '%s table=\"%s\".\"tmp_%s\" (geom)',
-      postgres, conf$schema, conf$table
-    )
-    # .quiet = TRUE
-  )
+  ## Fix geometries
+  cmd <- sprintf("qgis_process run native:fixgeometries --INPUT='%s table=\"%s\".\"%s\" (geom)' --OUTPUT='%s table=\"%s\".\"tmp_%s\" (geom)'", postgres, conf$schema, conf$table, postgres, conf$schema, conf$table)
+  system(cmd)
   conn <- ruut::db_connect()
   ## Rename
   q <- sprintf("

+ 20 - 10
man/construct_qgis_output_result_to_beter_format.Rd

@@ -4,13 +4,18 @@
 \alias{construct_qgis_output_result_to_beter_format}
 \title{QGIS-i funktsiooni väljundist uue sisendiks vajaliku fraasi konstrueerimine}
 \usage{
-construct_qgis_output_result_to_beter_format(str = "")
+construct_qgis_output_result_to_beter_format(
+  str = "",
+  algorithm = "xxxxxxxxxx"
+)
 }
 \arguments{
 \item{str}{string A QGIS input parameters.}
+
+\item{algorithm}{string A QGIS algorithm.}
 }
 \value{
-A string.
+A string.\link{construct_ogr2ogr_PG_connect_str}
 }
 \description{
 See funktsioon konstrueerib 'QGIS' funktsiooni väljundi logisse tekkiva input parameetrid kujule, mida oleks võimalik kasutada funktsiooni \code{\link[qgisprocess]{qgis_run_algorithm}} argumentidena.
@@ -27,15 +32,20 @@ Input parameters:
 \dontrun{
 
 # QGIS funktsiooni käivitamisel saatakse logisse argumentidest järgmine väljund
-str <- "{ 'CREATEINDEX' : True, 'DATABASE' : 'Data', 'DROP_STRING_LENGTH' : False,
-'ENCODING' : 'UTF-8', 'FORCE_SINGLEPART' : False, 'GEOMETRY_COLUMN' : 'geom',
-'INPUT' : '/data/gpkg/teed/teed_l.gpkg|layername=teed_l', 'LOWERCASE_NAMES' : True,
-'OVERWRITE' : True, 'PRIMARY_KEY' : 'fid', 'SCHEMA' : 'data', 'TABLENAME' : 'mikihiir' }"
+## Demo
+# Algorithm 'Buffer' starting…
+system(sprintf("qgis_process list | grep \%s", 'Buffer'))
+algorithm <- "native:buffer"
+
+str <- "{ 'DISSOLVE' : False, 'DISTANCE' : 100, 'END_CAP_STYLE' : 2,
+'INPUT' : '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/matsalu.gpkg|layername=bb',
+'JOIN_STYLE' : 1, 'MITER_LIMIT' : 2,
+'OUTPUT' : 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' password=\'osm\'
+sslmode=disable table=\"data\".\"test22\" (geom)', 'SEGMENTS' : 5 }"
+
+cmd <- ruut::construct_qgis_output_result_to_beter_format(str = str, algorithm = algorithm)
+system(cmd)
 
-construct_qgis_output_result_to_beter_format(str = str)
-}
 }
-\seealso{
-\link[qgisprocess:qgis_run_algorithm]{qgisprocess::qgis_run_algorithm}, \link{construct_ogr2ogr_PG_connect_str}
 }
 \keyword{QGIS}