|
@@ -0,0 +1,48 @@
|
|
|
|
|
+#' Piirkonnale piirikast leidmine
|
|
|
|
|
+#'
|
|
|
|
|
+#' Geomeetrilise joonega piiratud piirkonnale piirikast leidmine, nii et see asuks koordinaatsüsteemi 'EPSG:3301' 100 meetri joontel ja kujund peab asuma täielikult piirikasti sees. Selline piirikast on vajalik 100x100 meetri suuruste ruutude leidmiseks.
|
|
|
|
|
+#'
|
|
|
|
|
+#' @param pk Piirkonna geomeetriline joon.
|
|
|
|
|
+#' @return Polygon.
|
|
|
|
|
+#' @seealso [ruut::get_config()]
|
|
|
|
|
+#' @keywords boundary box, EPSG:3301
|
|
|
|
|
+#' @export
|
|
|
|
|
+#' @examples
|
|
|
|
|
+#' \dontrun{
|
|
|
|
|
+#'
|
|
|
|
|
+#' pk_grid <- piirkonna_piirikast_100_meetri_joontel(pk = pk)
|
|
|
|
|
+#' sf::st_geometry(pk_grid) %>% plot()
|
|
|
|
|
+#' }
|
|
|
|
|
+piirkonna_piirikast_100_meetri_joontel <- function(pk = NULL) {
|
|
|
|
|
+ if (is.null(pk) || !sf::st_is_valid(pk)) {
|
|
|
|
|
+ cat("\nPalun kontrolli geomeetrilise kujundi õigsust.\n")
|
|
|
|
|
+ return(FALSE)
|
|
|
|
|
+ }
|
|
|
|
|
+ # teisendame projektsiooni
|
|
|
|
|
+ # sf::st_crs(3301)
|
|
|
|
|
+ pk <- sf::st_transform(pk, 3301)
|
|
|
|
|
+ pk_attributes <- attributes(pk$geometry)
|
|
|
|
|
+ ## konstrueerime EXTENT, HSPACING ja VSPACING väärtused.
|
|
|
|
|
+ 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)
|
|
|
|
|
+
|
|
|
|
|
+ ## -------------------- piirikast ------------------
|
|
|
|
|
+ # 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")
|
|
|
|
|
+ # .quiet = TRUE
|
|
|
|
|
+ )
|
|
|
|
|
+ # result
|
|
|
|
|
+ sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
|
|
|
|
|
+}
|