00_algandmed.R 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. #' Andmebaasi loomine ja ühendamine
  2. #'
  3. system("ogr2ogr --long-usage")
  4. str <- " { 'FIELD' : 'code', 'INPUT' : '/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/mikihiir.gpkg|layername=piir_landuse_a', 'OPERATOR' : 0, 'OUTPUT' : 'ogr:dbname=\'/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa/mikihiir.gpkg\' table=\"piir_landuse_a_residential\" (geom)', 'VALUE' : '7203' }"
  5. ruut::construct_qgis_output_result_to_better_format(str = str)
  6. source("functions/delete_existing_variables.R")
  7. library(dplyr)
  8. # library(qgisprocess)
  9. library(sf)
  10. par(oma = c(0, 0, 0, 0)) # outer margin
  11. par(mar = c(0, 0, 0, 0) + 0.0)
  12. # Uue schema loomine
  13. conf <- ruut::get_config()
  14. conf$schema <- "xxx_artikkel_210127"
  15. ruut::db_create_new_schema(conf = conf)
  16. ## --------------- testi algus 'ruudu' funktsioonidele ------------------
  17. geojson_txt <- paste('{"type":"MultiPoint","coordinates":[[658300,6474800],[658300,6475000],[658700,6476000],[659600,6475000],[659600,6474800],[658300,6474800]]}')
  18. # read geojson from string:
  19. # geojson_txt <- paste('{"type":"MultiPoint","coordinates":[[658300,6474800],
  20. # [658300,6475000],[658400,6475100],[658600,6475000],[658600,6474800],
  21. # [658300,6474800]]}')
  22. x <- sf::read_sf(geojson_txt) %>% sf::st_cast("POLYGON")
  23. sf::st_crs(x) <- 3301
  24. x
  25. sf::st_geometry(x) %>% graphics::plot()
  26. gpkg_home <- "/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa"
  27. obj <- "marja"
  28. dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
  29. ## GPKG loomine
  30. ruut::gpkg_sellest_alustame_gpkg_loomist(pk = x, obj = obj, gpkg_home = gpkg_home)
  31. # Layers list
  32. sf::st_layers(dsn = dsn)
  33. ## GPKG ruudustike lisamine
  34. ruut::gpkg_piirkonnale_ruudustike_lisamine(obj = obj, gpkg_home = gpkg_home)
  35. ## GPKG polügoonide lisamine
  36. ruut::gpkg_piirkonnale_polygoonide_lisamine(obj = obj, gpkg_home = gpkg_home)
  37. ruut::gpkg_teisendame_polygoone(obj = obj, gpkg_home = gpkg_home)
  38. ## GPKG joonte lisamine
  39. ruut::gpkg_piirkonnale_joonte_lisamine(obj = obj, gpkg_home = gpkg_home)
  40. ruut::gpkg_teisendame_jooni(obj = obj, gpkg_home = gpkg_home)
  41. # GPKG punktide lisamine
  42. ruut::gpkg_piirkonnale_punktide_lisamine(obj = obj, gpkg_home = gpkg_home)
  43. ruut::gpkg_teisendame_punkte(obj = obj, gpkg_home = gpkg_home)
  44. # Layers list
  45. sf::st_layers(dsn = dsn)
  46. ## Loeme andmebaasist piiri ja piirikasti.
  47. # Layers list
  48. gpkg_info <- sf::st_layers(dsn = dsn)
  49. layer_names <- gpkg_info$name
  50. for (layer_name in layer_names) {
  51. cat(sprintf("\nFailist %s laeti alla: %s", dsn, layer_name))
  52. assign(layer_name, sf::read_sf(dsn = dsn, layer = layer_name))
  53. }
  54. ## Test plot
  55. sf::st_geometry(bb_epk02t_grid) %>% graphics::plot(border = 0, lwd = 0.3, col = "#ffffff") # valge
  56. sf::st_geometry(bb) %>% graphics::plot(add = T, border = 3, lwd = 0.3, col = "#d3fffb")
  57. sf::st_geometry(piir) %>% graphics::plot(add = T, border = 3, lwd = 0.3, col = "#a3fffb")
  58. sf::st_geometry(bb_epk02t_grid) %>% graphics::plot(border = 0, lwd = 0.3, col = "#ffffff") # valge
  59. sf::st_geometry(bb) %>% graphics::plot(add = T, border = 3, lwd = 0.3, col = "#d3fffb")
  60. sf::st_geometry(bb_epk02t_grid) %>% graphics::plot(add = T, border = 3, lwd = 0.3)
  61. sf::st_geometry(bb_shp_katastriyksus) %>% graphics::plot(add = T, border = 2, lwd = 0.3)
  62. sf::st_geometry(bb_epk02t_grid) %>% graphics::plot(border = 0, lwd = 0.3, col = "#ffffff") # valge
  63. sf::st_geometry(piir) %>% graphics::plot(add = T, border = 3, lwd = 0.3, col = "#d3fffb")
  64. sf::st_geometry(bb_epk02t_grid) %>% graphics::plot(add = T, border = 3, lwd = 0.3)
  65. sf::st_geometry(piir_shp_katastriyksus) %>% graphics::plot(add = T, border = 2, lwd = 0.3)
  66. # Layers list
  67. sf::st_layers(dsn = dsn)
  68. y <- unique(as.data.frame(sf::read_sf(dsn = dsn, layer = "piir_aadressandmed", as_tibble = T))[, c("adob_liik"), drop = F])
  69. nrow(y)
  70. y$adob_liik
  71. ## ------------------ testi lõpp -------------------
  72. # Objektide nimekiri
  73. objektid <- c("valga", "matsalu", "lahemaa")
  74. # ----------------- Loe piirkond (objekt) -----------------
  75. ## Piirkonna 'pk'
  76. conn <- ruut::db_connect(conf = conf)
  77. conf <- ruut::get_config()
  78. ## Valitud objekti indeks
  79. i <- 1
  80. conf$schema <- "xxx_artikkel_210127"
  81. source("geomeetria_teisendused/pk_piir.R")
  82. gpkg_home <- "/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa"
  83. for (i in 1:length(objektid)) {
  84. # ## ---------------- 1. piirkonna piir ------------------
  85. ## Muutujad: pk - piirkond
  86. obj <- objektid[i]
  87. x <- pk_piir(obj = obj)
  88. sf::st_geometry(x) %>% plot()
  89. gpkg_home <- "/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa"
  90. ## GPKG loomine
  91. ruut::gpkg_sellest_alustame_gpkg_loomist(pk = x, obj = obj, gpkg_home = gpkg_home)
  92. # Layers list
  93. dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
  94. sf::st_layers(dsn = dsn)
  95. ## GPKG ruudustike lisamine
  96. ruut::gpkg_piirkonnale_ruudustike_lisamine(obj = obj, gpkg_home = gpkg_home)
  97. ## GPKG polügoonide lisamine
  98. ruut::gpkg_piirkonnale_polygoonide_lisamine(obj = obj, gpkg_home = gpkg_home)
  99. ## GPKG joonte lisamine
  100. ruut::gpkg_piirkonnale_joonte_lisamine(obj = obj, gpkg_home = gpkg_home)
  101. # GPKG punktide lisamine
  102. ruut::gpkg_piirkonnale_punktide_lisamine(obj = obj, gpkg_home = gpkg_home)
  103. }
  104. obj = obj; pk = pk; gpkg_home = gpkg_home; obj_only = TRUE
  105. m <- piirkonnale_maatriksi_loomine(obj = obj, pk = pk, gpkg_home = gpkg_home, obj_only = TRUE)
  106. m_filename <- sprintf("minu_%s_maatriks.csv", obj)
  107. write.table(m, file = m_filename, sep = ";", row.names = T)
  108. y <- read.table(m_filename, header = TRUE, sep = ";")
  109. unlink(m_filename) # Kustuta fail
  110. conn <- ruut::db_connect()
  111. q <- sprintf("SELECT * FROM %s.%s_bb", "xxx_artikkel_210127", obj)
  112. cat(sprintf("\n-----------------\n%s\n\n", q))
  113. pk_bb_3301 <- sf::st_read(conn, query = q)
  114. sf::st_geometry(pk) %>% plot()
  115. sf::st_geometry(pk_bb_3301) %>% plot(add = T)
  116. ## 3. piirkonna epk10t ruudud
  117. # 3.1 kogu ruutvõrgustik
  118. epk10t_grid <- pk_epk10t_grid(obj = objektid[i])
  119. # 3.1 ainult piirkonna ruutvõrgustik
  120. epk10t <- pk_epk10t(obj = objektid[i])
  121. sf::st_geometry(epk10t_grid) %>% plot(border = 3, lwd = 0.3, col = "#d3fffb")
  122. sf::st_geometry(epk10t) %>% plot(add = T, border = 3, lwd = 0.3, col = "#a3fffb")
  123. sf::st_geometry(pk) %>% plot(add = T)
  124. # 4 piirkonna epk10t kaardiruutude nimekiri ortofotode allalaadimiseks
  125. epk10t_nr <- pk_epk10t_ruutude_nimekiri(objektid[i])
  126. ## 5. piirkonna epk2t ruudud
  127. # 3.1 kogu ruutvõrgustik
  128. epk2t_grid <- pk_epk2t_grid(obj = objektid[i])
  129. # 3.1 ainult piirkonna ruutvõrgustik
  130. epk2t <- pk_epk2t(obj = objektid[i])
  131. sf::st_geometry(epk2t_grid) %>% plot(border = 3, lwd = 0.3, col = "#d3fffb")
  132. sf::st_geometry(epk2t) %>% plot(add = T, border = 3, lwd = 0.3, col = "#a3fffb")
  133. sf::st_geometry(pk) %>% plot(add = T)
  134. ## -------------- Muud ruudustikega seotud demo joonised ----------------
  135. ## 2. Kaardiruudustiku epk200t (100x100km) piirikast
  136. conn <- ruut::db_connect()
  137. q <- sprintf("SELECT * FROM %s.%s", "maaamet", "epk200t_bb")
  138. cat(sprintf("\n-----------------\n%s\n\n", q))
  139. epk200t_bb <- sf::st_read(conn, query = q)
  140. sf::st_geometry(epk200t_bb) %>% plot()
  141. ## 3. Kaardiruudustiku epk200t (100x100km)
  142. conn <- ruut::db_connect()
  143. q <- sprintf("SELECT * FROM %s.%s", "maaamet", "epk200t")
  144. cat(sprintf("\n-----------------\n%s\n\n", q))
  145. epk200t <- sf::st_read(conn, query = q)
  146. sf::st_geometry(epk200t) %>% plot(add = T, border = 3, lwd = 0.3, col = "#d3fffb")