#' 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()