瀏覽代碼

Päeva koopia.

Ardo Kubjas 5 年之前
父節點
當前提交
f1035d25fe
共有 3 個文件被更改,包括 71 次插入10 次删除
  1. 28 7
      00_algandmed.R
  2. 17 0
      00_piirkonna_uute_geomeetriate_loomine.R
  3. 26 3
      01_funktsioonid.R

+ 28 - 7
00_algandmed.R

@@ -1,11 +1,17 @@
 #' Andmebaasi loomine ja ühendamine
 #'
 
+source("functions/delete_existing_variables.R")
+
 library(dplyr)
+library(qgisprocess)
+library(sf)
 
 par(oma = c(0, 0, 0, 0)) # outer margin
 par(mar = c(0, 0, 0, 0) + 0.0)
 
+source("01_funktsioonid.R")
+
 # Uue schema loomine
 conf <- ruut::get_config()
 conf$schema <- "xxx_artikkel_210127"
@@ -18,26 +24,41 @@ objektid <- c("valga", "matsalu", "lahemaa")
 ## Piirkonna 'pk'
 conn <- ruut::db_connect(conf = conf)
 ## Valitud objekti indeks
-i = 3
+i <- 3
 
 ## 1. piirkonna piir
 pk <- pk_piir(obj = objektid[i])
 sf::st_geometry(pk) %>% plot()
 ## 2. piirkonna epk10t ruudud
+epk10t <- pk_piir_bb(obj = objektid[i])
+sf::st_geometry(epk10t) %>% plot(border = 3, lwd = 0.3, col = "#d3fffb")
+sf::st_geometry(pk) %>% plot(add = T)
+# 2.1 kaardiruutude nimekiri
+epk10t_nr <- epk10t$nr
 
+## 2. Kaardiruudustiku epk200t (100x100km) piirikast
+conn <- ruut::db_connect()
+q <- sprintf("SELECT * FROM %s.%s", "maaamet", "epk200t_bb")
+cat(sprintf("\n-----------------\n%s\n\n", q))
+epk200t_bb <- sf::st_read(conn, query = q)
+sf::st_geometry(epk200t_bb) %>% plot()
+## 3. Kaardiruudustiku epk200t (100x100km)
+conn <- ruut::db_connect()
+q <- sprintf("SELECT * FROM %s.%s", "maaamet", "epk200t")
+cat(sprintf("\n-----------------\n%s\n\n", q))
+epk200t <- sf::st_read(conn, query = q)
+sf::st_geometry(epk200t) %>% plot(add = T, border = 3, lwd = 0.3, col = "#d3fffb")
 
 
 
 ## 2. boundarybox
 # ----------------- Piirkonna BB leidmine -----------------
 ## Piirkonna 'pk' Boundary Box.
-result <- ruut::pk_bbox(pk, type = 0)
-pk_bbox <- sf::read_sf(qgis_output(result, "OUTPUT"))
-st_geometry(pk_bbox) %>% plot(border = 2)
-st_geometry(pk) %>% plot(add = T, border = "darkblue", lwd = 0.5, lty = 1.8)
+result <- ruut::pk_bbox(epk10t, type = 0)
+pk_bbox <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
+sf::st_geometry(pk_bbox) %>% plot(border = 2)
+sf::st_geometry(epk10t) %>% plot(add = T, border = "darkblue", lwd = 0.5, lty = 1.8)
 
 # -------------- export bbox to postgis database ---------------
 conf$table <- "bbox"
 ruut::copy_polygon_to_db(x = result, conf = conf, id = "fid")
-
-

+ 17 - 0
00_piirkonna_uute_geomeetriate_loomine.R

@@ -10,3 +10,20 @@ for (i in 1:length(objektid)) {
   conf$table <- sprintf("%s_epk10t", objektid[i])
   ruut::copy_qgis_object_to_db(x = result, conf = conf, geometry_type = "POLYGON")
 }
+
+## 2. Ortofotode allalaadimine
+# kaardiruutude nimekiri
+epk10t <- pk_piir_bb(obj = objektid[i])
+epk10t_nr <- epk10t$nr
+j <- 2
+pattern <- sprintf("%s.tif", epk10t_nr[j])
+# pattern <- "62084.tif"
+ls <- list.files(path = "~/ortofotod/", pattern = pattern)
+if (length(ls) == 0) {
+  estmap::maaamet_ortofotod(epk10t = epk10t_nr[j])
+}
+
+## 3. Kaardiruutude epk200t piirikasti loomine
+create_epk200t_bb()
+
+## 4.

+ 26 - 3
01_funktsioonid.R

@@ -3,7 +3,7 @@
 
 # -----------------------------------------------------------------------
 ## Funktsioon: piirkonna piir
-pk_piir <- function(obj){
+pk_piir <- function(obj) {
   # obj - objekti nimetus (näiteks: valga)
   conn <- ruut::db_connect()
   q <- sprintf("SELECT * FROM %s.%s_piir", conf$schema, tolower(obj))
@@ -25,7 +25,7 @@ create_pk_piir_bb <- function(obj) {
     INPUT = 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"maaamet\".\"epk10t\" (geometry)',
     INTERSECT = sprintf('postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'ogc_fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"xxx_artikkel_210127\".\"%s_piir\" (geometry)', obj),
     OUTPUT = qgisprocess::qgis_tmp_vector(),
-    PREDICATE = 0,
+    PREDICATE = c(0, 1),
     .quiet = TRUE
   )
   result
@@ -33,7 +33,7 @@ create_pk_piir_bb <- function(obj) {
 # create_pk_piir_bb(obj = objektid[i])
 
 ## Funktsioon: piirkonna piiri piirikasti (boundary box) lugemine
-pk_piir_bb <- function(obj){
+pk_piir_bb <- function(obj) {
   # obj - objekti nimetus (näiteks: valga)
   conn <- ruut::db_connect()
   q <- sprintf("SELECT * FROM %s.%s_epk10t", conf$schema, tolower(obj))
@@ -44,3 +44,26 @@ pk_piir_bb <- function(obj){
 
 
 # -----------------------------------------------------------------------
+## Funktsioon: epk200t (100x100km) kaardiruutudele piirikasti (boundary box) loomine
+create_epk200t_bb <- function() {
+  # ruut::qgis_algorithm_search_by_word(str = "bounding")
+  algorithm <- "qgis:minimumboundinggeometry"
+  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+  result <- qgisprocess::qgis_run_algorithm(
+    algorithm = algorithm,
+    FIELD = "",
+    INPUT = 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"maaamet\".\"epk200t\" (geometry)',
+    TYPE = 3,
+    OUTPUT = qgisprocess::qgis_tmp_vector(),
+    .quiet = TRUE
+  )
+  # result
+  epk200t_bb <- sf::read_sf(qgis_output(result, "OUTPUT"))
+  sf::st_geometry(epk200t_bb) %>% plot()
+  conf <- ruut::get_config()
+  conf$table <- "epk200t_bb"
+  conf$schema <- "maaamet"
+  ruut::copy_qgis_object_to_db(x = result, conf = conf, geometry_type = "POLYGON")
+  cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
+  # result
+}