01_funktsioonid.R 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. #' Funktsioonid
  2. #'
  3. # -----------------------------------------------------------------------
  4. ## Funktsioon: piirkonna piir
  5. pk_piir <- function(obj) {
  6. # obj - objekti nimetus (näiteks: valga)
  7. conn <- ruut::db_connect()
  8. q <- sprintf("SELECT * FROM %s.%s_piir", conf$schema, tolower(obj))
  9. cat(sprintf("\n-----------------\n%s\n\n", q))
  10. sf::st_read(conn, query = q)
  11. }
  12. # pk_piir(obj = "valga")
  13. # -----------------------------------------------------------------------
  14. ## Funktsioon: piirkonna piiri katvate epk10t (5x5km) ruutude loomine
  15. create_pk_epk10t <- function(obj) {
  16. # obj - objekti nimetus (näiteks: valga)
  17. # ruut::qgis_algorithm_search_by_word(str = "extract")
  18. algorithm <- "native:extractbylocation"
  19. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  20. result <- qgisprocess::qgis_run_algorithm(
  21. algorithm = algorithm,
  22. INPUT = 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"maaamet\".\"epk10t\" (geometry)',
  23. INTERSECT = sprintf('postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'ogc_fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"xxx_artikkel_210127\".\"%s_piir\" (geometry)', obj),
  24. OUTPUT = qgisprocess::qgis_tmp_vector(),
  25. PREDICATE = c(0, 1),
  26. .quiet = TRUE
  27. )
  28. result
  29. }
  30. # create_pk_epk10t(obj = objektid[i])
  31. ## Funktsioon: piirkonna piiri katvate epk10t (5x5km) ruutude lugemine
  32. pk_epk10t <- function(obj) {
  33. # obj - objekti nimetus (näiteks: valga)
  34. conn <- ruut::db_connect()
  35. q <- sprintf("SELECT * FROM %s.%s_epk10t", conf$schema, tolower(obj))
  36. cat(sprintf("\n-----------------\n%s\n\n", q))
  37. sf::st_read(conn, query = q)
  38. }
  39. # pk_epk10t(obj = "valga")
  40. # -----------------------------------------------------------------------
  41. ## Funktsioon: epk200t (100x100km) kaardiruutudele piirikasti (boundary box) loomine
  42. create_epk200t_bb <- function() {
  43. # ruut::qgis_algorithm_search_by_word(str = "bounding")
  44. algorithm <- "qgis:minimumboundinggeometry"
  45. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  46. result <- qgisprocess::qgis_run_algorithm(
  47. algorithm = algorithm,
  48. FIELD = "",
  49. INPUT = 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'fid\' srid=4326 type=Polygon checkPrimaryKeyUnicity=\'1\' table=\"maaamet\".\"epk200t\" (geometry)',
  50. TYPE = 3,
  51. OUTPUT = qgisprocess::qgis_tmp_vector(),
  52. .quiet = TRUE
  53. )
  54. # result
  55. epk200t_bb <- sf::read_sf(qgis_output(result, "OUTPUT"))
  56. sf::st_geometry(epk200t_bb) %>% plot()
  57. conf <- ruut::get_config()
  58. conf$table <- "epk200t_bb"
  59. conf$schema <- "maaamet"
  60. ruut::copy_qgis_object_to_db(x = result, conf = conf, geometry_type = "POLYGON")
  61. cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
  62. # result
  63. }
  64. # ---------------------------------------------------------------------
  65. ## Grdid genereerimine.
  66. #' Funktsioonid gnereerivad kogu Eestit (s.o maaameti 100x100 km kogu Eestit katvate
  67. #' ruudstikega määratud ala). Ruutvõrgustik genereeritakse ruutudele 1x1, 5x5 ja
  68. #' 100x100 km.
  69. # 1. 100x100 km ruudustik
  70. create_epk200t_grid <- function() {
  71. # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
  72. algorithm <- "grass7:v.mkgrid"
  73. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  74. result <- qgisprocess::qgis_run_algorithm(
  75. algorithm = algorithm,
  76. "-h" = 0,
  77. "-p" = 0,
  78. GRASS_OUTPUT_TYPE_PARAMETER = 0,
  79. GRASS_REGION_PARAMETER = "",
  80. GRASS_VECTOR_DSCO = "",
  81. GRASS_VECTOR_EXPORT_NOCAT = 0,
  82. GRASS_VECTOR_LCO = "",
  83. angle = 0,
  84. box = "100000,100000",
  85. breaks = 0,
  86. coordinates = "300000,6300000 [EPSG:3301]",
  87. grid = "4,5",
  88. map = "tmp/epk200t_grrid.gpkg",
  89. position = 0,
  90. .quiet = TRUE
  91. )
  92. # result
  93. epk200t_grid <- sf::read_sf(qgis_output(result, "map"))
  94. sf::st_geometry(epk200t_grid) %>% plot()
  95. conf <- ruut::get_config()
  96. conf$table <- "epk200t_grid"
  97. conf$schema <- "maaamet"
  98. ruut::copy_qgis_object_to_db(
  99. x = result, conf = conf, geometry_type = "POLYGON",
  100. crs_source = "EPSG:3301"
  101. )
  102. cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
  103. # result
  104. }
  105. # 2. 5x5 km ruudustik
  106. create_epk10t_grid <- function() {
  107. # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
  108. algorithm <- "grass7:v.mkgrid"
  109. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  110. result <- qgisprocess::qgis_run_algorithm(
  111. algorithm = algorithm,
  112. "-h" = 0,
  113. "-p" = 0,
  114. GRASS_OUTPUT_TYPE_PARAMETER = 0,
  115. GRASS_REGION_PARAMETER = "",
  116. GRASS_VECTOR_DSCO = "",
  117. GRASS_VECTOR_EXPORT_NOCAT = 0,
  118. GRASS_VECTOR_LCO = "",
  119. angle = 0,
  120. box = "5000,5000", # 5x5 km
  121. breaks = 0,
  122. coordinates = "300000,6300000 [EPSG:3301]",
  123. grid = "80,100", # ridade ja veergude arv
  124. map = "tmp/epk10t_grrid.gpkg",
  125. position = 0,
  126. .quiet = TRUE
  127. )
  128. # result
  129. epk10t_grid <- sf::read_sf(qgis_output(result, "map"))
  130. sf::st_geometry(epk10t_grid) %>% plot()
  131. conf <- ruut::get_config()
  132. conf$table <- "epk10t_grid"
  133. conf$schema <- "maaamet"
  134. ruut::copy_qgis_object_to_db(
  135. x = result, conf = conf, geometry_type = "POLYGON",
  136. crs_source = "EPSG:3301"
  137. )
  138. cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
  139. # result
  140. }
  141. # 3. 1 x 1 km ruudustik
  142. create_epk2t_grid <- function() {
  143. # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
  144. algorithm <- "grass7:v.mkgrid"
  145. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  146. result <- qgisprocess::qgis_run_algorithm(
  147. algorithm = algorithm,
  148. "-h" = 0,
  149. "-p" = 0,
  150. GRASS_OUTPUT_TYPE_PARAMETER = 0,
  151. GRASS_REGION_PARAMETER = "",
  152. GRASS_VECTOR_DSCO = "",
  153. GRASS_VECTOR_EXPORT_NOCAT = 0,
  154. GRASS_VECTOR_LCO = "",
  155. angle = 0,
  156. box = "1000,1000",
  157. breaks = 0,
  158. coordinates = "300000,6300000 [EPSG:3301]",
  159. grid = "400,500",
  160. map = "tmp/epk2t_grrid.gpkg",
  161. position = 0,
  162. .quiet = TRUE
  163. )
  164. # result
  165. # epk2t_grid <- sf::read_sf(qgis_output(result, "map"))
  166. # sf::st_geometry(epk2t_grid) %>% plot()
  167. conf <- ruut::get_config()
  168. conf$table <- "epk2t_grid"
  169. conf$schema <- "maaamet"
  170. ruut::copy_qgis_object_to_db(
  171. x = result, conf = conf, geometry_type = "POLYGON",
  172. crs_source = "EPSG:3301"
  173. )
  174. cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
  175. # result
  176. }
  177. # 3. 100 x 100 m ruudustik
  178. create_epk02t_grid <- function() {
  179. # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
  180. algorithm <- "grass7:v.mkgrid"
  181. # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
  182. result <- qgisprocess::qgis_run_algorithm(
  183. algorithm = algorithm,
  184. "-h" = 0,
  185. "-p" = 0,
  186. GRASS_OUTPUT_TYPE_PARAMETER = 0,
  187. GRASS_REGION_PARAMETER = "",
  188. GRASS_VECTOR_DSCO = "",
  189. GRASS_VECTOR_EXPORT_NOCAT = 0,
  190. GRASS_VECTOR_LCO = "",
  191. angle = 0,
  192. box = "100,100",
  193. breaks = 0,
  194. coordinates = "300000,6300000 [EPSG:3301]",
  195. grid = "4000,5000",
  196. map = "tmp/epk02t_grrid.gpkg",
  197. position = 0,
  198. .quiet = TRUE
  199. )
  200. # result
  201. # epk02t_grid <- sf::read_sf(qgis_output(result, "map"))
  202. # sf::st_geometry(epk02t_grid) %>% plot()
  203. conf <- ruut::get_config()
  204. conf$table <- "epk02t_grid"
  205. conf$schema <- "maaamet"
  206. ruut::copy_qgis_object_to_db(
  207. x = result, conf = conf, geometry_type = "POLYGON",
  208. crs_source = "EPSG:3301"
  209. )
  210. cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
  211. # result
  212. }