Kaynağa Gözat

Initial commit.

Ardo Kubjas 5 yıl önce
işleme
a38e2d7b7a
5 değiştirilmiş dosya ile 113 ekleme ve 0 silme
  1. 4 0
      .gitignore
  2. 43 0
      00_algandmed.R
  3. 12 0
      00_piirkonna_uute_geomeetriate_loomine.R
  4. 46 0
      01_funktsioonid.R
  5. 8 0
      LOEMIND.txt

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+.Rproj.user
+.Rhistory
+.RData
+.Ruserdata

+ 43 - 0
00_algandmed.R

@@ -0,0 +1,43 @@
+#' Andmebaasi loomine ja ühendamine
+#'
+
+library(dplyr)
+
+par(oma = c(0, 0, 0, 0)) # outer margin
+par(mar = c(0, 0, 0, 0) + 0.0)
+
+# Uue schema loomine
+conf <- ruut::get_config()
+conf$schema <- "xxx_artikkel_210127"
+ruut::db_create_new_schema(conf = conf)
+# Objektide nimekiri
+objektid <- c("valga", "matsalu", "lahemaa")
+# Objektide piirjooned
+
+# ----------------- Valitud piirkond -----------------
+## Piirkonna 'pk'
+conn <- ruut::db_connect(conf = conf)
+## Valitud objekti indeks
+i = 3
+
+## 1. piirkonna piir
+pk <- pk_piir(obj = objektid[i])
+sf::st_geometry(pk) %>% plot()
+## 2. piirkonna epk10t ruudud
+
+
+
+
+## 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)
+
+# -------------- export bbox to postgis database ---------------
+conf$table <- "bbox"
+ruut::copy_polygon_to_db(x = result, conf = conf, id = "fid")
+
+

+ 12 - 0
00_piirkonna_uute_geomeetriate_loomine.R

@@ -0,0 +1,12 @@
+#' Uute geomeetriliste joonte genereerimine ja salvestamine andmebaasi.
+#'
+
+## 1. Piirkonda katvate epk10t ruudud
+for (i in 1:length(objektid)) {
+  cat(sprintf("\n-----------------\n%s\n\n", objektid[i]))
+  result <- create_pk_piir_bb(obj = objektid[i])
+  epk10t <- sf::read_sf(qgis_output(result, "OUTPUT"))
+  sf::st_geometry(epk10t) %>% plot()
+  conf$table <- sprintf("%s_epk10t", objektid[i])
+  ruut::copy_qgis_object_to_db(x = result, conf = conf, geometry_type = "POLYGON")
+}

+ 46 - 0
01_funktsioonid.R

@@ -0,0 +1,46 @@
+#' Funktsioonid
+#'
+
+# -----------------------------------------------------------------------
+## Funktsioon: piirkonna piir
+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))
+  cat(sprintf("\n-----------------\n%s\n\n", q))
+  sf::st_read(conn, query = q)
+}
+# pk_piir(obj = "valga")
+
+
+# -----------------------------------------------------------------------
+## Funktsioon: piirkonna piiri piirikasti (boundary box) loomine
+create_pk_piir_bb <- function(obj) {
+  # obj - objekti nimetus (näiteks: valga)
+  # ruut::qgis_algorithm_search_by_word(str = "extract")
+  algorithm <- "native:extractbylocation"
+  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+  result <- qgisprocess::qgis_run_algorithm(
+    algorithm = algorithm,
+    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,
+    .quiet = TRUE
+  )
+  result
+}
+# create_pk_piir_bb(obj = objektid[i])
+
+## Funktsioon: piirkonna piiri piirikasti (boundary box) lugemine
+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))
+  cat(sprintf("\n-----------------\n%s\n\n", q))
+  sf::st_read(conn, query = q)
+}
+# pk_piir_bb(obj = "valga")
+
+
+# -----------------------------------------------------------------------

+ 8 - 0
LOEMIND.txt

@@ -0,0 +1,8 @@
+
+Objektide konstrueerimise järjekord.
+
+- piirkonna piir
+- epk10t ruudud
+
+
+