Forráskód Böngészése

Lisatud 'minu_teed_riigiteed_valjapaasud'.

Ardo Kubjas 5 éve
szülő
commit
a8fbefe3e5

+ 1 - 0
NAMESPACE

@@ -15,6 +15,7 @@ export(minu_teed_eesti)
 export(minu_teed_loomine)
 export(minu_teed_muud_teed)
 export(minu_teed_riigiteed)
+export(minu_teed_riigiteed_valjapaasud)
 export(osm_shp)
 export(teeregister_teed)
 export(teeregister_wfs)

+ 1 - 1
R/ajutised_muutujad.R

@@ -8,7 +8,7 @@ ajutised_muutujad <- function(conf) {
   ## Defineerime ajutised failid ja muutujad.
   tmp_dir <- tempdir() # ajutine kataloog
   obj <- "demo"
-  l[["tmp_gpkg_file"]] <- sprintf("%s/%s.gpkg", tmp_dir, obj) # ajutine gpkg fail
+  l[["tmp_gpkg_file"]] <- tmp_gpkg_file <- sprintf("%s/%s.gpkg", tmp_dir, obj) # ajutine gpkg fail
   conf$gpkg_home <- tmp_dir
   conf$gpkg_file <- obj
   conf$primary_key <- "id"

+ 101 - 0
R/minu_teed_riigiteed_valjapaasud.R

@@ -0,0 +1,101 @@
+#' Riigiteedevõrgu väljapääsupunktide leidmine
+#'
+#' 'Minu teed' andmestikest riigiteede väljapääsupunktide leidmine.
+#'
+#' @param conf A list() of configuration variables. Default values \code{\link[ruut]{get_config}}.
+#' @return No output.
+#' @seealso [ruut::get_config()], [ruut::copy_shp_to_db()], [estmap::minu_teed_riigiteed()], [estmap::minu_teed_muud_teed()], [estmap::minu_teed_eesti()], [estmap::minu_teed_riigiteed_valjapaasud()]
+#' @keywords postgis
+#' @export
+#' @examples
+#' \dontrun{
+#'
+#' conf <- ruut::get_config()
+#' minu_teed_riigiteed_valjapaasud(conf = conf)
+#' }
+minu_teed_riigiteed_valjapaasud <- function(conf = NULL) {
+  ## --------------------- muutujad ja teisendused -----------------------------
+  vars <- ajutised_muutujad(conf = conf)
+  conf <- vars$conf
+
+  # conf$schema <- "minu_teed"
+  # conf$table <- "zzz"
+  # output <- ruut::construct_to_gpkg_output_postgres_str(conf = conf, geometry_field = "geom")
+
+  ## -------- 1.1 Kontrollime andmebaasis vajalike tabelite olemasolu ----------
+  tbl_names <- ruut::db_schema_tablenames(conf = conf)
+  if (!all(c("teedevork_riigiteed", "teedevork_kt_p", "teedevork_kt_numbrita_p") %in% tbl_names)) {
+    cat("\n------------------\nPuuduvad vajalikud andmebaasitabelid.\n")
+    return(NULL)
+  }
+
+  ## -------------- 1.1 Muude teede lõikumispunkt riigiteedega -----------------
+  # ruut::qgis_algorithm_search_by_word("intersections")
+  algorithm <- "native:lineintersections"
+  # ruut::qgis_show_help(algorithm = algorithm)
+  conf$schema <- "minu_teed"
+  conf$table <- "teedevork_kt"
+  input <- ruut::construct_to_gpkg_output_postgres_str(
+    conf = conf, geometry_type = "MultiLineString", srid = 3301,
+    checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geom"
+  )
+  conf$schema <- "minu_teed"
+  conf$table <- "teedevork_riigiteed"
+  intersect <- ruut::construct_to_gpkg_output_postgres_str(
+    conf = conf, geometry_type = "MultiLineString", srid = 3301,
+    checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geom"
+  )
+  output <- vars$tmp_gpkg_file_output_1
+  cmd <- sprintf("qgis_process run %s  --INPUT='%s' --INPUT_FIELDS='tyyp' --INTERSECT='%s' --INTERSECT_FIELDS='id' --INTERSECT_FIELDS='tyyp_t' --INTERSECT_FIELDS='tee' --INTERSECT_FIELDS='nimetus' --INTERSECT_FIELDS_PREFIX=\"\" --OUTPUT='%s' ", algorithm, input, intersect, output)
+  system(cmd)
+  cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
+  ## ------------ 1.2 Numbrita teede lõikumispunkt riigiteedega ----------------
+  # ruut::qgis_algorithm_search_by_word("intersections")
+  algorithm <- "native:lineintersections"
+  # ruut::qgis_show_help(algorithm = algorithm)
+  conf$schema <- "minu_teed"
+  conf$table <- "teedevork_kt_numbrita"
+  input <- ruut::construct_to_gpkg_output_postgres_str(
+    conf = conf, geometry_type = "MultiLineString", srid = 3301,
+    checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geom"
+  )
+  conf$schema <- "minu_teed"
+  conf$table <- "teedevork_riigiteed"
+  intersect <- ruut::construct_to_gpkg_output_postgres_str(
+    conf = conf, geometry_type = "MultiLineString", srid = 3301,
+    checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geom"
+  )
+  output <- vars$tmp_gpkg_file_output_2
+  cmd <- sprintf("qgis_process run %s  --INPUT='%s' --INPUT_FIELDS='tyyp' --INTERSECT='%s' --INTERSECT_FIELDS='id' --INTERSECT_FIELDS='tyyp_t' --INTERSECT_FIELDS='tee' --INTERSECT_FIELDS='nimetus' --INTERSECT_FIELDS_PREFIX=\"\" --OUTPUT='%s' ", algorithm, input, intersect, output)
+  system(cmd)
+  cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
+
+  ## --------------------- 1.3 Ühendame lõikepunktid ---------------------------
+  # ruut::qgis_algorithm_search_by_word("merge")
+  algorithm <- "native:mergevectorlayers"
+  # ruut::qgis_show_help(algorithm = algorithm)
+  layer_1 <- vars$tmp_gpkg_file_input_1
+  layer_2 <- vars$tmp_gpkg_file_input_2
+  output <- vars$tmp_gpkg_file_output_3
+  cmd <- sprintf("qgis_process run native:mergevectorlayers --CRS='epsg:3301' --LAYERS='%s'  --LAYERS='%s' --OUTPUT='%s' ", layer_1, layer_2, output)
+  system(cmd)
+  cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
+
+  ## ------------------ 1.4 Kustutame ebaolulised väljad -----------------------
+  # ruut::qgis_algorithm_search_by_word("delete")
+  algorithm <- "native:deletecolumn"
+  # ruut::qgis_show_help(algorithm = algorithm)
+  input <- vars$tmp_gpkg_file_input_3
+  output <- vars$tmp_gpkg_file_output_4
+  cmd <- sprintf("qgis_process run %s  --COLUMN='id' --COLUMN='layer' --COLUMN='path' --INPUT='%s' --OUTPUT='%s' ", algorithm, input, output)
+  system(cmd)
+  cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
+
+  ## ------------------ 1.5 Copy temp gpkg file to postgis ---------------------
+  conf$schema <- "minu_teed"
+  conf$table <- "teedevork_riigiteed_exits"
+  PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
+  cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=id -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, vars$tmp_gpkg_file, vars$layer_4, "POINT", conf$schema, conf$table)
+  system(cmd)
+  cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
+}

+ 28 - 0
man/minu_teed_riigiteed_valjapaasud.Rd

@@ -0,0 +1,28 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/minu_teed_riigiteed_valjapaasud.R
+\name{minu_teed_riigiteed_valjapaasud}
+\alias{minu_teed_riigiteed_valjapaasud}
+\title{Riigiteedevõrgu väljapääsupunktide leidmine}
+\usage{
+minu_teed_riigiteed_valjapaasud(conf = NULL)
+}
+\arguments{
+\item{conf}{A list() of configuration variables. Default values \code{\link[ruut]{get_config}}.}
+}
+\value{
+No output.
+}
+\description{
+'Minu teed' andmestikest riigiteede väljapääsupunktide leidmine.
+}
+\examples{
+\dontrun{
+
+conf <- ruut::get_config()
+minu_teed_riigiteed_valjapaasud(conf = conf)
+}
+}
+\seealso{
+\code{\link[ruut:get_config]{ruut::get_config()}}, \code{\link[ruut:copy_shp_to_db]{ruut::copy_shp_to_db()}}, \code{\link[=minu_teed_riigiteed]{minu_teed_riigiteed()}}, \code{\link[=minu_teed_muud_teed]{minu_teed_muud_teed()}}, \code{\link[=minu_teed_eesti]{minu_teed_eesti()}}, \code{\link[=minu_teed_riigiteed_valjapaasud]{minu_teed_riigiteed_valjapaasud()}}
+}
+\keyword{postgis}