teeregister_wfs_muutmine.R 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #' Teeregistri WFS kihitidest uute andmete moodustamine
  2. #'
  3. #' 1. Põhi-, kõrval ja tugimaanteedest ning rambid moodustatakse uus andmebaas 'riigiteedevork'.
  4. #' Eesti avaandmete \url{https://avaandmed.eesti.ee/datasets?emsId=35} teabevärava kaudu teederegistri WFS (Web Feature Service) andmete eksportimine postgisandmebaasi. WFS andmestiku kirjeldus: \url{https://teeregister-api.mnt.ee/teenus/wfs?request=GetCapabilities&service=WFS}
  5. #'
  6. #' @param conf A list() of configuration variables. Default values \code{\link[ruut]{get_config}}.
  7. #' @return No output.
  8. #' @seealso [ruut::get_config()], [ruut::copy_shp_to_db()], [estmap::teeregister_wfs()]
  9. #' @keywords postgis, maps, WFS, OSM
  10. #' @export
  11. #' @examples
  12. #' \dontrun{
  13. #'
  14. #' conf <- ruut::get_config()
  15. #' teeregister_wfs_muutmine(conf = conf)
  16. #' }
  17. teeregister_wfs_muutmine <- function(conf = NULL) {
  18. ## ------------- muutujad ja teisendused ---------------
  19. if (is.null(conf)) {
  20. conf <- ruut::get_config()
  21. conf$schema <- "teeregister_wfs"
  22. }
  23. # ## Teeregistri avaandmete kihtide lugemine
  24. # wfs_list <- loe_teeregistri_wfs_kihid()
  25. # layer_list <- wfs_list[, "layer"]
  26. # layer_list <- tolower(gsub("ms:", "", layer_list))
  27. ## Loe instaleeritud tabelid andmebaasis
  28. installed_tables <- ruut::db_schema_tablenames(conf = conf)
  29. ## Kontrollime ühendatavate andmebaaside olemasolu.
  30. if (all(c("pohimaantee", "ramp", "tugimaantee", "korvalmaantee") %in% installed_tables)) {
  31. ## 1. --------- Ühendame riigiteed üheks võrgustikuks --------------
  32. # ruut::qgis_algorithm_search_by_word("merge")
  33. algorithm <- "native:mergevectorlayers"
  34. # ruut::qgis_show_help(algorithm = algorithm)
  35. conf$table <- "pohimaantee"
  36. layer_1 <- ruut::construct_to_gpkg_output_postgres_str(
  37. conf = conf, geometry_type = "MultiLineString", srid = 3301,
  38. checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geometry"
  39. )
  40. conf$table <- "ramp"
  41. layer_2 <- ruut::construct_to_gpkg_output_postgres_str(
  42. conf = conf, geometry_type = "MultiLineString", srid = 3301,
  43. checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geometry"
  44. )
  45. conf$table <- "tugimaantee"
  46. layer_3 <- ruut::construct_to_gpkg_output_postgres_str(
  47. conf = conf, geometry_type = "MultiLineString", srid = 3301,
  48. checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geometry"
  49. )
  50. conf$table <- "korvalmaantee"
  51. layer_4 <- ruut::construct_to_gpkg_output_postgres_str(
  52. conf = conf, geometry_type = "MultiLineString", srid = 3301,
  53. checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geometry"
  54. )
  55. conf$table <- "riigiteedevork"
  56. output <- ruut::construct_to_gpkg_output_postgres_str(conf = conf, geometry_field = "geometry", geometry_type = "MultiLineString", srid = 3301, checkPrimaryKeyUnicity = FALSE, key = "fid")
  57. cmd <- sprintf(
  58. "qgis_process run native:mergevectorlayers --CRS='epsg:3301' --LAYERS='%s' --LAYERS='%s' --LAYERS='%s' --LAYERS='%s' --OUTPUT='%s' ",
  59. layer_1, layer_2, layer_3, layer_4, output
  60. )
  61. system(cmd)
  62. cat(sprintf("\n%s\n-------------\n", "Loodi teedev\U00F5rgu andmebaas 'riigiteedevork'."))
  63. }
  64. }