| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #' 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"))
- }
|