construct_qgis_output_result_to_beter_format.R 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #' QGIS-i funktsiooni väljundist uue sisendiks vajaliku fraasi konstrueerimine
  2. #'
  3. #' 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.
  4. #'
  5. #' Näidis:
  6. #' Processing algorithm…
  7. #' Algorithm 'Export to PostgreSQL' starting…
  8. #' Input parameters:
  9. #' { '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' }
  10. #' @param str string A QGIS input parameters.
  11. #' @param algorithm string A QGIS algorithm.
  12. #' @return A string.[ruut::construct_ogr2ogr_PG_connect_str]
  13. #' @keywords QGIS
  14. #' @export
  15. #' @examples
  16. #'
  17. #' \dontrun{
  18. #'
  19. #' # QGIS funktsiooni käivitamisel saatakse logisse argumentidest järgmine väljund
  20. #' ## Demo
  21. #' # Algorithm 'Buffer' starting…
  22. #' system(sprintf("qgis_process list | grep %s", 'Buffer'))
  23. #' algorithm <- "native:buffer"
  24. #'
  25. #' str <- "{ 'DISSOLVE' : False, 'DISTANCE' : 100, 'END_CAP_STYLE' : 2,
  26. #' 'INPUT' : '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/matsalu.gpkg|layername=bb',
  27. #' 'JOIN_STYLE' : 1, 'MITER_LIMIT' : 2,
  28. #' 'OUTPUT' : 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' password=\'osm\'
  29. #' sslmode=disable table=\"data\".\"test22\" (geom)', 'SEGMENTS' : 5 }"
  30. #'
  31. #' cmd <- ruut::construct_qgis_output_result_to_beter_format(str = str, algorithm = algorithm)
  32. #' system(cmd)
  33. #'
  34. #' }
  35. construct_qgis_output_result_to_beter_format <- function(str = "", algorithm = "xxxxxxxxxx") {
  36. # Tühjal stringil vahetame kõrvutiolevad 1-kordsed jutumärgid 2-kordsetega
  37. str <- gsub("''", "\"\"", str)
  38. # Suurte tähtede ümbert ülakomade eemaldamine
  39. str <- gsub("'([A-Z_]*)'", "--\\1", str)
  40. # Väärtustel vahetame väärtuste välimised 1-kordsed jutumärgid 2-kordsetega
  41. str <- gsub(" : '", "=\"", str)
  42. str <- gsub("', ", "\" ", str)
  43. str <- gsub(" : ", "=", str)
  44. ## Asendame autentimise tunnuse salasõnaga.
  45. str <- gsub("(authcfg=[0-9a-zA-Z_/=.]+\\.{0,1}[0-9a-zA-Z_/=.]*)", "password='osm'", str)
  46. # Loogiliste sulgude eemaldamine
  47. str <- gsub("[{]", "qgis_process run algorithm ", str)
  48. str <- gsub("[}]", "", str)
  49. str <- gsub("\"([ a-zA-Z0-9_ ]*)\"", "\\\\\"\\1\\\\\"", str)
  50. # Eemaldame komad
  51. str <- gsub(", ", " ", str)
  52. # Eemaldame reavahed
  53. str <- gsub("\n", " ", str)
  54. # Asendame algoritmi
  55. str <- gsub("algorithm", algorithm, str)
  56. cat(str)
  57. str
  58. }