#' QGIS-i funktsiooni väljundist uue sisendiks vajaliku fraasi konstrueerimine #' #' 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. #' #' Näidis: #' Processing algorithm… #' Algorithm 'Export to PostgreSQL' starting… #' 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. #' @param algorithm string A QGIS algorithm. #' @return A string.[ruut::construct_ogr2ogr_PG_connect_str] #' @keywords QGIS #' @export #' @examples #' #' \dontrun{ #' #' # QGIS funktsiooni käivitamisel saatakse logisse argumentidest järgmine väljund #' ## 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_better_format(str = str, algorithm = algorithm) #' system(cmd) #' #' } 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 str <- gsub("''", "\"\"", str) # Suurte tähtede ümbert ülakomade eemaldamine 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("\"([ a-zA-Z0-9_ ]*)\"", "\\\\\"\\1\\\\\"", str) # Eemaldame komad str <- gsub(", ", " ", str) # Asendame algoritmi str <- gsub("algorithm", algorithm, str) # Nurksulgude asendamine str <- gsub("[[]", "", str) str <- gsub("[]]", "", str) # Asendame ="[]' str <- gsub("=\"([ a-zA-Z0-9_ ]*)'", "='\\1'", str) # Muutuja väärtuste ümbert 2-kordsed ülakomad asendada 1-kordsete ülakomadega str <- gsub("=\\\\\"([a-zA-Z0-9_]*)\\\\\"", "='\\1'", str) cat(str) str }