|
|
@@ -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()]
|
|
|
+#' @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()]
|
|
|
#' @keywords GPKG, boundary box, EPSG:3301
|
|
|
#' @export
|
|
|
#' @examples
|
|
|
@@ -16,7 +16,7 @@
|
|
|
#'
|
|
|
#' # read geojson from string:
|
|
|
#' geojson_txt <- paste('{"type":"MultiPoint","coordinates":[[658300,6474800],
|
|
|
-#' [658300,6475000],[658400,6475100],[658600,6475000],[658600,6474800],
|
|
|
+#' [658300,6475000],[658700,6476000],[659600,6475000],[659600,6474800],
|
|
|
#' [658300,6474800]]}')
|
|
|
#' x <- sf::read_sf(geojson_txt) %>% sf::st_cast("POLYGON")
|
|
|
#' sf::st_crs(x) <- 3301
|
|
|
@@ -26,22 +26,16 @@
|
|
|
#' gpkg_home <- "/tmp"
|
|
|
#' obj <- "marja"
|
|
|
#'
|
|
|
-#' sp <- gpkg_sellest_alustame_gpkg_loomist(pk = x, obj = obj, gpkg_home = gpkg_home)
|
|
|
-#' sf::st_geometry(sp) %>% graphics::plot()
|
|
|
-#'
|
|
|
+#' gpkg_sellest_alustame_gpkg_loomist(pk = x, obj = obj, gpkg_home = gpkg_home)
|
|
|
#' # Layers list.
|
|
|
#' dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
|
|
|
#' sf::st_layers(dsn = dsn)
|
|
|
+#' bb <- sf::read_sf(dsn = dsn, layer = "bb")
|
|
|
+#' pk <- sf::read_sf(dsn = dsn, layer = "piir")
|
|
|
+#' sf::st_geometry(bb) %>% graphics::plot(border = 3, lwd = 0.3, col = "#d3fffb")
|
|
|
+#' sf::st_geometry(pk) %>% graphics::plot(add = T, border = 3, lwd = 0.3, col = "#a3fffb")
|
|
|
#' }
|
|
|
gpkg_sellest_alustame_gpkg_loomist <- function(pk = NULL, obj = NULL, gpkg_home = "/tmp") {
|
|
|
- # ## ------------------ test -----------------
|
|
|
- # geojson_txt <- paste('{"type":"MultiPoint","coordinates":[[658300,6474800],[658300,6475000],[658700,6476000],[659600,6475000],[659600,6474800],[658300,6474800]]}')
|
|
|
- # x <- sf::read_sf(geojson_txt) %>% sf::st_cast("POLYGON")
|
|
|
- # sf::st_crs(x) <- 3301
|
|
|
- # sf::st_geometry(x) %>% graphics::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
|
|
|
@@ -63,23 +57,19 @@ gpkg_sellest_alustame_gpkg_loomist <- function(pk = NULL, obj = NULL, 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
|
|
|
+ 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'
|
|
|
+ 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"
|
|
|
@@ -96,11 +86,6 @@ gpkg_sellest_alustame_gpkg_loomist <- function(pk = NULL, obj = NULL, gpkg_home
|
|
|
OUTPUT = output
|
|
|
# .quiet = TRUE
|
|
|
)
|
|
|
- result
|
|
|
- bb <- sf::read_sf(dsn = dsn, layer = conf$table)
|
|
|
- # Test plot.
|
|
|
- sf::st_geometry(bb) %>% graphics::plot(border = 3, lwd = 0.3, col = "#d3fffb")
|
|
|
- sf::st_geometry(pk) %>% graphics::plot(add = T, border = 3, lwd = 0.3, col = "#a3fffb")
|
|
|
# Layers list
|
|
|
sf::st_layers(dsn = dsn)
|
|
|
}
|