#' 100x100 meetrit kaardiruudukeste genereerimine #' #' NB!!!! 100x100 meetrit ruudustike genereerimine võtab aega > 12 tundi. Eesti projektsioonile vastava ning kogu Eestit katva ruutvõrgustiku genereerimine ja salvestamine andmebaasi. Ruutvõrgustiku ruudu suurus 100x100 meetrit. Võrgustik salvestatakse vaikimisi andmebaasi nime 'maaamet.epk02t_grid' alla.Loe: \url{https://geoportaal.maaamet.ee/est/Ruumiandmed/Kaardilehtede-susteemid-p224.html}. Koniguratsiooni muutmiseks muuda konfiguratsiooni. Muutujate vaikeväärtused on sellised, et ei ole vaja midagi muuta. #' @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() #' epk02t_grids(conf = conf) #' } #' epk02t_grids <- 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/%s/epk02t_grid", system.file(package = "estmap"), "maaamet_epk_grids") if (!dir.exists(tmp_dir)) { dir.create(tmp_dir, recursive = T) } conf <- ruut::get_config() conf$table <- "epk02t_grid" conf$schema <- "maaamet" conf$schema <- "gtfs" ## Loe instaleeritud tabelid andmebaasis installed_tables <- ruut::db_schema_tablenames(conf = conf) algorithm <- "grass7:v.mkgrid" if (!conf$table %in% installed_tables) { # 1:40 for (i in 1:40) { coordinates <- sprintf("300000,6%s0000 [EPSG:3301]", (29 + i)) map <- sprintf("%s/%s.gpkg", tmp_dir, i) cat(sprintf("\n%s/40 1. coordinates: %s, 2. map: %s", i, coordinates, map)) # ------------------ result <- qgisprocess::qgis_run_algorithm( algorithm = algorithm, "-h" = 0, "-p" = 0, GRASS_OUTPUT_TYPE_PARAMETER = 3, GRASS_REGION_PARAMETER = "300000,800000,6320000,6700000 [EPSG:3301]", GRASS_VECTOR_DSCO = "", GRASS_VECTOR_EXPORT_NOCAT = 0, GRASS_VECTOR_LCO = "", angle = 0, box = "100,100", breaks = 0, coordinates = coordinates, grid = "100,5000", # "4000,5000" map = map, position = 0, .quiet = TRUE ) # result ## Muudame rea numbreid, kuna tsükliga lähevad need kaduma. layers <- rgdal::ogrListLayers(map) x <- rgdal::readOGR(map, layers[1]) x$row <- x$row + (i - 1) * 100 x$cat <- rev(x$cat + (i - 1) * 100) rgdal::writeOGR(obj = x, dsn = map, layer = layers[1], driver = "GPKG", overwrite_layer = T) ## Lisame kihi andmebaasi cmd <- sprintf( paste0( "ogr2ogr -append --config PG_USE_COPY YES -f PostgreSQL ", "PG:\" dbname='%s' host=%s port=%d user='%s' password='%s' ", "sslmode=%s active_schema=%s \" -lco DIM=2 \"%s\" -nlt GEOMETRY ", "-lco GEOMETRY_NAME=geometry -lco FID=%s -nln %s.%s ", "-s_srs %s -t_srs %s -nlt %s" ), conf$dbname, conf$host, conf$port, conf$user, conf$password, conf$sslmode, conf$schema, map, "id", conf$schema, conf$table, "EPSG:3301", "EPSG:4326", "POLYGON" ) cat(sprintf("\n-----------------\n%s\n", cmd)) system(cmd) cat(sprintf( "Fail fail %s kopeeriti POSTGIS andmebaasi %s.%s\n\n", map, conf$schema, conf$table )) } cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm)) # result } else { cat(sprintf( "\n-----------------\nUue andmebaasi '%s' installimiseks pead vana enne kustutama.\n", conf$table )) } } }