| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #' Teeregistri teejooned
- #'
- #' Allalaadimise link: \url{https://teeregister.mnt.ee/reet/shpreports?0}. Andmed tuleb alla laadida käsitsi ja paigaldada kataloogi './inst/tmp/teeregister_teed'. Teeregistri sõiduteede ja teeosade andmed on antud SHP-formaadis kaardikihitidena. Avaandmed teede kohta leiab: \url{https://avaandmed.eesti.ee/datasets/teeregister}, kus on link WFS kujul kättesaamiseks \url{https://teeregister-api.mnt.ee/teenus/wfs?request=GetCapabilities&service=WFS}. WMS kaardilingi leiab \url{https://kaart.maaamet.ee/wms/alus-geo?}.
- #' @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
- #' \dontrun{
- #'
- #' conf <- ruut::get_config()
- #' teeregister_teed(conf = conf)
- #' }
- teeregister_teed <- function(conf = NULL) {
- ans <- utils::askYesNo("Do you want to import maps into database?", default = F)
- if (!ans | is.na(ans)) {
- cat("\n------------------------\n")
- cat("Kaardikihte ei lisatud.")
- cat("\n------------------------\n")
- return()
- }
- if (ans) {
- # Temp directory
- tmp_dir <- sprintf("%s/tmp/%s", system.file(package = "estmap"), "teeregister_teed")
- if (!dir.exists(tmp_dir)) {
- dir.create(tmp_dir)
- }
- # Params
- params <- c("muutee_soiduteed", "muutee_teeosad", "riigitee_soiduteed", "riigitee_teeosad")
- # Export to postgis
- if (is.null(conf)) {
- conf <- ruut::get_config()
- conf$schema <- "teeregister"
- }
- # New schema
- ruut::db_create_new_schema(conf = conf)
- for (j in 1:length(params)) {
- # Shapefile (ZIP archive)
- # Download and save
- saveTo <- sprintf("%s/shp_%s.zip", tmp_dir, params[j])
- # 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"))
- # Multi layer
- for (i in 1:length(tbl_names)) {
- print(tbl_names[i])
- table <- gsub("[^[:alnum:]]", "", gsub("[[:digit:]]", "", tbl_names[i]))
- conf$table <- sprintf("tmp_%s", table)
- 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:3301",
- geometry_type = "MULTILINESTRING"
- )
- # ------- multilinestring to linestring -----------
- # ruut::qgis_algorithm_search_by_word(str = "singleparts")
- algorithm <- "native:multiparttosingleparts"
- # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
- # Run algorithm.
- input <- sprintf(
- 'postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' srid=3301 type=MultiLineString checkPrimaryKeyUnicity=\'1\' table=\"%s\".\"%s\" (geom)',
- conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password, conf$schema, conf$table
- )
- conf$table <- table
- output <- sprintf(
- 'postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' table=\"%s\".\"%s\" (geom)',
- conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password, conf$schema, conf$table
- )
- result <- qgisprocess::qgis_run_algorithm(
- algorithm = algorithm,
- INPUT = input,
- OUTPUT = output,
- .quiet = TRUE
- )
- # ------------ drop temp table ---------
- # Connect to db
- conn <- ruut::db_connect()
- q <- sprintf("DROP TABLE IF EXISTS %s.tmp_%s CASCADE;", conf$schema, table)
- cat("\n-----------------\n")
- cat(q)
- DBI::dbExecute(conn, q)
- cat(sprintf(
- "\nShp fail %s kopeeriti POSTGIS andmebaasi %s.%s\n\n",
- ls[i], conf$schema, conf$table
- ))
- }
- # Delete unnecessary files.
- system(sprintf("find %s -type f -not -name '*.zip' -print0 | xargs -0 rm --", tmp_dir))
- }
- }
- }
|