maaamet_ortofotod.R 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #' Maa-ameti ortofotod
  2. #'
  3. #' Maa-ameti ortofotode allalaadimine. Andmestruktuur: raster. Mõõtkava 1:10 000 (vaata ruudustiku infot \url{https://geoportaal.maaamet.ee/est/ruumiandmed/kaardilehtede-susteemid-p224.html}). Loe: \url{https://geoportaal.maaamet.ee/est/andmed-ja-kaardid/ortofotod-p99.html}. Andmed salvestatakse kataloogi (default = '~/ortofotod'). Eesti topokaardistuse tarbeks toodetud ortofotodes on piksli suurusega 20-40 cm ja katavad kogu riigi territooriumi. Andmete kasutamisel palume viidata Maa-ametile. Näiteks: 'Ortofoto, Maa-amet 2021'. Käsitsi allalaadimine /url{https://geoportaal.maaamet.ee/index.php?lang_id=1&page_id=610}.
  4. #' @importFrom magrittr %>%
  5. #' @name %>%
  6. #' @param epk10t 5-kohaline number, mis vastab kaardi 1:10 000 ruudu numbrile \url{https://geoportaal.maaamet.ee/est/ruumiandmed/kaardilehtede-susteemid-p224.html}.
  7. #' @param dir GEOTIFF failide salvestamise kataloog.
  8. #' @param conf A list() of configuration variables. Default values \code{\link[ruut]{get_config}}.
  9. #' @return GEOTIFF file.
  10. #' @seealso [ruut::get_config()], [ruut::copy_shp_to_db()]
  11. #' @keywords maa-amet, ortofoto
  12. #' @export
  13. #' @examples
  14. #' ## Not run:
  15. #' ##
  16. #' ## maaamet_ortofotod()
  17. #' ##
  18. #' ## End(**Not run**)
  19. maaamet_ortofotod <- function(epk10t = NULL, dir = "~/ortofotod", conf = NULL) {
  20. # epk10t <- 54711
  21. # epk10t numbri õigsuse kontroll
  22. epk10t_all <- utils::read.csv(file = system.file("csv", "epk10t.csv", package = "estmap"), header = T)[, "nr"]
  23. if (!epk10t %in% epk10t_all) {
  24. cat(sprintf("\n---------------\n\nValitud epk10t ruudu number %s ei ole \u00F5ige.\n", epk10t))
  25. return()
  26. }
  27. # GEOTIFF fotode salvestamise kataloog.
  28. if (!dir.exists(dir)) dir.create(dir, recursive = T)
  29. ## Geotiff failide allalaadimine
  30. # Näidis lehelt mille kaudu saab geotiff faile alla laadida.
  31. url_demo <- paste0(
  32. "https://geoportaal.maaamet.ee/index.php?",
  33. "lang_id=1&plugin_act=otsing&page_id=610&=&",
  34. "kaardiruut=62294&andmetyyp=ortofoto_eesti_rgb&_=1612349208090"
  35. )
  36. url_source <- urltools::url_decode(url_demo)
  37. params <- urltools::param_get(urls = url_source) # get params
  38. parsed_address <- urltools::url_parse(url_source)
  39. # Kui geotiff fail on olemas, siis me seda enam ei alla ei lae.
  40. if (length(list.files(path = dir, pattern = as.character(epk10t))) > 0) {
  41. cat(sprintf("\nFail %s on juba olemas.\n", epk10t))
  42. return()
  43. }
  44. url_new <- urltools::param_set(url_source, key = "kaardiruut", value = epk10t)
  45. ## Allalaadimine
  46. html_file <- readLines(url_new)
  47. page <- xml2::read_html(html_file)
  48. website <- ""
  49. website <- page %>%
  50. rvest::html_nodes("li a") %>%
  51. rvest::html_attr("href")
  52. parsed_address$parameter <- stringr::str_split(website[1], "[?]")[[1]][2]
  53. geotiff_download_url <- urltools::url_compose(parsed_urls = parsed_address)
  54. save_to_file <- sprintf("%s/%s.zip", dir, epk10t)
  55. utils::download.file(url = geotiff_download_url, method = "curl", extra = "-L", destfile = save_to_file)
  56. # zip failide lahtpakkimine
  57. cmd <- sprintf("unzip %s -d %s/; mv %s /tmp", save_to_file, dir, save_to_file)
  58. system(cmd)
  59. cmd <- sprintf("mv %s/*.tab /tmp", dir)
  60. system(cmd)
  61. cmd <- sprintf("mv %s/*.tfw /tmp", dir)
  62. system(cmd)
  63. ls <- list.files(path = dir, pattern = sprintf("%s.tif", epk10t))
  64. if (length(ls) > 0) {
  65. cat(sprintf("\n---------------\n\nValitud epk10t ruudu number %s eba\u00F5nnestus.\n", epk10t))
  66. } else {
  67. cat(sprintf("\n---------------\n\nValitud epk10t ruudu number %s \u00F5nnestus.\n", epk10t))
  68. }
  69. return(geotiff_download_url)
  70. }