#' Funktsioon: piirkonna EPSG:3301 piirikasti sisse ruudustiku genereerimine #' Piirikastis paiknevate 1x1 km ruudustike leidmine. Fail salvestatakse #' andmebaasi laiendiga 'piirkond_epk2t_grid'. create_epk2t_grid_to_pk_bb <- function(obj) { # obj - objekti nimetus (näiteks: valga) ## a. ruutvõrgustiku konstrueerimine # ruut::qgis_algorithm_search_by_word(str = "joinattributesbylocation") algorithm <- "native:joinattributesbylocation" # cat(qgisprocess::qgis_show_help(algorithm = algorithm)) result <- qgisprocess::qgis_run_algorithm( algorithm = algorithm, DISCARD_NONMATCHING = 1, INPUT = 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable password=\'osm\' key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"(SELECT * FROM maaamet.epk2t_grid )\" (geometry)', JOIN = sprintf('postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable password=\'osm\' key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"(SELECT * FROM xxx_artikkel_210127.%s_bb )\" (geometry)', obj), JOIN_FIELDS = c("id"), METHOD = 0, PREDICATE = c(0, 1), PREFIX = "", OUTPUT = qgisprocess::qgis_tmp_vector(), NON_MATCHING = qgisprocess::qgis_tmp_vector(), .quiet = TRUE ) result ## !!!!!!!! NB !!!!!!!! ## Siin on 2 objekti väljundiks 'OUTPUT' ja 'NON_MATCHING'. Peame valima ## ainult ühe ja teisendama. pk_grid <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT")) # sf::st_geometry(pk_grid) %>% plot() # pk_grid_non <- sf::read_sf(qgisprocess::qgis_output(result, "NON_MATCHING")) # sf::st_geometry(pk_grid_non) %>% plot() ## b. kopeerimine andmebaasi laiendiga '_epk10t_grid' conf <- ruut::get_config() conf$table <- sprintf("%s_epk2t_grid", obj) conf$schema <- "xxx_artikkel_210127" result$NON_MATCHING <- NULL result$JOINED_COUNT <- NULL ruut::copy_qgis_object_to_db(x = result, conf = conf, geometry_type = "PROMOTE_TO_MULTI") cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm)) } # create_epk2t_grid_to_pk_bb()