minu_teed_riigiteed_ls.R 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #' Riigiteedevõrgu liiklussagedused
  2. #'
  3. #' Riigiteede liiklussagedused. Maanteeameti liiklussageduse kaart \url{https://maanteeamet.maps.arcgis.com/apps/View/index.html?appid=293d200a16454c1c84f2cfe35720149f}, liiklussageduse mõiste \url{https://www.mnt.ee/et/tee/liiklussagedus}. Andmestik teederegistri WFS (Web Feature Service). WFS andmestiku kirjeldus: \url{https://teeregister-api.mnt.ee/teenus/wfs?request=GetCapabilities&service=WFS}.
  4. #'
  5. #' @param conf A list() of configuration variables. Default values \code{\link[ruut]{get_config}}.
  6. #' @return No output.
  7. #' @seealso [ruut::get_config()], [ruut::copy_shp_to_db()], [estmap::minu_teed_riigiteed()], [estmap::minu_teed_muud_teed()], [estmap::minu_teed_eesti()], [estmap::minu_teed_riigiteed_valjapaasud()], [estmap::minu_teed_riigiteed_ls()]
  8. #' @keywords postgis
  9. #' @export
  10. #' @examples
  11. #' \dontrun{
  12. #'
  13. #' conf <- ruut::get_config()
  14. #' minu_teed_riigiteed_ls(conf = conf)
  15. #' }
  16. minu_teed_riigiteed_ls <- function(conf = NULL) {
  17. ## --------------------- muutujad ja teisendused -----------------------------
  18. vars <- ajutised_muutujad(conf = conf)
  19. conf <- vars$conf
  20. # conf$schema <- "minu_teed"
  21. # conf$table <- "zzz"
  22. # output <- ruut::construct_to_gpkg_output_postgres_str(conf = conf, geometry_field = "geom")
  23. # cat(paste(paste0('"', ruut::db_table_colnames(conf = conf)$column_name, '"'), collapse = ","))
  24. ## -------- 1.1 Kontrollime andmebaasis vajalike tabelite olemasolu ----------
  25. conf$schema <- "teeregister_wfs"
  26. tbl_names <- ruut::db_schema_tablenames(conf = conf)
  27. if (!all(c("n_liiklussagedus") %in% tbl_names)) {
  28. cat("\n------------------\nPuuduvad vajalikud andmebaasitabelid.\n")
  29. return(NULL)
  30. }
  31. conf$schema <- "minu_teed"
  32. ## -------------- 1.1 Liilussageduste summeerimine (AKÖL) --------------------
  33. # ruut::qgis_algorithm_search_by_word("calculator")
  34. algorithm <- "native:fieldcalculator"
  35. # ruut::qgis_show_help(algorithm = algorithm)
  36. conf$schema <- "teeregister_wfs"
  37. conf$table <- "n_liiklussagedus"
  38. input <- ruut::construct_to_gpkg_output_postgres_str(
  39. conf = conf, geometry_type = "MultiLineString", srid = 3301,
  40. checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geometry"
  41. )
  42. output <- vars$tmp_gpkg_file_output_1
  43. cmd <- sprintf("qgis_process run %s --FIELD_NAME='akol' --FIELD_TYPE=1 --FIELD_LENGTH=6 --FIELD_PRECISION=0 --GLOBAL=\"\" --FORMULA=' \"sapaarv\" + \"vaabarv\" + \"ararv\" ' --INPUT='%s' --OUTPUT='%s' ", algorithm, input, output)
  44. system(cmd)
  45. cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
  46. ## ------------------- 1.2 Jätame alles vajalikud veerud ---------------------
  47. # ruut::qgis_algorithm_search_by_word("retain")
  48. algorithm <- "native:retainfields"
  49. # ruut::qgis_show_help(algorithm = algorithm)
  50. input <- vars$tmp_gpkg_file_input_1
  51. output <- vars$tmp_gpkg_file_output_2
  52. cmd <- sprintf("qgis_process run %s --FIELDS='sapa' --FIELDS='vaab' --FIELDS='ar' --FIELDS='sapaarv' --FIELDS='vaabarv' --FIELDS='ararv' --FIELDS='akol' --FIELDS='tee_number' --FIELDS='tee_nimi' --INPUT='%s' --OUTPUT='%s' ", algorithm, input, output)
  53. system(cmd)
  54. cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
  55. ## ------------------ 1.3 Copy temp gpkg file to postgis ---------------------
  56. conf$schema <- "minu_teed"
  57. conf$table <- "teedevork_riigiteed_ls"
  58. PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
  59. cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=id -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, vars$tmp_gpkg_file, vars$layer_2, "MULTILINESTRING", conf$schema, conf$table)
  60. system(cmd)
  61. cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
  62. }