Pārlūkot izejas kodu

Vanade failide kustutamine.

Ardo Kubjas 5 gadi atpakaļ
vecāks
revīzija
db6f904e9c

+ 18 - 12
00_algandmed.R

@@ -2,7 +2,7 @@
 #'
 system("ogr2ogr --long-usage")
 
-str <- "{ 'INPUT' : 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'id\' srid=3301 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"maaamet\".\"epk2t_grid\" (geom)', 'INTERSECT' : '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/marja.gpkg|layername=piir', 'OUTPUT' : 'TEMPORARY_OUTPUT', 'PREDICATE' : [5] }"
+str <- " { 'FIELD' : 'code', 'INPUT' : '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/mikihiir.gpkg|layername=piir_landuse_a', 'OPERATOR' : 0, 'OUTPUT' : 'ogr:dbname=\'/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/mikihiir.gpkg\' table=\"piir_landuse_a_residential\" (geom)', 'VALUE' : '7203' }"
 ruut::construct_qgis_output_result_to_beter_format(str = str)
 
 source("functions/delete_existing_variables.R")
@@ -33,14 +33,18 @@ sf::st_geometry(x) %>% graphics::plot()
 gpkg_home <- "/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa"
 obj <- "mikihiir"
 dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
-## GPKG loomine
-ruut::gpkg_sellest_alustame_gpkg_loomist(pk = x, obj = obj, gpkg_home = gpkg_home)
-# Layers list
-sf::st_layers(dsn = dsn)
-## GPKG ruudustike lisamine
-ruut::gpkg_piirkonnale_ruudustike_lisamine(obj = obj, gpkg_home = gpkg_home)
-## GPKG polügoonide lisamine
-ruut::gpkg_piirkonnale_polygoonide_lisamine(obj = obj, gpkg_home = gpkg_home)
+# ## GPKG loomine
+# ruut::gpkg_sellest_alustame_gpkg_loomist(pk = x, obj = obj, gpkg_home = gpkg_home)
+# # Layers list
+# sf::st_layers(dsn = dsn)
+# ## GPKG ruudustike lisamine
+# ruut::gpkg_piirkonnale_ruudustike_lisamine(obj = obj, gpkg_home = gpkg_home)
+# ## GPKG polügoonide lisamine
+# ruut::gpkg_piirkonnale_polygoonide_lisamine(obj = obj, gpkg_home = gpkg_home)
+# ## GPKG joonte lisamine
+# ruut::gpkg_piirkonnale_joonte_lisamine(obj = obj, gpkg_home = gpkg_home)
+## GPKG punktide lisamine
+ruut::gpkg_piirkonnale_punktide_lisamine(obj = obj, gpkg_home = gpkg_home)
 
 
 ## Loeme andmebaasist piiri ja piirikasti.
@@ -66,11 +70,13 @@ sf::st_geometry(piir) %>% graphics::plot(add = T, border = 3, lwd = 0.3, col = "
 sf::st_geometry(bb_epk02t_grid) %>% graphics::plot(add = T, border = 3, lwd = 0.3)
 sf::st_geometry(piir_shp_katastriyksus) %>% graphics::plot(add = T, border = 2, lwd = 0.3)
 
+# Layers list
+sf::st_layers(dsn = dsn)
 
 
-
-
-
+y <- unique(as.data.frame(sf::read_sf(dsn = dsn, layer = 'piir_aadressandmed', as_tibble = T))[,c('adob_liik'), drop = F])
+nrow(y)
+y$adob_liik
 
 ##------------------ testi lõpp -------------------
 

+ 0 - 35
00_piirkonna_uute_geomeetriate_loomine.R

@@ -3,25 +3,6 @@
 
 source("01_funktsioonid.R")
 
-## 1. Piirkonda katvate epk10t ruudud
-for (i in 1:length(objektid)) {
-  cat(sprintf("\n-----------------\n%s\n\n", objektid[i]))
-  result <- create_pk_epk10t(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")
-}
-## 1. Piirkonda katvate epk2t ruudud
-for (i in 1:length(objektid)) {
-  cat(sprintf("\n-----------------\n%s\n\n", objektid[i]))
-  result <- create_pk_epk2t(obj = objektid[i])
-  epk2t <- sf::read_sf(qgis_output(result, "OUTPUT"))
-  # sf::st_geometry(epk2t) %>% plot()
-  conf$table <- sprintf("%s_epk2t", objektid[i])
-  ruut::copy_qgis_object_to_db(x = result, conf = conf, geometry_type = "POLYGON")
-}
-
 ## 2. Ortofotode allalaadimine
 # kaardiruutude nimekiri
 epk10t <- pk_epk10t(obj = objektid[i])
@@ -34,21 +15,5 @@ if (length(ls) == 0) {
   estmap::maaamet_ortofotod(epk10t = epk10t_nr[j])
 }
 
-## 3. Kaardiruutude epk200t piirikasti loomine
-create_epk200t_bb()
-
-## 4. Kogu Eestit katva võrgustike (grid) loomine
-create_epk200t_grid() # 100x100 km
-create_epk10t_grid() # 5x5 km
-create_epk2t_grid() # 1x1 km
-# create_epk02t_grid() # 100x100 m
-
-## 5. Piirkonna piirikastide + vastavate ruudustike loomine
-for (i in 1:length(objektid)) {
-  cat(sprintf("\n-----------------\n%s\n\n", objektid[i]))
-  create_boundarybox_3301_to_pk(obj = objektid[i])
-  create_epk10t_grid_to_pk_bb(obj = objektid[i])
-  create_epk2t_grid_to_pk_bb(obj = objektid[i])
-}
 
 ## 6. Piirkonna piirikastide maatriksite loomine

+ 0 - 26
01_funktsioonid.R

@@ -1,26 +0,0 @@
-#'
-#' Funktsioonid
-#'
-
-source("geomeetria_teisendused/pk_piir.R")
-source("geomeetria_teisendused/create_boundarybox_3301_to_pk.R")
-
-
-source("geomeetria_teisendused/create_epk10t_grid_to_pk_bb.R")
-source("geomeetria_teisendused/create_epk2t_grid_to_pk_bb.R")
-source("geomeetria_teisendused/create_pk_epk10t.R")
-source("geomeetria_teisendused/create_pk_epk2t.R")
-source("geomeetria_teisendused/pk_epk10t.R")
-source("geomeetria_teisendused/pk_epk2t.R")
-source("geomeetria_teisendused/pk_epk10t_grid.R")
-source("geomeetria_teisendused/pk_epk2t_grid.R")
-source("geomeetria_teisendused/pk_epk10t_ruutude_nimekiri.R")
-
-
-
-source("geomeetria_teisendused/create_epk200t_bb.R")
-source("geomeetria_teisendused/create_epk10t_grid.R")
-source("geomeetria_teisendused/create_epk2t_grid.R")
-source("geomeetria_teisendused/create_epk02t_grid.R")
-
-

+ 13 - 0
functions/connect_db_data.R

@@ -0,0 +1,13 @@
+#'
+#' Connect to postgis database.
+#'
+config <- ruut::get_config()
+try(conn <- DBI::dbConnect(PostgreSQL(),
+  dbname = "data", host = "localhost",
+  user = "osm", password = "osm", port = 6432
+))
+## Andmebaasiga ühenduse kontroll
+if (exists("conn") && !inherits(conn, "try-error")) {
+  print("Connection exist")
+}
+# dbDisconnect(conn)

+ 43 - 0
functions/connect_selenium.R

@@ -0,0 +1,43 @@
+#'
+#' Selenium serveriga ühenduse loomine
+#' 
+
+#' Juhend Seleniumi serveri kohta:
+#' https://robotninja.com/blog/introduction-using-selenium-docker-containers-end-end-testing/
+#' docker run -d -p 4444:4444 --name selenium selenium/standalone-firefox:3.4.0
+#' http://localhost:4444/wd/hub
+
+library("rvest")
+library("seleniumPipes")
+
+## Kontrolli docker ps -a , et selenium server töötaks.
+# remDr <- remoteDr(port = 4444L, newSession = TRUE)
+
+# Get the page source
+remDr <- remoteDr(
+  remoteServerAddr = "http://localhost", port = 4444L,
+  browserName = "firefox", version = "", platform = "ANY",
+  javascript = TRUE, nativeEvents = TRUE, extraCapabilities = list(),
+  path = "wd/hub", newSession = TRUE
+)
+print(remDr)
+
+# getAllCookies(remDr = remDr)
+# getCurrentUrl(remDr)
+# deleteAllCookies(remDr)
+# deleteCookie(remDr)
+# deleteSession(remDr)
+
+# url <- "http://www.neti.ee"
+# page <- remDr %>% go(url = url) %>%
+#   getPageSource()
+# page$node
+# page %>% 
+#   rvest::html_nodes(".avaleht h2 a") %>%
+#   rvest::html_attr("href")
+# remDr %>% getNamedCookie()
+# remDr %>% getCurrentUrl
+# remDr %>% findElement("css", "h2") %>% getElementText
+# remDr %>% takeScreenshot
+# remDr %>% getTitle()
+# remDr %>% deleteSession

+ 3 - 0
functions/delete_existing_variables.R

@@ -0,0 +1,3 @@
+# Delete existing variables
+rm(list = ls())
+while (!is.null(dev.list())) dev.off()

+ 15 - 0
functions/load_packages.R

@@ -0,0 +1,15 @@
+#'
+#' Load packages
+#'
+
+# Options
+options(stringsAsFactors = FALSE)
+
+
+# Load r-packages
+suppressPackageStartupMessages(library(dplyr))
+pkgs <- c(
+  "qgisprocess", "DBI", "pool", "RPostgreSQL", "sf",
+  "raster", "stars", "rgdal", "raster", "tidyverse", "inborutils"
+)
+lapply(pkgs, library, character.only = T)

+ 21 - 0
functions/qgis_algorithm_search_by_word.R

@@ -0,0 +1,21 @@
+#'
+#' Funktsioon qgis'i algoritmi leidmiseks fraasi järele.
+#'
+qgis_algorithm_search_by_word <- function(str = NULL) {
+  if (is.null(str)) {
+    return(NULL)
+  }
+  # str = "filedownloader"
+  ## QGIi algoritmide nimekiri. Jätame 6 esimest päiserida ja viimase rea välja.
+  algs <- qgis_algorithms(query = FALSE, quiet = TRUE)
+  # Algoritmi otsimine fraasi järele ja vastava indeksi leidmine
+  ids <- grep(str, algs$algorithm)
+  # leitid algoritmid
+  algs.id <- cbind2(ids, algs[ids, ])
+  colnames(algs.id) <- c("id", colnames(algs))
+  algs.id
+}
+# qgis_algorithm_search_by_word(str="centroid")
+# qgis_algorithm_search_by_word(str="filedownloader")
+# qgis_algorithm_search_by_word(str="")
+# qgis_algorithm_search_by_word()

+ 16 - 0
functions/qgis_my_configure.R

@@ -0,0 +1,16 @@
+#'
+#' Start using QGIS.
+#'
+
+## Kontrollime konfigureerimist. Lisame süsteemimuutujad.
+qgis_my_configure <- function() {
+  qgisprocess_path <- "/usr/bin/qgis_process"
+  Sys.setenv(R_QGISPROCESS_PATH = qgisprocess_path)
+  options(qgisprocess.path = qgisprocess_path)
+  qgis_configure()
+}
+# Run
+qgis_my_configure()
+# # Test
+# getOption("qgisprocess.path")
+# Sys.getenv("R_QGISPROCESS_PATH")

+ 0 - 10
geomeetria_teisendused/pk_epk10t.R

@@ -1,10 +0,0 @@
-#' Funktsioon: piirkonna piiri katvate epk10t (5x5km) ruutude lugemine
-
-pk_epk10t <- 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_epk10t(obj = "valga")

+ 0 - 10
geomeetria_teisendused/pk_epk10t_grid.R

@@ -1,10 +0,0 @@
-#' Funktsioon: piirkonna piiri katvate epk10t (5x5km) ruutude lugemine
-
-pk_epk10t_grid <- function(obj) {
-  # obj - objekti nimetus (näiteks: valga)
-  conn <- ruut::db_connect()
-  q <- sprintf("SELECT * FROM %s.%s_epk10t_grid", conf$schema, tolower(obj))
-  cat(sprintf("\n-----------------\n%s\n\n", q))
-  sf::st_read(conn, query = q)
-}
-# pk_epk10t_grid(obj = "valga")

+ 0 - 37
geomeetria_teisendused/pk_epk10t_ruutude_nimekiri.R

@@ -1,37 +0,0 @@
-#' Funktsioon: epk10t kaardiruutude nimekiri
-#' Vajalik ortofotode allalaadimiseks. Nimekiri käib piirkonna
-#' EPSG:3301 piirikasti kohta
-
-pk_epk10t_ruutude_nimekiri <- function(obj) {
-  # obj - objekti nimetus (näiteks: valga)
-  conn <- ruut::db_connect()
-  q <- sprintf("SELECT * FROM %s.%s_bb", conf$schema, tolower(obj))
-  cat(sprintf("\n-----------------\n%s\n\n", q))
-  sp <- sf::st_read(conn, query = q)
-
-  ## epk10t ruutvõrgustiku lugemine
-  # ruut::qgis_algorithm_search_by_word(str = "joinattributesbylocation")
-  algorithm <- "native:joinattributesbylocation"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = algorithm,
-    DISCARD_NONMATCHING = 1,
-    INPUT = 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable password=\'osm\' key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"(SELECT * FROM maaamet.epk10t )\" (geometry)',
-    JOIN = sprintf('postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable password=\'osm\' key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"(SELECT * FROM xxx_artikkel_210127.%s_bb )\" (geometry)', obj),
-    JOIN_FIELDS = c("id"),
-    METHOD = 0,
-    PREDICATE = c(0, 1),
-    PREFIX = "",
-    OUTPUT = qgisprocess::qgis_tmp_vector(),
-    NON_MATCHING = qgisprocess::qgis_tmp_vector(),
-    .quiet = TRUE
-  )
-  result
-  ## !!!!!!!! NB !!!!!!!!
-  ## Siin on 2 objekti väljundiks 'OUTPUT' ja 'NON_MATCHING'. Peame valima
-  ## ainult ühe ja teisendama.
-  pk_grid <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
-  sf::st_geometry(pk_grid) %>% plot()
-  pk_grid$nr
-}
-# pk_epk10t_ruutude_nimekiri(obj = "valga")

+ 0 - 10
geomeetria_teisendused/pk_epk2t.R

@@ -1,10 +0,0 @@
-#' Funktsioon: piirkonna piiri katvate epk2t (1x1km) ruutude lugemine
-
-pk_epk2t <- function(obj) {
-  # obj - objekti nimetus (näiteks: valga)
-  conn <- ruut::db_connect()
-  q <- sprintf("SELECT * FROM %s.%s_epk2t", conf$schema, tolower(obj))
-  cat(sprintf("\n-----------------\n%s\n\n", q))
-  sf::st_read(conn, query = q)
-}
-# pk_epk2t(obj = "valga")

+ 0 - 10
geomeetria_teisendused/pk_epk2t_grid.R

@@ -1,10 +0,0 @@
-#' Funktsioon: piirkonna piiri katvate epk2t (1x1km) ruutude lugemine
-
-pk_epk2t_grid <- function(obj) {
-  # obj - objekti nimetus (näiteks: valga)
-  conn <- ruut::db_connect()
-  q <- sprintf("SELECT * FROM %s.%s_epk2t_grid", conf$schema, tolower(obj))
-  cat(sprintf("\n-----------------\n%s\n\n", q))
-  sf::st_read(conn, query = q)
-}
-# pk_epk2t_grid(obj = "valga")

+ 0 - 103
gpkg/000_sellest_alustame_gpkg_loomist.R

@@ -1,103 +0,0 @@
-#' Uue GPKG  loomine
-#'
-#' Funktsioon loob geopaketi GPKG faili. Tegemist on sqlite andmebaasiga. Samas lisatakse faili piir ja piiri piirkast. Ülejäänud funktsioonid kasutavad selle funktsiooni poolt loodud objekti nime ja piiri ega piirikasti pole vaja enam teiste funktsioonide rakendamisel lisada.
-#'
-#' @param pk Piirkonna geomeetriline joon.
-#' @param obj str Objekti nimi. Edaspidi on oluline ainult see nimi. Piirkonna geomeetrilist joont ei ole vaja lisada.
-#' @param gpkg_home path Salvestatavate GPKG faili asukoht.
-#' @return GPKG andmebaasi loomine koos kihtidega 'piir' ja 'bb' (boundary box, piirikast).
-#' @seealso [sf::st_read()], [sf::write_sf()],[sf::st_transform()]
-#' @keywords GPKG, boundary box, EPSG:3301
-#' @export
-#' @examples
-#' \dontrun{
-#'
-#' # read geojson from string:
-#' geojson_txt <- paste('{"type":"MultiPoint","coordinates":[[658300,6474800],[658300,6475000],[658400,6475100],[658600,6475000],[658600,6474800],[658300,6474800]]}')
-#' x <- sf::read_sf(geojson_txt) %>% sf::st_cast("POLYGON")
-#' sf::st_crs(x) <- 3301
-#' x
-#' sf::st_geometry(x) %>% plot()
-#'
-#' gpkg_home <- "/tmp"
-#' obj <- "marja"
-#'
-#' sp <- sellest_alustame_gpkg_loomist(pk = x, obj = obj, gpkg_home = gpkg_home)
-#' sf::st_geometry(sp) %>% plot()
-#'
-#' # Layers list.
-#' dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
-#' sf::st_layers(dsn = dsn)
-#' }
-sellest_alustame_gpkg_loomist <- function(pk = NULL, obj = NULL, gpkg_home = "/tmp") {
-  ## ------------------ test -----------------
-  geojson_txt <- paste('{"type":"MultiPoint","coordinates":[[658300,6474800],[658300,6475000],[658400,6475100],[658600,6475000],[658600,6474800],[658300,6474800]]}')
-  x <- sf::read_sf(geojson_txt) %>% sf::st_cast("POLYGON")
-  sf::st_crs(x) <- 3301
-  sf::st_geometry(x) %>% plot()
-  gpkg_home <- "/home/ardo/aaa/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa"
-  obj <- "marja"
-  pk <- x
-  ## Konfiguratsiooni muutujale väärtuste omistamine
-  conf <- ruut::get_config()
-  conf$gpkg_home <- gpkg_home
-  conf$gpkg_file <- obj
-
-  ## ----------- argumentide vastavuse kontroll -----------
-  if (is.null(pk) || !sf::st_is_valid(pk)) {
-    cat("\nPalun kontrolli geomeetrilise kujundi õigsust.\n")
-    return(NULL)
-  }
-  if (is.null(obj)) {
-    cat("\nPalun sisesta objekti nimi.\n")
-    return(NULL)
-  }
-  if (!dir.exists(gpkg_home)) {
-    dir.create(gpkg_home)
-    cat(sprintf("\nLoodi kataloog %s.\n", gpkg_home))
-  }
-  ## ------------- muutujad ja teisendused ---------------
-  obj <- gsub(" ", "_", tolower(obj))
-  dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
-  input_layer_name <- "piir"
-  input_layer <- sprintf("%s|layername=%s", dsn, input_layer_name)
-  tmp_gpkg_file <- tempfile(fileext = ".gpkg")
-
-  ## ------------------- programmi osa -----------------
-  ## 1. Piirjoone salvestamine
-  pk <- sf::st_transform(pk, 3301)
-  # write to gpkg
-  pk <- sf::st_collection_extract(pk, "POLYGON", warn =FALSE)
-  sf::write_sf(pk, dsn = dsn,layer = "piir", driver = "gpkg",fid_column_name = "id", delete_dsn = T) # append = FALSE, delete_layer = T
-  ## 2. Piirikasti salvestamine
-  ## konstrueerime EXTENT, HSPACING ja VSPACING väärtused piirikasti konstrueerimiseks.
-  pk_attributes <- attributes(pk$geometry)
-  extent <- sprintf("%s,%s,%s,%s [EPSG:3301]", round((pk_attributes$bbox["xmin"] / 100), digits = 0) * 100, ceiling((pk_attributes$bbox["xmax"] / 100)) * 100, round((pk_attributes$bbox["ymin"] / 100), digits = 0) * 100, ceiling((pk_attributes$bbox["ymax"] / 100)) * 100)
-  hspacing <- (ceiling((pk_attributes$bbox["xmax"] / 100)) * 100) - (round((pk_attributes$bbox["xmin"] / 100), digits = 0) * 100)
-  vspacing <- (ceiling((pk_attributes$bbox["ymax"] / 100)) * 100) - (round((pk_attributes$bbox["ymin"] / 100), digits = 0) * 100)
-  conf$gpkg_table <- 'bb'
-  output <- ruut::construct_to_gpkg_output_file_str(conf = conf)
-  # ruut::qgis_algorithm_search_by_word(str = "grid")
-  algorithm <- "native:creategrid"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = algorithm,
-    CRS = "EPSG:3301",
-    EXTENT = extent,
-    HOVERLAY = 0,
-    HSPACING = hspacing,
-    TYPE = 2,
-    VOVERLAY = 0,
-    VSPACING = vspacing,
-    # OUTPUT = qgisprocess::qgis_tmp_file(ext = ".gpkg")
-    OUTPUT = output
-    # .quiet = TRUE
-  )
-  result
-  bb <- sf::read_sf(dsn = dsn, layer = conf$table)
-  # Test plot.
-  sf::st_geometry(bb) %>% plot(border = 3, lwd = 0.3, col = "#d3fffb")
-  sf::st_geometry(x) %>% plot(add = T, border = 3, lwd = 0.3, col = "#a3fffb")
-  # Layers list
-  sf::st_layers(dsn = dsn)
-}

+ 0 - 137
gpkg/01_piirkonnale_ruudustike_lisamine.R

@@ -1,137 +0,0 @@
-#' Piirkonna ruudustike leidmine
-#'
-#' Etteantud piirkonna geomeetrilise piirjoone ('piir') järele leitakse selle piirkonna EPSG:3301 projektsioonile vastav piirikast ('boundarybox_3301'). Piirikasti järele leitakse selle kastiga kaetud 5x5 km ('epk10t_grid'), 1x1 km ('epk2t_grid') ja 100x100 meetrit ('epk02t_grid') ruudustikud. Samuti leitakse piirkonna piiri sees olevad ja statistilist ning muud infot sisaldavad 5x5 km ('epk10t') ja 1x1 km ('epk2t') sisaldavad ruudu. Andmed salvestatakse GPKG faili kihtidena. Faili nimeks on objekti nimi.
-#'
-#' @param obj str Objekti nimi.
-#' @param pk Piirkonna geomeetriline joon.
-#' @param gpkg_home path Salvestatavate GPKG faili asukoht.
-#' @param obj_only TRUE/FALSE Kas geomeetriad leitakse ainult objekti või kogu piirikastiga määratud ala jaoks.
-#'
-#'
-piirkonnale_ruudustike_lisamine <- function(obj = NULL, pk = NULL, gpkg_home = "/tmp", obj_only = TRUE) {
-  if (is.null(pk) || !sf::st_is_valid(pk)) {
-    cat("\nPalun kontrolli geomeetrilise kujundi õigsust.\n")
-    return()
-  }
-  if (is.null(obj)) {
-    cat("\nPuudu on objekti nimi.\n")
-    return()
-  }
-  cat(sprintf("\nAlgparameetrid: objekti nimi %s ja GPKG faili kataloog %s\n", obj, gpkg_home))
-  postgres <- sprintf(
-    "postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\'",
-    conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password
-  )
-  dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
-  input_layer_name <- "piir"
-  input_layer <- sprintf("%s|layername=%s", dsn, input_layer_name)
-  output_layer_name <- "boundarybox_3301"
-  tmp_gpkg_file <- tempfile(fileext = ".gpkg")
-  # write to gpkg
-  sf::write_sf(pk,
-    dsn = dsn,
-    layer = "piir", driver = "gpkg", append = FALSE
-  )
-
-  ## ------------ 2. piirkonna 3301 projektsiooniga piirikast --------------
-  ## 2.1  Esmalt leiame milliset 500x500 meetri ruutudega on objekt kaetud.
-  # ruut::qgis_algorithm_search_by_word(str = "grid")
-  algorithm <- "native:creategrid"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = algorithm,
-    CRS = "EPSG:3301",
-    # EXTENT = '25.454305528,26.259893095,59.454118579,59.714621582 [EPSG:4326]',
-    EXTENT = input_layer,
-    HOVERLAY = 0,
-    HSPACING = 500,
-    TYPE = 2,
-    VOVERLAY = 0,
-    VSPACING = 500,
-    OUTPUT = qgisprocess::qgis_tmp_file(ext = ".gpkg")
-    # .quiet = TRUE
-  )
-  result
-  pk_grid <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
-  # sf::st_geometry(pk_grid) %>% plot()
-  ## 2.2 Leitud ruutudele leiame piirikasti.
-  algorithm <- "qgis:minimumboundinggeometry"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = algorithm,
-    FIELD = "",
-    INPUT = pk_grid,
-    TYPE = 3,
-    OUTPUT = tmp_gpkg_file
-    # .quiet = TRUE
-  )
-  result
-  # pk_grid_bb <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
-  # sf::st_geometry(pk_grid_bb) %>% plot()
-  # sf::st_geometry(pk) %>% plot(add = T)
-
-  system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s -t_srs \"EPSG:3301\"", dsn, tmp_gpkg_file, output_layer_name))
-
-  ## ------------- 3. piirkonna epk10t (5x5 km) ruudud --------------------
-  # 3.1 kogu ruutvõrgustik
-  ruudud <- c("epk10t_grid", "epk2t_grid", "epk02t_grid")
-  j <- 4
-  for (j in 1:length(ruudud)) {
-    ruut <- ruudud[j]
-    output_layer_name <- ruut
-    conf <- ruut::get_config()
-    pg <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
-    input <- sprintf(
-      '%s table=\"%s\".\"%s\" (geometry)',
-      postgres, "maaamet", ruut
-    )
-    # 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 = input,
-      INTERSECT = sprintf("%s|layername=%s", dsn, "boundarybox_3301"),
-      OUTPUT = tmp_gpkg_file,
-      PREDICATE = c(0, 1)
-      # .quiet = TRUE
-    )
-    result
-    # assign(ruut, sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT")))
-    system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s -t_srs \"EPSG:3301\"", dsn, tmp_gpkg_file, output_layer_name))
-  }
-  # sf::st_geometry(epk10t_grid) %>% plot(add = T)
-
-  # 3.2 ainult piirkonnaga seotud ning informatsiooni sisaldav ruutvõrgustik
-  ruudud <- c("epk10t", "epk2t")
-  j <- 4
-  for (j in 1:length(ruudud)) {
-    ruut <- ruudud[j]
-    output_layer_name <- ruut
-    conf <- ruut::get_config()
-    # pg <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
-    input <- sprintf(
-      '%s table=\"%s\".\"%s\" (geometry)',
-      postgres, "maaamet", ruut
-    )
-    # 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 = input,
-      INTERSECT = input_layer,
-      OUTPUT = tmp_gpkg_file,
-      PREDICATE = c(0, 1)
-      # .quiet = TRUE
-    )
-    result
-    # assign(ruut, sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT")))
-    system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s -s_srs \"EPSG:4326\" -t_srs \"EPSG:3301\"", dsn, tmp_gpkg_file, output_layer_name))
-  }
-  # sf::st_geometry(epk10t) %>% plot(add = T)
-  ## ---------------------- vaata layer'id ----------------------
-  # Vaata layer'eid
-  sf::st_layers(dsn = dsn)
-}
-# piirkonnale_ruudustike_lisamine(obj = NULL, pk = NULL, gpkg_home = "/tmp")

+ 0 - 168
gpkg/02_piirkonnale_polygoonide_lisamine.R

@@ -1,168 +0,0 @@
-#' Piirkonna polügoonide lisamine
-#'
-#' Etteantud piirkonna geomeetrilise piirjoone ('piir') järele leitakse selles piirkonnas ja piirkonna piiriga piirnevad polügoonid (). Osasid polügoone on lõigatud piiriga.
-#'
-#' @param obj str Objekti nimi.
-#' @param pk Piirkonna geomeetriline joon.
-#' @param gpkg_home path Salvestatavate GPKG faili asukoht.
-#' @param obj_only TRUE/FALSE Kas geomeetriad leitakse ainult objekti või kogu piirikastiga määratud ala jaoks.
-#'
-#' @examples
-#' \dontrun{
-#'
-#' }
-piirkonnale_polygoonide_lisamine <- function(obj = NULL, pk = NULL, gpkg_home = "/tmp", obj_only = TRUE) {
-  if (is.null(pk) || !sf::st_is_valid(pk)) {
-    cat("\nPalun kontrolli geomeetrilise kujundi õigsust.\n")
-    return()
-  }
-  if (is.null(obj)) {
-    cat("\nPuudu on objekti nimi.\n")
-    return()
-  }
-  cat(sprintf("\nAlgparameetrid: objekti nimi %s ja GPKG faili kataloog %s\n", obj, gpkg_home))
-  postgres <- sprintf(
-    "postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\'",
-    conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password
-  )
-  dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
-  input_layer_name <- "piir"
-  input_layer <- sprintf("%s|layername=%s", dsn, input_layer_name)
-  tmp_gpkg_file <- tempfile(fileext = ".gpkg")
-
-  ## ----------------- piiri sisse jäävad polügoonid -------------------
-  ## --------------------------- algandmed -----------------------------
-  andmed.df <- data.frame("schema" = character(0), "table" = character(0))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "osm_shp", "table" = "buildings_a"))
-  # andmed.df <- rbind(andmed.df, data.frame("schema" = "maaamet", "table" = "aadressandmed")) # POINT
-  j <- 1
-  for (j in 1:nrow(andmed.df)) {
-    output_layer_name <- as.character(andmed.df$table[j])
-    # 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 = sprintf(
-        '%s table=\"%s\".\"%s\" (geometry)',
-        postgres, andmed.df$schema[j], andmed.df$table[j]
-      ),
-      INTERSECT = input_layer,
-      OUTPUT = tmp_gpkg_file,
-      PREDICATE = c(0) # c(0, 1)
-      # .quiet = TRUE
-    )
-    result
-    # assign(as.character(andmed.df$table[j]), sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT")))
-    system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s -t_srs \"EPSG:3301\"", dsn, tmp_gpkg_file, output_layer_name))
-  }
-
-  ## -------------- piiri -30 meetrise puhvri sisse jäävad polügoonid -------------
-  ## --------------------------------- algandmed ---------------------------------
-  andmed.df <- data.frame("schema" = character(0), "table" = character(0))
-  # andmed.df <- rbind(andmed.df, data.frame("schema" = "maaamet", "table" = "aadressandmed")) # POINT
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "maaamet", "table" = "asustusyksus"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "maaamet", "table" = "shp_katastriyksus"))
-  ## Esmalt leiame piirile uhverjoone.
-  # ruut::qgis_algorithm_search_by_word(str = "buffer")
-  algorithm <- "native:buffer"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = algorithm,
-    DISSOLVE = 0,
-    DISTANCE = -30,
-    END_CAP_STYLE = 2,
-    INPUT = sprintf(
-      "%s|layername=piir",
-      dsn
-    ),
-    JOIN_STYLE = 2,
-    MITER_LIMIT = 2,
-    OUTPUT = tmp_gpkg_file,
-    SEGMENTS = 5
-    # .quiet = TRUE
-  )
-  result
-  piir_buffer <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
-  # st_geometry(pk) %>% plot()
-  # st_geometry(piir_buffer) %>% plot(add=T, col = 'red')
-  j <- 1
-  for (j in 1:nrow(andmed.df)) {
-    output_layer_name <- as.character(andmed.df$table[j])
-    input <- sprintf(
-      '%s table=\"%s\".\"%s\" (geometry)',
-      postgres, andmed.df$schema[j], andmed.df$table[j]
-    )
-    # 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 = input,
-      INTERSECT = piir_buffer,
-      OUTPUT = tmp_gpkg_file,
-      PREDICATE = c(0, 1)
-      # .quiet = TRUE
-    )
-    result
-    # assign(as.character(andmed.df$table[j]), sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT")))
-    system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s -t_srs \"EPSG:3301\"", dsn, tmp_gpkg_file, output_layer_name))
-  }
-
-  ## ----------------- piiriga lõigatud polügoonid -------------------
-  ## --------------------------- algandmed ---------------------------
-  andmed.df <- data.frame("schema" = character(0), "table" = character(0))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "osm_shp", "table" = "landuse_a"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "osm_shp", "table" = "water_a"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "osm_shp", "table" = "pofw_a"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "osm_shp", "table" = "pois_a"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "osm_shp", "table" = "natural_a"))
-  j <- 1
-  for (j in 1:nrow(andmed.df)) {
-    output_layer_name <- as.character(andmed.df$table[j])
-    input <- sprintf(
-      '%s table=\"%s\".\"%s\" (geometry)',
-      postgres, andmed.df$schema[j], andmed.df$table[j]
-    )
-    # ruut::qgis_algorithm_search_by_word(str = "intersect")
-    algorithm <- "native:intersection"
-    # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-    result <- qgisprocess::qgis_run_algorithm(
-      algorithm = algorithm,
-      INPUT = input,
-      INPUT_FIELDS = "",
-      OVERLAY = sprintf(
-        "%s|layername=piir",
-        dsn
-      ),
-      OVERLAY_FIELDS = "",
-      OVERLAY_FIELDS_PREFIX = "",
-      OUTPUT = tmp_gpkg_file
-      # .quiet = TRUE
-    )
-    result
-    # assign(as.character(andmed.df$table[j]), sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT")))
-    system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s -t_srs \"EPSG:3301\"", dsn, tmp_gpkg_file, output_layer_name))
-
-
-    # -------------------- alamkihtide filtreerimine -----------------
-    ## Maakasutus lahti kirjutada!!
-    if (output_layer_name == "landuse_a") {
-      system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_forest -t_srs \"EPSG:3301\" -where \"code = '7201'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-      system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_residential -t_srs \"EPSG:3301\" -where \"code = '7203'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-      system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_grass -t_srs \"EPSG:3301\" -where \"code = '7218'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-      system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_park -t_srs \"EPSG:3301\" -where \"code = '7202'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-      system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_farmland -t_srs \"EPSG:3301\" -where \"code = '7229'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-      system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_scrub -t_srs \"EPSG:3301\" -where \"code = '7217'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-      system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_meadow -t_srs \"EPSG:3301\" -where \"code = '7208'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-      system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_cemetery -t_srs \"EPSG:3301\" -where \"code = '7206'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-      system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_military -t_srs \"EPSG:3301\" -where \"code = '7213'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-    }
-  }
-
-
-  ## ---------------------- vaata layer'id ----------------------
-  # Vaata layer'eid
-  sf::st_layers(dsn = dsn)
-}
-# piirkonnale_polygoonide_lisamine(obj = NULL, pk = NULL, gpkg_home = "/tmp")

+ 0 - 102
gpkg/03_piirkonnale_punktide_lisamine.R

@@ -1,102 +0,0 @@
-#' Piirkonna punktide lisamine
-#'
-#' Etteantud piirkonna geomeetrilise piirjoone ('piir') järele leitakse selles piirkonnas ja piirkonna piiriga piirnevad punktobjektid ().
-#'
-#' @param obj str Objekti nimi.
-#' @param pk Piirkonna geomeetriline joon.
-#' @param gpkg_home path Salvestatavate GPKG faili asukoht.
-#' @param obj_only TRUE/FALSE Kas geomeetriad leitakse ainult objekti või kogu piirikastiga määratud ala jaoks.
-#'
-#' @examples
-#' \dontrun{
-#'
-#' }
-piirkonnale_punktide_lisamine <- function(obj = NULL, pk = NULL, gpkg_home = "/tmp", obj_only = TRUE) {
-  if (is.null(pk) || !sf::st_is_valid(pk)) {
-    cat("\nPalun kontrolli geomeetrilise kujundi õigsust.\n")
-    return()
-  }
-  if (is.null(obj)) {
-    cat("\nPuudu on objekti nimi.\n")
-    return()
-  }
-  cat(sprintf("\nAlgparameetrid: objekti nimi %s ja GPKG faili kataloog %s\n", obj, gpkg_home))
-  postgres <- sprintf(
-    "postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'fid\' srid=4326 type=%s checkPrimaryKeyUnicity=\'1\'",
-    conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password, "Polygon"
-  )
-  postgres_point <- sprintf(
-    "postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'fid\' srid=4326 type=%s checkPrimaryKeyUnicity=\'1\'",
-    conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password, "Point"
-  )
-  dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj) # Polygon
-  ogr <- sprintf(
-    "ogr:dbname='%s'",
-    dsn
-  )
-  tmp_gpkg_file <- tempfile(fileext = ".gpkg")
-
-
-  ## ----------------- punktfaili loomine -------------------
-  ## -------------- epk2t_grids tsentroidid -----------------
-  # ruut::qgis_algorithm_search_by_word(str = "centroid")
-  algorithm <- "native:centroids"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = algorithm,
-    ALL_PARTS = 1,
-    INPUT = sprintf("%s|layername=%s", dsn, "epk02t_grid"),
-    OUTPUT = sprintf('%s table=\"%s\" (geometry)', ogr, "epk2t_centroid")
-    # .quiet = TRUE
-  )
-
-  ## ----------------- piiri sisse jäävad punktid -------------------
-  ## --------------------------- algandmed --------------------------
-  andmed.df <- data.frame("schema" = character(0), "table" = character(0))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "maaamet", "table" = "aadressandmed")) # POINT
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "osm_shp", "table" = "pofw"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "osm_shp", "table" = "pois"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_bussipeatus"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "kilomeetripostid"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_jaotus"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_kandur"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_mahasoit"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_onnetus"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_rdtyl"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_ristmik"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_ristumispunkt"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_sild"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_teeosa_points"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_ylek"))
-  j <- 1
-  for (j in 1:nrow(andmed.df)) {
-    output_layer_name <- as.character(andmed.df$table[j])
-    # ruut::qgis_algorithm_search_by_word(str = "intersect")
-    algorithm <- "native:intersection"
-    # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-    result <- qgisprocess::qgis_run_algorithm(
-      algorithm = algorithm,
-      INPUT = sprintf('%s table="%s"."%s" (geometry)', postgres_point, andmed.df$schema[j], andmed.df$table[j]),
-      INPUT_FIELDS = "",
-      # OUTPUT = sprintf('%s table=\"%s\" (geometry)', ogr, andmed.df$table[j]),
-      OUTPUT = tmp_gpkg_file,
-      OVERLAY = sprintf("%s|layername=%s", dsn, "piir"),
-      OVERLAY_FIELDS = "",
-      OVERLAY_FIELDS_PREFIX = ""
-      # # .quiet = TRUE
-    )
-    result
-    # assign(as.character(andmed.df$table[j]), sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT")))
-    system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s -t_srs \"EPSG:3301\"", dsn, tmp_gpkg_file, output_layer_name))
-    ## AINULT ELAMUD aadressandmetest!!
-    if (output_layer_name == "aadressandmed") {
-      system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_ee -t_srs \"EPSG:3301\" -where \"adob_liik = 'EE'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-    }
-  }
-
-
-  ## ---------------------- vaata layer'id ----------------------
-  # Vaata layer'eid
-  sf::st_layers(dsn = dsn)
-}
-# piirkonnale_punktide_lisamine(obj = NULL, pk = NULL, gpkg_home = "/tmp")

+ 0 - 101
gpkg/04_piirkonnale_joonte_lisamine.R

@@ -1,101 +0,0 @@
-#' Piirkonna joonte lisamine
-#'
-#' Etteantud piirkonna geomeetrilise piirjoone ('piir') järele leitakse selles piirkonnas ja piirkonna piiriga piirnevad joonobjektid ().
-#'
-#' @param obj str Objekti nimi.
-#' @param pk Piirkonna geomeetriline joon.
-#' @param gpkg_home path Salvestatavate GPKG faili asukoht.
-#' @param obj_only TRUE/FALSE Kas geomeetriad leitakse ainult objekti või kogu piirikastiga määratud ala jaoks.
-#'
-#' @examples
-#' \dontrun{
-#'
-#' }
-piirkonnale_joonte_lisamine <- function(obj = NULL, pk = NULL, gpkg_home = "/tmp", obj_only = TRUE) {
-  if (is.null(pk) || !sf::st_is_valid(pk)) {
-    cat("\nPalun kontrolli geomeetrilise kujundi õigsust.\n")
-    return()
-  }
-  if (is.null(obj)) {
-    cat("\nPuudu on objekti nimi.\n")
-    return()
-  }
-  cat(sprintf("\nAlgparameetrid: objekti nimi %s ja GPKG faili kataloog %s\n", obj, gpkg_home))
-  postgres <- sprintf(
-    "postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'fid\' srid=4326 type=%s checkPrimaryKeyUnicity=\'1\'",
-    conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password, "Polygon"
-  )
-  postgres_point <- sprintf(
-    "postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'fid\' srid=4326 type=%s checkPrimaryKeyUnicity=\'1\'",
-    conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password, "Point"
-  )
-  postgres_line <- sprintf(
-    "postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'fid\' srid=4326 type=%s checkPrimaryKeyUnicity=\'1\'",
-    conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password, "Linestring"
-  )
-  dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj) # Polygon
-  ogr <- sprintf(
-    "ogr:dbname='%s'",
-    dsn
-  )
-  tmp_gpkg_file <- tempfile(fileext = ".gpkg")
-
-
-  ## ----------------- punktfaili loomine -------------------
-  ## -------------- epk2t_grids tsentroidid -----------------
-  # ruut::qgis_algorithm_search_by_word(str = "polygons")
-  algorithm <- "native:polygonstolines"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = algorithm,
-    INPUT = sprintf("%s|layername=%s", dsn, "piir"),
-    OUTPUT = sprintf('%s table=\"%s\" (geometry)', ogr, "piir_l")
-    # .quiet = TRUE
-  )
-
-  ## ----------------- piiri sisse jäävad punktid -------------------
-  ## --------------------------- algandmed --------------------------
-  andmed.df <- data.frame("schema" = character(0), "table" = character(0))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_alusdokumendid_ja_lepingud"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "korvalmaantee"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "muutee"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_kergliiklustee"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_liiklussagedus"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "n_omand"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "pohimaantee"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "ramp"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "teeosa"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "teeregister_wfs", "table" = "tugimaantee"))
-  andmed.df <- rbind(andmed.df, data.frame("schema" = "gtfs", "table" = "shapes"))
-  j <- 1
-  for (j in 1:nrow(andmed.df)) {
-    output_layer_name <- as.character(andmed.df$table[j])
-    # ruut::qgis_algorithm_search_by_word(str = "intersect")
-    algorithm <- "native:intersection"
-    # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-    result <- qgisprocess::qgis_run_algorithm(
-      algorithm = algorithm,
-      INPUT = sprintf('%s table="%s"."%s" (geometry)', postgres_line, andmed.df$schema[j], andmed.df$table[j]),
-      INPUT_FIELDS = "",
-      # OUTPUT = sprintf('%s table=\"%s\" (geometry)', ogr, andmed.df$table[j]),
-      OUTPUT = tmp_gpkg_file,
-      OVERLAY = sprintf("%s|layername=%s", dsn, "piir"),
-      OVERLAY_FIELDS = "",
-      OVERLAY_FIELDS_PREFIX = ""
-      # # .quiet = TRUE
-    )
-    result
-    # assign(as.character(andmed.df$table[j]), sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT")))
-    system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s -t_srs \"EPSG:3301\"", dsn, tmp_gpkg_file, output_layer_name))
-    ## AINULT ELAMUD aadressandmetest!!
-    # if (output_layer_name == "aadressandmed") {
-    #   system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s_ee -t_srs \"EPSG:3301\" -where \"adob_liik = 'EE'\"  ", dsn, tmp_gpkg_file, output_layer_name))
-    # }
-  }
-
-
-  ## ---------------------- vaata layer'id ----------------------
-  # Vaata layer'eid
-  sf::st_layers(dsn = dsn)
-}
-# piirkonnale_joonte_lisamine(obj = NULL, pk = NULL, gpkg_home = "/tmp")

+ 90 - 0
gpkg/10_piirkonnale_maatriksi_loomine.R

@@ -0,0 +1,90 @@
+#' Maatriksi loomine
+#'
+#' Etteantud piirkonna geomeetrilise piirjoone ('piir') järele leitakse selle piirkonna EPSG:3301 projektsioonile vastav piirikast ('boundarybox_3301'). Piirikasti järele leitakse selle kastiga kaetud 5x5 km ('epk10t_grid'), 1x1 km ('epk2t_grid') ja 100x100 meetrit ('epk02t_grid') ruudustikud. Samuti leitakse piirkonna piiri sees olevad ja statistilist ning muud infot sisaldavad 5x5 km ('epk10t') ja 1x1 km ('epk2t') sisaldavad ruudu. Andmed salvestatakse GPKG faili kihtidena. Faili nimeks on objekti nimi.
+#'
+#' @param obj str Objekti nimi.
+#' @param pk Piirkonna geomeetriline joon.
+#' @param gpkg_home path Salvestatavate GPKG faili asukoht.
+#' @param obj_only TRUE/FALSE Kas geomeetriad leitakse ainult objekti või kogu piirikastiga määratud ala jaoks.
+#'
+#'
+piirkonnale_maatriksi_loomine <- function(obj = NULL, pk = NULL, gpkg_home = "/tmp", obj_only = TRUE) {
+  if (!kas_on_piirkond(obj = obj, pk = pk)) {
+    return()
+  }
+
+
+  ## Algandmed
+  dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj) # Polygon
+  layer <- "bb_epk02t_grid"
+  dsn_info <- sf::st_layers(dsn = dsn)
+
+  ## Loeme andmebaasist piiri ja piirikasti.
+  # Layers list
+  gpkg_info <- sf::st_layers(dsn = dsn)
+  layer_names <- gpkg_info$name
+  for (layer_name in layer_names) {
+    cat(sprintf("\n%s", layer_name))
+    assign(layer_name, sf::read_sf(dsn = dsn, layer = layer_name))
+  }
+
+  # Valge piirikast
+  sf::st_geometry(bb) %>% plot(border = 0, lwd = 0.3, col = "#ffffff")
+  # Must piir
+  sf::st_geometry(piir) %>% plot(add = T, border = 3, lwd = 0.3, col = "#63fffb")
+
+
+
+  sf::st_geometry(bb) %>% plot(border = 3, lwd = 0.3, col = "#d3fffb")
+  sf::st_geometry(bb_epk02t_grid) %>% plot(border = 3, lwd = 0.3, col = "#d3fffb")
+  sf::st_geometry(piir_epk02t_grid) %>% plot(add = T, border = 3, lwd = 0.3, col = "#a3fffb")
+  sf::st_geometry(piir) %>% plot(add = T, border = 3, lwd = 0.3, col = "#63fffb")
+
+  sp <- sf::read_sf(dsn = dsn, layer)
+  sp$value <- 0
+  unique(sp$left)
+  unique(sp$bottom)
+  length(sp$value)
+#
+#   pk <- sf::st_transform(pk, sf::st_crs(sp))
+
+  sf::st_geometry(sp) %>% plot()
+  sf::st_geometry(pk) %>% plot(add = T)
+
+  # 0 - intersect
+  # 1 - contain
+  # 2 - disjoint
+  # 3 - equal
+  # 4 - touch
+  # 5 - overlap
+  # 6 - are within
+  # 7 - cross
+
+  x <- sf::st_contains(pk, sp, sparse = TRUE)
+  sp$value[x[[1]]] <- 1
+  x[[1]]
+  max(sp$value)
+  sp
+  if (length(x[[1]]) == 0) {
+    cat("\n--------------\nAndmebaasis olev ruudustik ei kattu piirkonnaga.\nPalu genereeri eelnevalt piirikast\n funktsiooniga 'piirkonnale_ruudustike_lisamine()'.\n\n")
+    return()
+  }
+  # plot(sp)
+  # sf::st_geometry(sp) %>% plot()
+  rows <- sort(unique(sp$bottom), decreasing = f)
+  cols <- sort(unique(sp$left))
+  length(rows)*length(cols)
+
+  (m0 <- matrix(0L, nrow = length(rows), ncol = length(cols), byrow = F)) # 0-maatriks
+  (m <- matrix(sp$value, nrow = length(rows), ncol = length(cols), byrow = F))
+
+  > mat1.data <- c(1,2,3,4,5,6,7,8,9)
+  > mat1 <- matrix(mat1.data,nrow=3,ncol=3,byrow=TRUE)
+  > mat1
+  # colnames(m) <- paste0("X",cols)
+  # rownames(m) <- paste0("Y",rows)
+  # m["802","3480"]<- 100
+  cat("\n---------------\nTagastati maatriks.\n")
+  m
+}
+# piirkonnale_maatriksi_loomine(obj = obj, pk = pk, gpkg_home = gpkg_home, obj_only = TRUE)

+ 25 - 0
gpkg/99_elamute_arv_epk02t.R

@@ -0,0 +1,25 @@
+
+## ---------------------- elamute arv epk02t ruudus -----------------------------
+## NB! projektsioonid peavad paigas olema!!!!! Samasugused EPSG:3301
+# Processing algorithm…
+# Algorithm 'Count points in polygon' starting…
+# Input parameters:
+#   { 'CLASSFIELD' : '', 'FIELD' : 'NUMPOINTS', 'OUTPUT' : 'ogr:dbname=\'/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/valga_results.gpkg\' table=\"count_aadressandmed_ee_epk02t\" (geom)', 'POINTS' : '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/valga_p.gpkg|layername=aadressandmed_ee', 'POLYGONS' : 'memory://Polygon?crs=EPSG:3301&field=fid:long(0,0)&field=id:integer(0,0)&field=cat:double(0,0)&field=row:double(0,0)&field=col:integer(0,0)&field=NUMPOINTS:double(0,0)&uid={b5c46c2b-5663-417c-83d4-6811b2ca538b}', 'WEIGHT' : '' }
+
+
+
+## --------------------- Layer'te salvestamine gpkg-ks --------------------------
+# Processing algorithm…
+# Algorithm 'Package layers' starting…
+# Input parameters:
+#   { 'LAYERS' : ['/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/valga_p.gpkg|layername=aadressandmed_ee','/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/valga.gpkg|layername=epk2t','/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/valga.gpkg|layername=piir'], 'OUTPUT' : '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/xxx.gpkg', 'OVERWRITE' : False, 'SAVE_STYLES' : True }
+#
+# Packaging layer 1/3: aadressandmed_ee
+# Packaging layer 2/3: epk2t
+# Packaging layer 3/3: piir
+# Execution completed in 1.06 seconds
+# Results:
+#   {'OUTPUT': '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/xxx.gpkg',
+#     'OUTPUT_LAYERS': ['/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/xxx.gpkg|layername=aadressandmed_ee',
+#                       '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/xxx.gpkg|layername=epk2t',
+#                       '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/xxx.gpkg|layername=piir']}

+ 56 - 0
gpkg_ja_postgis_vahelised_teisendused.R

@@ -0,0 +1,56 @@
+library(qgisprocess)
+library(dplyr)
+
+conf <- ruut::get_config()
+gpkg_file <- "/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/valga.gpkg"
+# Vaata layer'eid
+sf::st_layers(gpkg_file)
+# Vali layer
+layer <- "epk200t_grid"
+conf$table <- "aaa_1"
+conf$schema <- "data"
+ruut::copy_gpkg_to_db(gpkg = gpkg_file, layer = layer, conf = conf)
+# ruut::copy_gpkg_to_db(gpkg = gpkg_file, conf = conf)
+
+
+sf::st_layers(gpkg_file)
+sp <- sf::read_sf(dsn = gpkg_file, layer )
+plot(sp)
+sf::st_geometry(sp) %>% plot()
+
+# write to gpkg
+sf::st_write(sp, dsn = "/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/xxxxx.gpkg",
+         layer = "layerThree", driver = "gpkg", layer_options = "OVERWRITE=true")
+
+system(sprintf("ogr2ogr -f GPKG -update %s %s   -nln layerThree", gpkg_file, sp))
+
+system("ogr2ogr --long-usage")
+
+
+result <- qgis_run_algorithm(
+  "native:buffer",
+  INPUT = gpkg_file,
+  DISTANCE = .0000011,
+  DISSOLVE = TRUE,
+  .quiet = TRUE
+)
+sf::st_geometry( sf::read_sf(qgisprocess::qgis_output(result, 'OUTPUT'))) %>% plot()
+
+
+pg <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
+
+gpkg_file <- "/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/xxxxx.gpkg"
+
+system(sprintf("ogr2ogr -f GPKG %s %s %s  -nln layerOne", gpkg_file, pg, conf$table))
+
+system(sprintf("ogr2ogr -f GPKG -update %s %s %s  -nln layerOne", gpkg_file, pg, conf$table))
+
+# ogr2ogr -f GPKG dst.gpkg src.shp -nln layerOne
+# ogr2ogr -f GPKG -update dst.gpkg src.shp -nln layerTwo
+
+#
+## only two features by where clause
+nc_sql = st_read(system.file("shape/nc.shp", package="sf"),
+                 query = "SELECT NAME, SID74, FIPS FROM \"nc\" WHERE BIR74 > 20000")
+
+

+ 70 - 0
matsalu_wms.R

@@ -0,0 +1,70 @@
+library(leaflet)
+
+year <- format(Sys.Date(), "%Y")
+
+
+leaflet() %>% addTiles() %>% setView(-93.65, 42.0285, zoom = 7) %>%addWMSTiles(
+  "http://basemap.nationalmap.gov/arcgis/services/USGSHydroNHD/MapServer/WMSServer?",
+  layers = "0",
+  options = WMSTileOptions(format = "image/png", transparent = TRUE),
+  attribution = "") 
+
+i <- 9
+# 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"
+)
+url <- paste0("https://xgis.maaamet.ee/xgis2/service/c9me/ajal?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=", layers[i], "&SRS=EPSG%3A3301&STYLES=&WIDTH=1236&HEIGHT=687&BBOX=450632.44047619053%2C6404438.244047619%2C459828.86904761905%2C6409549.851190476")
+cat(url)
+
+wms_map_url <- "https://kaart.maaamet.ee/wms/ajalooline?version=1.3.0"
+wms_map_url <- "http://basemap.nationalmap.gov/arcgis/services/USGSHydroNHD/MapServer/WMSServer?"
+
+x <- 23.4784
+y <- 58.7864
+
+
+## WMS: transpordivõrgud
+wms_map_url <- "https://inspire.maaamet.ee/arcgis/rest/services/public/tn_com/MapServer/exts/InspireView/service"
+leaflet() %>% addTiles() %>% setView(x, y, zoom = 14) %>% addWMSTiles(
+  wms_map_url,
+  layers = c("1","2"),
+  options = WMSTileOptions(format = "image/png", transparent = TRUE),
+  attribution = "Maa-amet") 
+
+
+## WMS: Ortofoto
+wms_map_url <- "https://inspire.maaamet.ee/arcgis/rest/services/public/orthophoto/MapServer/exts/InspireView/service"
+leaflet() %>% addTiles() %>% setView(x, y, zoom = 15) %>%addWMSTiles(
+  wms_map_url,
+  layers = "0",
+  options = WMSTileOptions(format = "image/png", transparent = TRUE),
+  attribution = paste0("Aluskaart: Maa-amet ", year, " "))
+#' Ortofotode allalaadimine: https://geoportaal.maaamet.ee/est/Ruumiandmed/Ortofotod/Laadi-ortofotod-alla-p610.html
+#' Ruudustik 1:10000, näiteks 'matsalu ruut' on 62173.
+#' 
+
+
+
+
+## WMS: Ortofotod
+k <- 0
+wms_map_url <- "https://inspire.maaamet.ee/arcgis/rest/services/public/orthophoto/MapServer/exts/InspireView/service"
+leaflet() %>% addTiles() %>% setView(x, y, zoom = 15) %>%addWMSTiles(
+  wms_map_url,
+  layers = k,
+  options = WMSTileOptions(format = "image/png", transparent = TRUE),
+  attribution = "Maa-amet")
+k <- k + 1
+
+
+# Tuumaelektrijaamad
+leaflet() %>% addTiles() %>% setView(x, y, zoom = 4) %>%  addWMSTiles(
+  "http://sedac.ciesin.columbia.edu/geoserver/wms",
+  layers = "energy:energy-pop-exposure-nuclear-plants-locations_plants",
+  options = WMSTileOptions(format = "image/png", transparent = TRUE),
+  tileOptions(tms = TRUE),
+  attribution = "")
+