Sfoglia il codice sorgente

Ajalooliste kaartide allalaadimine.

Ardo Kubjas 3 anni fa
parent
commit
41031c518a
2 ha cambiato i file con 101 aggiunte e 1 eliminazioni
  1. 9 1
      01_ajutine.R
  2. 92 0
      functions/ajalooliste_kaartide_png_allalaadimine.R

+ 9 - 1
01_ajutine.R

@@ -1,6 +1,7 @@
 source("functions/delete_existing_variables.R")
 source("functions/omavalitsused_nimekiri.R")
 source("functions/spatial_indeksite_lisamine.R")
+source("functions/ajalooliste_kaartide_png_allalaadimine.R")
 
 library(dplyr)
 # library(qgisprocess)
@@ -34,11 +35,14 @@ sf::st_crs(x) <- 3301
 x
 # sf::st_geometry(x) %>% graphics::plot()
 
-obj <- paste0("pk_", tolower(strsplit(pk_nimi, split = " ")[[1]][1]))
+obj <-
+  paste0("pk_", tolower(strsplit(pk_nimi, split = " ")[[1]][1]))
 conf$schema <- obj
 # ruut::db_create_new_schema(conf = conf)
 ## --------------------------------------
 
+
+
 ## postgisi loomine
 ruut::pk_sellest_alustame_db_loomist(pk = x, obj = obj)
 ## spatial indeksite lisamine
@@ -82,6 +86,10 @@ ruut::pk_lisame_rahvaarvud(obj = obj)
 # Raster tabelid raster T/F tabeliteks.
 ruut::pk_tif_to_true(obj = obj)
 
+# Ajalooliste kaartide png failide allalaadimine.
+ajalooliste_kaartide_png_allalaadimine(conf = conf)
+
+
 ## GPKG failide nimekiri
 # gpkg_home <- "/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa"
 # dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)

+ 92 - 0
functions/ajalooliste_kaartide_png_allalaadimine.R

@@ -0,0 +1,92 @@
+#' ==========================================================================
+#' Ajalooliste kaartide kihid.
+#' Piirkonna kaartide png failide allalaadimine.
+
+
+#' Piirkona ajalooliste kaartide allalaadimine.
+#' Käsitsi pead vaatama, et maaameti lingis oleks õige "ma ei tea mis number
+#' see on".
+
+
+
+ajalooliste_kaartide_png_allalaadimine <-
+  function(conf = conf, kood_urlis = "id5g") {
+    # kood urlis: https://xgis.maaamet.ee/xgis2/service/xxxxxxx
+    # Pead otsima neid xxxxxx-e.
+    selle_pead_ise_uurima <- kood_urlis
+    # Ajaloliste kaartide kihid
+    layers <- c(
+      "yheverstakaart_alt",
+      "kaheverstakaart_alt",
+      "kolmeverstakaart_alt",
+      "HYBRID",
+      "Halduspiir_raster",
+      "vanaBaaskaart",
+      "ekj_50T",
+      "kk1940",
+      "lehman",
+      "ew_25T",
+      "ew_50T",
+      "ew_200T",
+      "pk_trykk",
+      "heereskarte"
+    )
+    # Ühenduse loomine.
+    conn <- ruut::db_connect()
+    # Piirkonda katvate maaameti ruudustike piirkast.
+    q <-  sprintf("SELECT \"left\", top, \"right\", bottom
+FROM \"%s\".\"a00_bb2\";",
+                  conf$schema)
+    cat(sprintf("\n-----------------\n%s\n\n", q))
+    a00_bb2 <- DBI::dbGetQuery(conn, q)[1, ]
+    # Lühike vallanimi, mida kasutame salvestamise kataloogi nimena.
+    vallanimi_lyhike <-
+      paste0(tolower(strsplit(pk_nimi, split = " ")[[1]][1]))
+    # Piltide salvestamise kataloog. Loome kui ei eksisteeri.
+    piltide_salvestamise_kataloog <-
+      sprintf("tmp/kaardid_png/%s", vallanimi_lyhike)
+    if (!dir.exists(piltide_salvestamise_kataloog)) {
+      dir.create(piltide_salvestamise_kataloog,
+                 showWarnings = F,
+                 recursive = T)
+    }
+    # Failide allalaadimine
+    # ruut::qgis_algorithm_search_by_word("filedownloader")
+    algorithm <- "native:filedownloader"
+    # Kuna alla ei saa laadida üle 3000 px laiuseid png pilte, siis teisendame pildi suurusi.
+    vahendamise_koefitsent <-
+      round(max(round((
+        a00_bb2[1, "right"] - a00_bb2[1, "left"]
+      ), 0), round((
+        a00_bb2[1, "top"] - a00_bb2[1, "bottom"]
+      ), 0)) /
+        3000, 0)
+    png_width <-
+      round((a00_bb2[1, "right"] - a00_bb2[1, "left"]) / vahendamise_koefitsent, 0)
+    png_height <-
+      round((a00_bb2[1, "top"] - a00_bb2[1, "bottom"]) / vahendamise_koefitsent, 0)
+
+    for (i in 1:length(layers)) {
+      url <-
+        sprintf(
+          "https://xgis.maaamet.ee/xgis2/service/%s/ajal?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%%2Fpng&TRANSPARENT=false&LAYERS=%s&SRS=EPSG%%3A3301&STYLES=&WIDTH=%d&HEIGHT=%d&BBOX=%s%%2C%s%%2C%s%%2C%s",
+          selle_pead_ise_uurima,
+          layers[i],
+          png_width,
+          png_height,
+          a00_bb2[1, "left"],
+          a00_bb2[1, "bottom"],
+          a00_bb2[1, "right"],
+          a00_bb2[1, "top"]
+        )
+      output <-
+        sprintf("%s/%s.png", piltide_salvestamise_kataloog, layers[i])
+      str <-
+        sprintf("{ 'URL' : '%s', 'OUTPUT' : '%s' }", url, output)
+      cmd <-
+        ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
+      system(cmd)
+    }
+    DBI::dbDisconnect(conn)
+  }
+# ajalooliste_kaartide_png_allalaadimine(conf = conf)