teeregister_wfs.R 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #' Teeregistri WFS kihid
  2. #'
  3. #' 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}
  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()]
  8. #' @keywords postgis, maps, WFS, OSM
  9. #' @export
  10. #' @examples
  11. #' \dontrun{
  12. #'
  13. #' conf <- ruut::get_config()
  14. #' teeregister_wfs(conf = conf)
  15. #' }
  16. teeregister_wfs <- function(conf = NULL) {
  17. ans <- utils::askYesNo("Do you want to import maps into database?", default = F)
  18. if (!ans | is.na(ans)) {
  19. cat("\n------------------------\n")
  20. cat("Kaardikihte ei lisatud.")
  21. cat("\n------------------------\n")
  22. return()
  23. }
  24. if (ans) {
  25. # Export to postgis
  26. if (is.null(conf)) {
  27. conf <- ruut::get_config()
  28. conf$schema <- "teeregister_wfs"
  29. }
  30. # New schema
  31. ruut::db_create_new_schema(conf = conf)
  32. ## Teeregistri avaandmete kihtide lugemine
  33. wfs_list <- loe_teeregistri_wfs_kihid()
  34. layer_list <- wfs_list[, "layer"]
  35. ## Loe instaleeritud tabelid andmebaasis
  36. installed_tables <- ruut::db_schema_tablenames(conf = conf)
  37. pg <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
  38. ## WFS andmekogu
  39. wfs <- "\"WFS:https://teeregister-api.mnt.ee/teenus/wfs\""
  40. # Andmete kopeerimine andmebaasi
  41. for (i in 1:length(layer_list)) {
  42. wfs_layer <- layer_list[i]
  43. conf$table <- tolower(gsub("ms:", "", wfs_layer))
  44. if (!conf$table %in% installed_tables) {
  45. cat(sprintf("\n-----------------\nKihi \"%s\" kopeerimine andmebaasi.\n", wfs_layer))
  46. q <- sprintf(
  47. "ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt GEOMETRY -lco GEOMETRY_NAME=geometry -lco FID=id -nln %s.%s -s_srs EPSG:3301 -t_srs EPSG:4326 -a_srs EPSG:4326 -nlt PROMOTE_TO_MULTI ",
  48. pg, wfs, wfs_layer, conf$schema, conf$table
  49. )
  50. cat(sprintf("\n%s\n", q))
  51. system(q)
  52. cat(sprintf("\n%s\n-------------\n", "Kopeerimine l\U00F5petati"))
  53. }
  54. }
  55. }
  56. }