create_epk2t_grid_to_pk_bb.R 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #' Funktsioon: piirkonna EPSG:3301 piirikasti sisse ruudustiku genereerimine
  2. #' Piirikastis paiknevate 1x1 km ruudustike leidmine. Fail salvestatakse
  3. #' andmebaasi laiendiga 'piirkond_epk2t_grid'.
  4. create_epk2t_grid_to_pk_bb <- function(obj) {
  5. # obj - objekti nimetus (näiteks: valga)
  6. ## a. ruutvõrgustiku konstrueerimine
  7. # ruut::qgis_algorithm_search_by_word(str = "joinattributesbylocation")
  8. algorithm <- "native:joinattributesbylocation"
  9. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  10. result <- qgisprocess::qgis_run_algorithm(
  11. algorithm = algorithm,
  12. DISCARD_NONMATCHING = 1,
  13. 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)',
  14. 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),
  15. JOIN_FIELDS = c("id"),
  16. METHOD = 0,
  17. PREDICATE = c(0, 1),
  18. PREFIX = "",
  19. OUTPUT = qgisprocess::qgis_tmp_vector(),
  20. NON_MATCHING = qgisprocess::qgis_tmp_vector(),
  21. .quiet = TRUE
  22. )
  23. result
  24. ## !!!!!!!! NB !!!!!!!!
  25. ## Siin on 2 objekti väljundiks 'OUTPUT' ja 'NON_MATCHING'. Peame valima
  26. ## ainult ühe ja teisendama.
  27. pk_grid <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
  28. # sf::st_geometry(pk_grid) %>% plot()
  29. # pk_grid_non <- sf::read_sf(qgisprocess::qgis_output(result, "NON_MATCHING"))
  30. # sf::st_geometry(pk_grid_non) %>% plot()
  31. ## b. kopeerimine andmebaasi laiendiga '_epk10t_grid'
  32. conf <- ruut::get_config()
  33. conf$table <- sprintf("%s_epk2t_grid", obj)
  34. conf$schema <- "xxx_artikkel_210127"
  35. result$NON_MATCHING <- NULL
  36. result$JOINED_COUNT <- NULL
  37. ruut::copy_qgis_object_to_db(x = result, conf = conf, geometry_type = "PROMOTE_TO_MULTI")
  38. cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
  39. }
  40. # create_epk2t_grid_to_pk_bb()