teeregister_wfs.R 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. pg <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
  36. ## WFS andmekogu
  37. wfs <- "\"WFS:https://teeregister-api.mnt.ee/teenus/wfs\""
  38. # Andmete kopeerimine andmebaasi
  39. for (i in 1:length(layer_list)) {
  40. wfs_layer <- layer_list[i]
  41. conf$table <- gsub("ms:", "", wfs_layer)
  42. cat(sprintf("\n-----------------\nKihi \"%s\" kopeerimine andmebaasi.\n", wfs_layer))
  43. q <- sprintf(
  44. "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 ",
  45. pg, wfs, wfs_layer, conf$schema, conf$table
  46. )
  47. cat(sprintf("\n%s\n", q))
  48. system(q)
  49. cat(sprintf("\n%s\n-------------\n", "Kopeerimine l\U00F5petati"))
  50. }
  51. }
  52. }