| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #' Funktsioon: piirikasti leidmine piirkonnale
- #' Piirikast leitakse 2-astmelisena. Esmalt genereeritakse piirkonna
- #' peale projektsiooniga EPSG:3301 ruutvõrgustik suurusega 500x500 meetrit, seda
- #' arvestusega, et teises etapis leitavast piirikastist ei jääks välja
- #' arvestatav osa 1x1 km ruutusid. Need ruudud saavad hiljem aluseks map algebra
- #' piirkonna maatriksitele. Teises etapis leitakse ruudustikele piirikast,
- #' mis on piirkonna ristiklülikukujuline piirikast projektsioonis EPSG:3301.
- create_boundarybox_3301_to_pk <- function(obj) {
- # obj - objekti nimetus (näiteks: valga)
- input <- sprintf(
- 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable password=\'osm\' key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"xxx_artikkel_210127\".\"%s_piir\" (geometry)',
- obj
- )
- ## a. ruutvõrgustiku konstrueerimine
- # 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 = '25.454305528,26.259893095,59.454118579,59.714621582 [EPSG:4326]',
- EXTENT = input,
- HOVERLAY = 0,
- HSPACING = 500,
- TYPE = 2,
- VOVERLAY = 0,
- VSPACING = 500,
- OUTPUT = qgisprocess::qgis_tmp_vector(),
- .quiet = TRUE
- )
- result
- pk_grid <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
- # sf::st_geometry(pk_grid) %>% plot()
- ## b. ruutvõrgustikule piirikasti leidmine
- # ruut::qgis_algorithm_search_by_word(str = "minimumboundinggeometry")
- algorithm <- "qgis:minimumboundinggeometry"
- # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
- result1 <- qgisprocess::qgis_run_algorithm(
- algorithm = algorithm,
- FIELD = "",
- INPUT = pk_grid,
- TYPE = 3,
- OUTPUT = qgisprocess::qgis_tmp_vector(),
- .quiet = TRUE
- )
- result1
- # pk_grid_bb <- sf::read_sf(qgisprocess::qgis_output(result1, "OUTPUT"))
- # sf::st_geometry(pk_grid_bb) %>% plot()
- ## c. kopeerimine andmebaasi laiendiga '_bb'
- conf <- ruut::get_config()
- conf$table <- sprintf("%s_bb", obj)
- conf$schema <- "xxx_artikkel_210127"
- ruut::copy_qgis_object_to_db(x = result1, conf = conf, geometry_type = "POLYGON", crs_source = "EPSG:3301")
- cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
- }
- # create_boundarybox_3301_to_pk()
|