#' Maa-ameti aadressandmed #' #' Source: \url{https://xgis.maaamet.ee/adsavalik/valjav6te/}. Andmed salvestatakse postgisi andmebaasi. Schema = 'maamet'. Koniguratsiooni muutmiseks muuda konfiguratsiooni. Muutujate vaikeväärtused on sellised, et ei ole vaja midagi muuta. Kehtivad ja ootel olekus aadressiobjektid ning nendega seotud aadressid. Kui objektil on enam kui 1 aadress, siis esineb ta väljavõttes enam kui 1 kord. Samuti esinevad aadressid väljavõttes mitu korda, kui nad on seotud mitme objektiga. #' @param conf A list() of configuration variables. Default values \code{\link[ruut]{get_config}}. #' @return No output. #' @seealso [ruut::get_config()], [ruut::copy_shp_to_db()] #' @keywords postgis, maps, ESRI Shpfile, OSM #' @export #' @examples #' ## Not run: #' ## #' ## maaamet_aadressandmed() #' ## #' ## End(**Not run**) maaamet_aadressandmed <- function(conf = NULL) { ans <- utils::askYesNo("Do you want to import maps into database?") if (!ans) { cat("\n------------------------\n") cat("Kaardikihte ei lisatud.") cat("\n------------------------\n") } if (ans) { # Temp directory tmp_dir <- "/tmp/maaamet_aadressandmed" if (!dir.exists(tmp_dir)) { dir.create(tmp_dir) } # Download link url <- "https://xgis.maaamet.ee/adsavalik/valjav6te/" # Estonia shapefile (ZIP archive) map_shapefile <- "aadressandmed.zip" # Download and save # Aadressandmete õige lingi tuvastamine adsavalik <- jsonlite::fromJSON(url) url_download <- sprintf("%s%s",url, adsavalik$fail[which(adsavalik$vvnr==1 & is.na(adsavalik$kov))]) saveTo <- sprintf("%s/%s", tmp_dir, map_shapefile) if (!file.exists(saveTo)) { utils::download.file( url = url_download, destfile = saveTo, method = "curl", extra = "-L" ) } # Unzip utils::unzip(saveTo, overwrite = T, exdir = tmp_dir) # List of files ls <- list.files(path = tmp_dir, pattern = ".dbf") ls_long <- list.files(path = tmp_dir, pattern = ".dbf", full.names = T) tbl_names <- unlist(strsplit(x = ls, split = ".dbf")) # Export to postgis if (is.null(conf)) { conf <- ruut::get_config() conf$schema <- "maaamet" } # New schema ruut::db_create_new_schema(conf = conf) # Multi layer for (i in 1:length(tbl_names)) { print(tbl_names[i]) conf$table <- tbl_names[i] source <- sprintf('"%s" "%s"', tmp_dir, tbl_names[i]) ## Export to postgis database. ruut::copy_shp_to_db( dir = tmp_dir, layer = tbl_names[i], conf = conf, id = "fid", crs_source = "EPSG:3301", crs_target = "EPSG:4326", geometry_type = "POINT" ) cat(sprintf( "\nShp fail %s kopeeriti POSTGIS andmebaasi %s.%s\n\n", ls[i], conf$schema, conf$table )) } # Delete temp directory # system(sprintf("rm -rf %s/*", tmp_dir)) } }