Преглед изворни кода

Lisatud 'gpkg_piirkonnale_punktide_lisamine'. TÕÕTAV GPKG pakett.

Ardo Kubjas пре 5 година
родитељ
комит
604c550bd6

+ 4 - 4
.Rhistory

@@ -1,7 +1,3 @@
-library(ruut)
-styler:::style_active_file()
-styler:::style_active_file()
-system("ogr2ogr --long-usage")
 styler:::style_active_file()
 styler:::style_active_file()
 library(ruut)
@@ -510,3 +506,7 @@ if(nrow(res)==0) NULL else res[, "table_name"]
 if(nrow(res)==0) NULL else res[, "table_name"]
 styler:::style_active_file()
 library(ruut)
+library(ruut)
+styler:::style_active_file()
+library(ruut)
+library(ruut)

+ 2 - 0
NAMESPACE

@@ -16,7 +16,9 @@ export(db_is_shema_exist)
 export(db_schema_tablenames)
 export(db_table_colnames)
 export(get_config)
+export(gpkg_piirkonnale_joonte_lisamine)
 export(gpkg_piirkonnale_polygoonide_lisamine)
+export(gpkg_piirkonnale_punktide_lisamine)
 export(gpkg_piirkonnale_ruudustike_lisamine)
 export(gpkg_sellest_alustame_gpkg_loomist)
 export(pk_bbox)

+ 1 - 1
R/gpkg_piirkonnale_joonte_lisamine.R

@@ -5,7 +5,7 @@
 #' @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 Uute GPKG andmebaasi kihtide 'piir_...' ja 'bb_...' loomine.
-#' @seealso [sf::st_read()], [sf::write_sf()],[sf::st_transform()],[ruut::gpkg_piirkonnale_ruudustike_lisamine()] ,[ruut::gpkg_piirkonnale_polygoonide_lisamine()],[ruut::gpkg_sellest_alustame_gpkg_loomist()],[ruut::gpkg_piirkonnale_joonte_lisamine()]
+#' @seealso [sf::st_read()], [sf::write_sf()],[sf::st_transform()],[ruut::gpkg_piirkonnale_ruudustike_lisamine()] ,[ruut::gpkg_piirkonnale_polygoonide_lisamine()],[ruut::gpkg_sellest_alustame_gpkg_loomist()],[ruut::gpkg_piirkonnale_joonte_lisamine()],[ruut::gpkg_piirkonnale_punktide_lisamine()]
 #' @keywords GPKG, boundary box, EPSG:3301
 #' @export
 #' @examples

+ 1 - 1
R/gpkg_piirkonnale_polygoonide_lisamine.R

@@ -5,7 +5,7 @@
 #' @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 Uute GPKG andmebaasi kihtide 'piir_...' ja 'bb_...' loomine.
-#' @seealso [sf::st_read()], [sf::write_sf()],[sf::st_transform()], [ruut::gpkg_piirkonnale_ruudustike_lisamine()] ,[ruut::gpkg_piirkonnale_polygoonide_lisamine()],[ruut::gpkg_sellest_alustame_gpkg_loomist()]
+#' @seealso [sf::st_read()], [sf::write_sf()],[sf::st_transform()],[ruut::gpkg_piirkonnale_ruudustike_lisamine()] ,[ruut::gpkg_piirkonnale_polygoonide_lisamine()],[ruut::gpkg_sellest_alustame_gpkg_loomist()],[ruut::gpkg_piirkonnale_joonte_lisamine()],[ruut::gpkg_piirkonnale_punktide_lisamine()]
 #' @keywords GPKG, boundary box, EPSG:3301
 #' @export
 #' @examples

+ 111 - 0
R/gpkg_piirkonnale_punktide_lisamine.R

@@ -0,0 +1,111 @@
+#' Piirkonnale andmebaasides olevate punktide lisamine
+#'
+#' Etteantud piirkonna geomeetrilise piirjoone ('piir') ja selle joone piirikasti ('bb') järele leitakse nende aladega kaetud polügoonid. Andmed salvestatakse GPKG faili kihtidena.
+#'
+#' @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 Uute GPKG andmebaasi kihtide 'piir_...' ja 'bb_...' loomine.
+#' @seealso [sf::st_read()], [sf::write_sf()],[sf::st_transform()],[ruut::gpkg_piirkonnale_ruudustike_lisamine()] ,[ruut::gpkg_piirkonnale_polygoonide_lisamine()],[ruut::gpkg_sellest_alustame_gpkg_loomist()],[ruut::gpkg_piirkonnale_joonte_lisamine()],[ruut::gpkg_piirkonnale_punktide_lisamine()]
+#' @keywords GPKG, boundary box, EPSG:3301
+#' @export
+#' @examples
+#' \dontrun{
+#'
+#' gpkg_home <- "/tmp"
+#' obj <- "marja"
+#' gpkg_piirkonnale_punktide_lisamine(obj = obj, gpkg_home = gpkg_home)
+#'
+#' # Layers list.
+#' dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
+#' sf::st_layers(dsn = dsn)
+#' }
+gpkg_piirkonnale_punktide_lisamine <- function(obj = NULL, gpkg_home = "/tmp") {
+  dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
+  if (!file.exists(dsn)) {
+    cat(sprintf("\nSellist faili \"%s\" ei leitud.\n", dsn))
+    return(NULL)
+  }
+  ## Konfiguratsiooni muutujale väärtuste omistamine
+  conf <- ruut::get_config()
+  conf$gpkg_home <- gpkg_home
+  conf$gpkg_file <- obj
+  postgres <- sprintf(
+    "postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'id\' srid=3301 type=Point checkPrimaryKeyUnicity=\'1\' ",
+    conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password
+  )
+  tmp_gpkg_file <- tempfile(fileext = ".gpkg")
+  ## Algorithm
+  # ruut::qgis_algorithm_search_by_word(str = "extract")
+  # algorithm <- "native:extractbylocation"
+  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+
+  ## -------------------- Loop -----------------------
+  intersect_layers <- c("piir", "bb")
+  andmed <- data.frame("schema" = character(0), "table" = character(0))
+  andmed <- rbind(andmed, data.frame("schema" = "maaamet", "table" = "aadressandmed")) # POINT
+  andmed <- rbind(andmed, data.frame("schema" = "osm_shp", "table" = "pofw"))
+  andmed <- rbind(andmed, data.frame("schema" = "osm_shp", "table" = "pois"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_bussipeatus"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "kilomeetripostid"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_jaotus"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_kandur"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_mahasoit"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_onnetus"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_rdtyl"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_ristmik"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_ristumispunkt"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_sild"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_teeosa_points"))
+  andmed <- rbind(andmed, data.frame("schema" = "teeregister_wfs", "table" = "n_ylek"))
+  for (intersect in intersect_layers) {
+    for (i in 1:nrow(andmed)) {
+      conf$gpkg_table <- sprintf("%s_%s", intersect, andmed$table[i])
+      output <- ruut::construct_to_gpkg_output_file_str(conf = conf)
+      ## !!! Trikk: alguses leiame ühisosaga piirkonnad
+      if (andmed$schema[i] %in% c("teeregister_wfs")) geom <- "geometry" else geom <- "geom"
+      result <- qgisprocess::qgis_run_algorithm(
+        algorithm = "native:extractbylocation",
+        INPUT = sprintf(
+          '%s table=\"%s\".\"%s\" (%s)',
+          postgres, andmed$schema[i], andmed$table[i], geom
+        ),
+        INTERSECT = sprintf("%s|layername=%s", dsn, intersect),
+        OUTPUT = tmp_gpkg_file,
+        PREDICATE = c(0)
+      )
+      ## !!! Trikk jätkub: edasi leiame alles ühisosa
+      result <- qgisprocess::qgis_run_algorithm(
+        algorithm = "native:intersection",
+        INPUT = tmp_gpkg_file,
+        INPUT_FIELDS = "",
+        OVERLAY = sprintf("%s|layername=%s", dsn, intersect),
+        OVERLAY_FIELDS = "",
+        OVERLAY_FIELDS_PREFIX = "",
+        OUTPUT = output
+        # .quiet = TRUE
+      )
+      ## Filtreerime aadressandmete kihi eraldi alamkihtideks
+      if (andmed$table[i] == "aadressandmed") {
+        aadressandmed <- unique(as.data.frame(sf::read_sf(dsn = dsn, layer = sprintf("%s_aadressandmed", intersect), as_tibble = T))[, c("adob_liik"), drop = FALSE])
+        parent_table <- conf$gpkg_table
+        for (k in 1:nrow(aadressandmed)) {
+          table_suffix <- aadressandmed$adob_liik[k]
+          conf$gpkg_table <- sprintf("%s_%s", parent_table, table_suffix)
+          output <- ruut::construct_to_gpkg_output_file_str(conf = conf)
+          result <- qgisprocess::qgis_run_algorithm(
+            algorithm = "native:extractbyattribute",
+            FIELD = "adob_liik",
+            OPERATOR = 0, # 0 s.o '='
+            VALUE = aadressandmed$adob_liik[k],
+            INPUT = sprintf("%s|layername=%s_%s", dsn, intersect, andmed$table[i]),
+            OUTPUT = output,
+            FAIL_OUTPUT = qgisprocess::qgis_tmp_vector()
+            # .quiet = TRUE
+          )
+        }
+      }
+    }
+  }
+  ## Layers list
+  sf::st_layers(dsn = dsn)
+}

+ 1 - 1
R/gpkg_piirkonnale_ruudustike_lisamine.R

@@ -5,7 +5,7 @@
 #' @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 Uute GPKG andmebaasi kihtide 'piir_...' ja 'bb_...' loomine.
-#' @seealso [sf::st_read()], [sf::write_sf()],[sf::st_transform()], [ruut::gpkg_piirkonnale_ruudustike_lisamine()] ,[ruut::gpkg_piirkonnale_polygoonide_lisamine()],[ruut::gpkg_sellest_alustame_gpkg_loomist()]
+#' @seealso [sf::st_read()], [sf::write_sf()],[sf::st_transform()],[ruut::gpkg_piirkonnale_ruudustike_lisamine()] ,[ruut::gpkg_piirkonnale_polygoonide_lisamine()],[ruut::gpkg_sellest_alustame_gpkg_loomist()],[ruut::gpkg_piirkonnale_joonte_lisamine()],[ruut::gpkg_piirkonnale_punktide_lisamine()]
 #' @keywords GPKG, boundary box, EPSG:3301
 #' @export
 #' @examples

+ 1 - 1
R/gpkg_sellest_alustame_gpkg_loomist.R

@@ -8,7 +8,7 @@
 #' @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()], [ruut::gpkg_piirkonnale_ruudustike_lisamine()] ,[ruut::gpkg_piirkonnale_polygoonide_lisamine()],[ruut::gpkg_sellest_alustame_gpkg_loomist()]
+#' @seealso [sf::st_read()], [sf::write_sf()],[sf::st_transform()],[ruut::gpkg_piirkonnale_ruudustike_lisamine()] ,[ruut::gpkg_piirkonnale_polygoonide_lisamine()],[ruut::gpkg_sellest_alustame_gpkg_loomist()],[ruut::gpkg_piirkonnale_joonte_lisamine()],[ruut::gpkg_piirkonnale_punktide_lisamine()]
 #' @keywords GPKG, boundary box, EPSG:3301
 #' @export
 #' @examples

+ 1 - 1
man/gpkg_piirkonnale_joonte_lisamine.Rd

@@ -30,7 +30,7 @@ sf::st_layers(dsn = dsn)
 }
 }
 \seealso{
-\code{\link[sf:st_read]{sf::st_read()}}, \code{\link[sf:st_write]{sf::write_sf()}},\code{\link[sf:st_transform]{sf::st_transform()}},\code{\link[=gpkg_piirkonnale_ruudustike_lisamine]{gpkg_piirkonnale_ruudustike_lisamine()}} ,\code{\link[=gpkg_piirkonnale_polygoonide_lisamine]{gpkg_piirkonnale_polygoonide_lisamine()}},\code{\link[=gpkg_sellest_alustame_gpkg_loomist]{gpkg_sellest_alustame_gpkg_loomist()}},\code{\link[=gpkg_piirkonnale_joonte_lisamine]{gpkg_piirkonnale_joonte_lisamine()}}
+\code{\link[sf:st_read]{sf::st_read()}}, \code{\link[sf:st_write]{sf::write_sf()}},\code{\link[sf:st_transform]{sf::st_transform()}},\code{\link[=gpkg_piirkonnale_ruudustike_lisamine]{gpkg_piirkonnale_ruudustike_lisamine()}} ,\code{\link[=gpkg_piirkonnale_polygoonide_lisamine]{gpkg_piirkonnale_polygoonide_lisamine()}},\code{\link[=gpkg_sellest_alustame_gpkg_loomist]{gpkg_sellest_alustame_gpkg_loomist()}},\code{\link[=gpkg_piirkonnale_joonte_lisamine]{gpkg_piirkonnale_joonte_lisamine()}},\code{\link[=gpkg_piirkonnale_punktide_lisamine]{gpkg_piirkonnale_punktide_lisamine()}}
 }
 \keyword{EPSG:3301}
 \keyword{GPKG,}

+ 1 - 1
man/gpkg_piirkonnale_polygoonide_lisamine.Rd

@@ -30,7 +30,7 @@ sf::st_layers(dsn = dsn)
 }
 }
 \seealso{
-\code{\link[sf:st_read]{sf::st_read()}}, \code{\link[sf:st_write]{sf::write_sf()}},\code{\link[sf:st_transform]{sf::st_transform()}}, \code{\link[=gpkg_piirkonnale_ruudustike_lisamine]{gpkg_piirkonnale_ruudustike_lisamine()}} ,\code{\link[=gpkg_piirkonnale_polygoonide_lisamine]{gpkg_piirkonnale_polygoonide_lisamine()}},\code{\link[=gpkg_sellest_alustame_gpkg_loomist]{gpkg_sellest_alustame_gpkg_loomist()}}
+\code{\link[sf:st_read]{sf::st_read()}}, \code{\link[sf:st_write]{sf::write_sf()}},\code{\link[sf:st_transform]{sf::st_transform()}},\code{\link[=gpkg_piirkonnale_ruudustike_lisamine]{gpkg_piirkonnale_ruudustike_lisamine()}} ,\code{\link[=gpkg_piirkonnale_polygoonide_lisamine]{gpkg_piirkonnale_polygoonide_lisamine()}},\code{\link[=gpkg_sellest_alustame_gpkg_loomist]{gpkg_sellest_alustame_gpkg_loomist()}},\code{\link[=gpkg_piirkonnale_joonte_lisamine]{gpkg_piirkonnale_joonte_lisamine()}},\code{\link[=gpkg_piirkonnale_punktide_lisamine]{gpkg_piirkonnale_punktide_lisamine()}}
 }
 \keyword{EPSG:3301}
 \keyword{GPKG,}

+ 38 - 0
man/gpkg_piirkonnale_punktide_lisamine.Rd

@@ -0,0 +1,38 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/gpkg_piirkonnale_punktide_lisamine.R
+\name{gpkg_piirkonnale_punktide_lisamine}
+\alias{gpkg_piirkonnale_punktide_lisamine}
+\title{Piirkonnale andmebaasides olevate punktide lisamine}
+\usage{
+gpkg_piirkonnale_punktide_lisamine(obj = NULL, gpkg_home = "/tmp")
+}
+\arguments{
+\item{obj}{str Objekti nimi. Edaspidi on oluline ainult see nimi. Piirkonna geomeetrilist joont ei ole vaja lisada.}
+
+\item{gpkg_home}{path Salvestatavate GPKG faili asukoht.}
+}
+\value{
+Uute GPKG andmebaasi kihtide 'piir_...' ja 'bb_...' loomine.
+}
+\description{
+Etteantud piirkonna geomeetrilise piirjoone ('piir') ja selle joone piirikasti ('bb') järele leitakse nende aladega kaetud polügoonid. Andmed salvestatakse GPKG faili kihtidena.
+}
+\examples{
+\dontrun{
+
+gpkg_home <- "/tmp"
+obj <- "marja"
+gpkg_piirkonnale_punktide_lisamine(obj = obj, gpkg_home = gpkg_home)
+
+# Layers list.
+dsn <- sprintf("\%s/\%s.gpkg", gpkg_home, obj)
+sf::st_layers(dsn = dsn)
+}
+}
+\seealso{
+\code{\link[sf:st_read]{sf::st_read()}}, \code{\link[sf:st_write]{sf::write_sf()}},\code{\link[sf:st_transform]{sf::st_transform()}},\code{\link[=gpkg_piirkonnale_ruudustike_lisamine]{gpkg_piirkonnale_ruudustike_lisamine()}} ,\code{\link[=gpkg_piirkonnale_polygoonide_lisamine]{gpkg_piirkonnale_polygoonide_lisamine()}},\code{\link[=gpkg_sellest_alustame_gpkg_loomist]{gpkg_sellest_alustame_gpkg_loomist()}},\code{\link[=gpkg_piirkonnale_joonte_lisamine]{gpkg_piirkonnale_joonte_lisamine()}},\code{\link[=gpkg_piirkonnale_punktide_lisamine]{gpkg_piirkonnale_punktide_lisamine()}}
+}
+\keyword{EPSG:3301}
+\keyword{GPKG,}
+\keyword{boundary}
+\keyword{box,}

+ 1 - 1
man/gpkg_piirkonnale_ruudustike_lisamine.Rd

@@ -30,7 +30,7 @@ sf::st_layers(dsn = dsn)
 }
 }
 \seealso{
-\code{\link[sf:st_read]{sf::st_read()}}, \code{\link[sf:st_write]{sf::write_sf()}},\code{\link[sf:st_transform]{sf::st_transform()}}, \code{\link[=gpkg_piirkonnale_ruudustike_lisamine]{gpkg_piirkonnale_ruudustike_lisamine()}} ,\code{\link[=gpkg_piirkonnale_polygoonide_lisamine]{gpkg_piirkonnale_polygoonide_lisamine()}},\code{\link[=gpkg_sellest_alustame_gpkg_loomist]{gpkg_sellest_alustame_gpkg_loomist()}}
+\code{\link[sf:st_read]{sf::st_read()}}, \code{\link[sf:st_write]{sf::write_sf()}},\code{\link[sf:st_transform]{sf::st_transform()}},\code{\link[=gpkg_piirkonnale_ruudustike_lisamine]{gpkg_piirkonnale_ruudustike_lisamine()}} ,\code{\link[=gpkg_piirkonnale_polygoonide_lisamine]{gpkg_piirkonnale_polygoonide_lisamine()}},\code{\link[=gpkg_sellest_alustame_gpkg_loomist]{gpkg_sellest_alustame_gpkg_loomist()}},\code{\link[=gpkg_piirkonnale_joonte_lisamine]{gpkg_piirkonnale_joonte_lisamine()}},\code{\link[=gpkg_piirkonnale_punktide_lisamine]{gpkg_piirkonnale_punktide_lisamine()}}
 }
 \keyword{EPSG:3301}
 \keyword{GPKG,}

+ 1 - 1
man/gpkg_sellest_alustame_gpkg_loomist.Rd

@@ -45,7 +45,7 @@ sf::st_geometry(pk) \%>\% graphics::plot(add = T, border = 3, lwd = 0.3, col = "
 }
 }
 \seealso{
-\code{\link[sf:st_read]{sf::st_read()}}, \code{\link[sf:st_write]{sf::write_sf()}},\code{\link[sf:st_transform]{sf::st_transform()}}, \code{\link[=gpkg_piirkonnale_ruudustike_lisamine]{gpkg_piirkonnale_ruudustike_lisamine()}} ,\code{\link[=gpkg_piirkonnale_polygoonide_lisamine]{gpkg_piirkonnale_polygoonide_lisamine()}},\code{\link[=gpkg_sellest_alustame_gpkg_loomist]{gpkg_sellest_alustame_gpkg_loomist()}}
+\code{\link[sf:st_read]{sf::st_read()}}, \code{\link[sf:st_write]{sf::write_sf()}},\code{\link[sf:st_transform]{sf::st_transform()}},\code{\link[=gpkg_piirkonnale_ruudustike_lisamine]{gpkg_piirkonnale_ruudustike_lisamine()}} ,\code{\link[=gpkg_piirkonnale_polygoonide_lisamine]{gpkg_piirkonnale_polygoonide_lisamine()}},\code{\link[=gpkg_sellest_alustame_gpkg_loomist]{gpkg_sellest_alustame_gpkg_loomist()}},\code{\link[=gpkg_piirkonnale_joonte_lisamine]{gpkg_piirkonnale_joonte_lisamine()}},\code{\link[=gpkg_piirkonnale_punktide_lisamine]{gpkg_piirkonnale_punktide_lisamine()}}
 }
 \keyword{EPSG:3301}
 \keyword{GPKG,}