Преглед изворни кода

Kustutatud estmap-i alla viidud funktsioonid.

Ardo Kubjas пре 5 година
родитељ
комит
63031a936a

+ 66 - 6
00_algandmed.R

@@ -27,12 +27,73 @@ conn <- ruut::db_connect(conf = conf)
 ## Valitud objekti indeks
 i <- 1
 
-## 1. piirkonna piir
-pk <- pk_piir(obj = objektid[i])
-sf::st_geometry(pk) %>% plot()
-## 2. piirkonna 3301 projektsiooniga piirikast
+for (i in 1:length(objektid)) {
+  ## 1. piirkonna piir
+  obj <- objektid[i]
+  pk <- pk_piir(obj = obj)
+  sf::st_geometry(pk) %>% plot()
+  gpkg_home <- "/data/gpkg/artiklid/artikkel_210127_valga_matsalu_lahemaa"
+  dsn <- sprintf("%s/%s.gpkg", gpkg_home, obj)
+  input_layer_name <- "piir"
+  input_layer <- sprintf("%s|layername=%s", dsn, input_layer_name)
+  output_layer_name <- "boundarybox_3301"
+  tmp_gpkg_file <- tempfile(fileext = ".gpkg")
+  # write to gpkg
+  class(pk)
+  sf::write_sf(pk,
+    dsn = dsn,
+    layer = "piir", driver = "gpkg", append = FALSE )
+  # layer_options = c("OVERWRITE=true", "append=FALSE")
+  # ruut::construct_qgis_output_result_to_beter_format()
+
+  ## 2. piirkonna 3301 projektsiooniga piirikast
+  ## 2.1  Esmalt leiame milliset 500x500 meetri ruutudega on objekt kaetud.
+  # 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_layer,
+    HOVERLAY = 0,
+    HSPACING = 500,
+    TYPE = 2,
+    VOVERLAY = 0,
+    VSPACING = 500,
+    OUTPUT = qgisprocess::qgis_tmp_file(ext = ".gpkg"),
+    .quiet = TRUE
+  )
+  result
+  pk_grid <- sf::read_sf(qgisprocess::qgis_output(result, "OUTPUT"))
+  # sf::st_geometry(pk_grid) %>% plot()
+  ## 2.2 Leitud ruutudele leiame piirikasti.
+  algorithm <- "qgis:minimumboundinggeometry"
+  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
+  result1 <- qgisprocess::qgis_run_algorithm(
+    algorithm = algorithm,
+    FIELD = "",
+    INPUT = pk_grid,
+    TYPE = 3,
+    OUTPUT = tmp_gpkg_file,
+    .quiet = TRUE
+  )
+  result1
+  pk_grid_bb <- sf::read_sf(qgisprocess::qgis_output(result1, "OUTPUT"))
+  sf::st_geometry(pk_grid_bb) %>% plot(add =T)
+  system(sprintf("ogr2ogr -f GPKG -overwrite  %s %s -nln %s", dsn, tmp_gpkg_file, output_layer_name))
+}
+
+
+
+
+
+
+
+
+
 conn <- ruut::db_connect()
-q <- sprintf("SELECT * FROM %s.%s_bb", "xxx_artikkel_210127", objektid[i])
+q <- sprintf("SELECT * FROM %s.%s_bb", "xxx_artikkel_210127", obj)
 cat(sprintf("\n-----------------\n%s\n\n", q))
 pk_bb_3301 <- sf::st_read(conn, query = q)
 sf::st_geometry(pk) %>% plot()
@@ -76,4 +137,3 @@ q <- sprintf("SELECT * FROM %s.%s", "maaamet", "epk200t")
 cat(sprintf("\n-----------------\n%s\n\n", q))
 epk200t <- sf::st_read(conn, query = q)
 sf::st_geometry(epk200t) %>% plot(add = T, border = 3, lwd = 0.3, col = "#d3fffb")
-

+ 0 - 74
geomeetria_teisendused/create_epk02t_grid.R

@@ -1,74 +0,0 @@
-#  Võrgustike genereerimine ja salvestamine andmebaasi
-#' Funktsioon gnereerib kogu Eestit katva ruudustike piirikasti
-#' 'maaamet.epk200t_bb' sisse ruutvõrgustiku ruudu suurusega 100x100 m.
-#' Võrgustik salvestatakse andmebaasi nime 'epk02t_grid' alla.
-#' !!!!!!! Võrgustiku genereerimine ja salvestamine andmebaasi
-#' võtab aega üle 12 tunni. Salvestatavate andmete maht ca 5 GB.
-
-create_epk02t_grid <- function() {
-  # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
-  algorithm <- "grass7:v.mkgrid"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  if (!dir.exists("tmp/epk02t_grid")) dir.create("tmp/epk02t_grid", recursive = T)
-  conf <- ruut::get_config()
-  conf$table <- "epk02t_grid"
-  conf$schema <- "maaamet"
-  ## Loe instaleeritud tabelid andmebaasis
-  installed_tables <- ruut::db_schema_tablenames(conf = conf)
-  if (!conf$table %in% installed_tables) {
-    # 1:40
-    for (i in 1:40) {
-      coordinates <- sprintf("300000,6%s0000 [EPSG:3301]", (29 + i))
-      map <- sprintf("tmp/epk02t_grid/%s.gpkg", i)
-      cat(sprintf("\n%s/40 1. coordinates: %s, 2. map: %s", i, coordinates, map))
-      # ------------------
-      result <- qgisprocess::qgis_run_algorithm(
-        algorithm = algorithm,
-        "-h" = 0,
-        "-p" = 0,
-        GRASS_OUTPUT_TYPE_PARAMETER = 3,
-        GRASS_REGION_PARAMETER = "300000,800000,6320000,6700000  [EPSG:3301]",
-        GRASS_VECTOR_DSCO = "",
-        GRASS_VECTOR_EXPORT_NOCAT = 0,
-        GRASS_VECTOR_LCO = "",
-        angle = 0,
-        box = "100,100",
-        breaks = 0,
-        coordinates = coordinates,
-        grid = "100,5000", # "4000,5000"
-        map = map,
-        position = 0,
-        .quiet = TRUE
-      )
-      # result
-      ## Muudame rea numbreid, kuna tsükliga lähevad need kaduma.
-      layers <- rgdal::ogrListLayers(map)
-      x <- rgdal::readOGR(map, layers[1])
-      x$row <- x$row + (i - 1) * 100
-      x$cat <- rev(x$cat + (i - 1) * 100)
-      rgdal::writeOGR(obj = x, dsn = map, layer = layers[1], driver = "GPKG", overwrite_layer = T)
-      ## Lisame kihi andmebaasi
-      cmd <- sprintf(
-        paste0(
-          "ogr2ogr -append --config PG_USE_COPY YES -f PostgreSQL ",
-          "PG:\" dbname='%s' host=%s port=%d user='%s' password='%s' ",
-          "sslmode=%s active_schema=%s \" -lco DIM=2 \"%s\" -nlt GEOMETRY ",
-          "-lco GEOMETRY_NAME=geometry -lco FID=%s -nln %s.%s ",
-          "-s_srs %s -t_srs %s -nlt %s"
-        ),
-        conf$dbname, conf$host, conf$port, conf$user, conf$password, conf$sslmode,
-        conf$schema, map, "id", conf$schema, conf$table, "EPSG:3301", "EPSG:4326",
-        "POLYGON"
-      )
-      cat(sprintf("\n-----------------\n%s\n", cmd))
-      system(cmd)
-    }
-    cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
-    # result
-  } else {
-    cat(sprintf(
-      "\n-----------------\nUue andmebaasi '%s' installimiseks pead vana enne kustutama.\n",
-      conf$table
-    ))
-  }
-}

+ 0 - 40
geomeetria_teisendused/create_epk10t_grid.R

@@ -1,40 +0,0 @@
-#  Võrgustike genereerimine ja salvestamine andmebaasi
-#' Funktsioon gnereerib kogu Eestit katva ruudustike piirikasti
-#' 'maaamet.epk200t_bb' sisse ruutvõrgustiku ruudu suurusega 5x5 km.
-#' Võrgustik salvestatakse andmebaasi nime 'epk10t_grid' alla.
-
-create_epk10t_grid <- function() {
-  # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
-  algorithm <- "grass7:v.mkgrid"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = algorithm,
-    "-h" = 0,
-    "-p" = 0,
-    GRASS_OUTPUT_TYPE_PARAMETER = 0,
-    GRASS_REGION_PARAMETER = "",
-    GRASS_VECTOR_DSCO = "",
-    GRASS_VECTOR_EXPORT_NOCAT = 0,
-    GRASS_VECTOR_LCO = "",
-    angle = 0,
-    box = "5000,5000", # 5x5 km
-    breaks = 0,
-    coordinates = "300000,6300000 [EPSG:3301]",
-    grid = "80,100", # ridade ja veergude arv
-    map = "tmp/epk10t_grid.gpkg",
-    position = 0,
-    .quiet = TRUE
-  )
-  # result
-  epk10t_grid <- sf::read_sf(qgisprocess::qgis_output(result, "map"))
-  sf::st_geometry(epk10t_grid) %>% plot()
-  conf <- ruut::get_config()
-  conf$table <- "epk10t_grid"
-  conf$schema <- "maaamet"
-  ruut::copy_qgis_object_to_db(
-    x = result, conf = conf, geometry_type = "POLYGON",
-    crs_source = "EPSG:3301"
-  )
-  cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
-}
-# create_epk10t_grid()

+ 0 - 40
geomeetria_teisendused/create_epk200t_grid.R

@@ -1,40 +0,0 @@
-#  Võrgustike genereerimine ja salvestamine andmebaasi
-#' Funktsioon gnereerib kogu Eestit katva ruudustike piirikasti
-#' 'maaamet.epk200t_bb' sisse ruutvõrgustiku ruudu suurusega 100x100 km.
-#' Võrgustik salvestatakse andmebaasi nime 'epk200t_grid' alla.
-
-create_epk200t_grid <- function() {
-  # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
-  algorithm <- "grass7:v.mkgrid"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = algorithm,
-    "-h" = 0,
-    "-p" = 0,
-    GRASS_OUTPUT_TYPE_PARAMETER = 0,
-    GRASS_REGION_PARAMETER = "",
-    GRASS_VECTOR_DSCO = "",
-    GRASS_VECTOR_EXPORT_NOCAT = 0,
-    GRASS_VECTOR_LCO = "",
-    angle = 0,
-    box = "100000,100000",
-    breaks = 0,
-    coordinates = "300000,6300000 [EPSG:3301]",
-    grid = "4,5",
-    map = "tmp/epk200t_grid.gpkg",
-    position = 0,
-    .quiet = TRUE
-  )
-  # result
-  epk200t_grid <- sf::read_sf(qgisprocess::qgis_output(result, "map"))
-  sf::st_geometry(epk200t_grid) %>% plot()
-  conf <- ruut::get_config()
-  conf$table <- "epk200t_grid"
-  conf$schema <- "maaamet"
-  ruut::copy_qgis_object_to_db(
-    x = result, conf = conf, geometry_type = "POLYGON",
-    crs_source = "EPSG:3301"
-  )
-  cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
-}
-# create_epk200t_grid()

+ 0 - 40
geomeetria_teisendused/create_epk2t_grid.R

@@ -1,40 +0,0 @@
-#  Võrgustike genereerimine ja salvestamine andmebaasi
-#' Funktsioon gnereerib kogu Eestit katva ruudustike piirikasti
-#' 'maaamet.epk200t_bb' sisse ruutvõrgustiku ruudu suurusega 1x1 km.
-#' Võrgustik salvestatakse andmebaasi nime 'epk2t_grid' alla.
-
-create_epk2t_grid <- function() {
-  # ruut::qgis_algorithm_search_by_word(str = "v.mkgrid")
-  algorithm <- "grass7:v.mkgrid"
-  # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
-  result <- qgisprocess::qgis_run_algorithm(
-    algorithm = algorithm,
-    "-h" = 0,
-    "-p" = 0,
-    GRASS_OUTPUT_TYPE_PARAMETER = 0,
-    GRASS_REGION_PARAMETER = "",
-    GRASS_VECTOR_DSCO = "",
-    GRASS_VECTOR_EXPORT_NOCAT = 0,
-    GRASS_VECTOR_LCO = "",
-    angle = 0,
-    box = "1000,1000",
-    breaks = 0,
-    coordinates = "300000,6300000 [EPSG:3301]",
-    grid = "400,500",
-    map = "tmp/epk2t_grid.gpkg",
-    position = 0,
-    .quiet = TRUE
-  )
-  # result
-  # epk2t_grid <- sf::read_sf(qgisprocess::qgis_output(result, "map"))
-  # sf::st_geometry(epk2t_grid) %>% plot()
-  conf <- ruut::get_config()
-  conf$table <- "epk2t_grid"
-  conf$schema <- "maaamet"
-  ruut::copy_qgis_object_to_db(
-    x = result, conf = conf, geometry_type = "POLYGON",
-    crs_source = "EPSG:3301"
-  )
-  cat(sprintf("\n-----------------\nAlgoritm: %s valmis.\n\n", algorithm))
-}
-# create_epk2t_grid()