|
@@ -27,17 +27,21 @@ gpkg_piirkonnale_polygoonide_lisamine <- function(obj = NULL, gpkg_home = "/tmp"
|
|
|
}
|
|
}
|
|
|
## Konfiguratsiooni muutujale väärtuste omistamine
|
|
## Konfiguratsiooni muutujale väärtuste omistamine
|
|
|
conf <- ruut::get_config()
|
|
conf <- ruut::get_config()
|
|
|
|
|
+ tmp_gpkg_file <- tempfile(fileext = ".gpkg")
|
|
|
|
|
+ conf$gpkg_home <- dirname(tmp_gpkg_file)
|
|
|
|
|
+ conf$gpkg_file <- gsub(paste0(conf$gpkg_home, "/"), "", tmp_gpkg_file)
|
|
|
|
|
+ conf$gpkg_file <- gsub(".gpkg", "", conf$gpkg_file)
|
|
|
|
|
+
|
|
|
conf$gpkg_home <- gpkg_home
|
|
conf$gpkg_home <- gpkg_home
|
|
|
conf$gpkg_file <- obj
|
|
conf$gpkg_file <- obj
|
|
|
- postgres <- sprintf(
|
|
|
|
|
- "postgres://dbname=\'%s\' host=%s port=%s user=\'%s\' sslmode=%s password=\'%s\' key=\'id\' srid=3301 type=Polygon checkPrimaryKeyUnicity=\'1\' ",
|
|
|
|
|
- conf$dbname, conf$host, conf$port, conf$user, conf$sslmode, conf$password
|
|
|
|
|
- )
|
|
|
|
|
- tmp_gpkg_file <- tempfile(fileext = ".gpkg")
|
|
|
|
|
|
|
+ conf$gpkg_table <- "tmp_table"
|
|
|
|
|
+ tmp_gpkg_file_output <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = F)
|
|
|
|
|
+ tmp_gpkg_file_input <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = T)
|
|
|
|
|
+
|
|
|
## Algorithm
|
|
## Algorithm
|
|
|
# ruut::qgis_algorithm_search_by_word(str = "extract")
|
|
# ruut::qgis_algorithm_search_by_word(str = "extract")
|
|
|
# algorithm <- "native:extractbylocation"
|
|
# algorithm <- "native:extractbylocation"
|
|
|
- # cat(qgisprocess::qgis_show_help(algorithm = algorithm))
|
|
|
|
|
|
|
+ # cat(ruut::qgis_show_help(algorithm = algorithm))
|
|
|
|
|
|
|
|
## -------------------- Loop -----------------------
|
|
## -------------------- Loop -----------------------
|
|
|
intersect_layers <- c("piir", "bb")
|
|
intersect_layers <- c("piir", "bb")
|
|
@@ -51,31 +55,34 @@ gpkg_piirkonnale_polygoonide_lisamine <- function(obj = NULL, gpkg_home = "/tmp"
|
|
|
andmed <- rbind(andmed, data.frame("schema" = "osm_shp", "table" = "pois_a"))
|
|
andmed <- rbind(andmed, data.frame("schema" = "osm_shp", "table" = "pois_a"))
|
|
|
andmed <- rbind(andmed, data.frame("schema" = "osm_shp", "table" = "natural_a"))
|
|
andmed <- rbind(andmed, data.frame("schema" = "osm_shp", "table" = "natural_a"))
|
|
|
for (intersect in intersect_layers) {
|
|
for (intersect in intersect_layers) {
|
|
|
|
|
+ conf$gpkg_table <- intersect
|
|
|
|
|
+ intersect_layer <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = T)
|
|
|
for (i in 1:nrow(andmed)) {
|
|
for (i in 1:nrow(andmed)) {
|
|
|
conf$gpkg_table <- sprintf("%s_%s", intersect, andmed$table[i])
|
|
conf$gpkg_table <- sprintf("%s_%s", intersect, andmed$table[i])
|
|
|
- output <- ruut::construct_to_gpkg_output_file_str(conf = conf)
|
|
|
|
|
- ## !!! Trikk: alguses leiame ühisosaga piirkonnad
|
|
|
|
|
- result <- qgisprocess::qgis_run_algorithm(
|
|
|
|
|
- algorithm = "native:extractbylocation",
|
|
|
|
|
- INPUT = sprintf(
|
|
|
|
|
- '%s table=\"%s\".\"%s\" (geom)',
|
|
|
|
|
- postgres, andmed$schema[i], andmed$table[i]
|
|
|
|
|
- ),
|
|
|
|
|
- INTERSECT = sprintf("%s|layername=%s", dsn, intersect),
|
|
|
|
|
- OUTPUT = tmp_gpkg_file,
|
|
|
|
|
- PREDICATE = c(0)
|
|
|
|
|
|
|
+ conf$table <- andmed$table[i]
|
|
|
|
|
+ conf$schema <- andmed$schema[i]
|
|
|
|
|
+ output <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = F)
|
|
|
|
|
+ input <- ruut::construct_to_gpkg_output_postgres_str(
|
|
|
|
|
+ conf = conf, geometry_type = "Polygon", srid = 3301,
|
|
|
|
|
+ checkPrimaryKeyUnicity = TRUE, key = "id"
|
|
|
)
|
|
)
|
|
|
|
|
+ ## !!! Trikk: alguses leiame ühisosaga piirkonnad
|
|
|
|
|
+ ## ------------------- QGIS: qgisprocess ----------------------
|
|
|
|
|
+ str <- paste0("{ 'INPUT' : '", input, "', 'INTERSECT' : '", intersect_layer, "', 'OUTPUT' : '", tmp_gpkg_file_output, "', 'PREDICATE' : [0] }")
|
|
|
|
|
+ algorithm <- "native:extractbylocation"
|
|
|
|
|
+ cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
|
|
|
|
|
+ cat(sprintf("\n%s\n", cmd))
|
|
|
|
|
+ system(cmd)
|
|
|
## !!! Trikk jätkub: edasi leiame alles ühisosa
|
|
## !!! Trikk jätkub: edasi leiame alles ühisosa
|
|
|
- result <- qgisprocess::qgis_run_algorithm(
|
|
|
|
|
- algorithm = "native:intersection",
|
|
|
|
|
- INPUT = tmp_gpkg_file,
|
|
|
|
|
- INPUT_FIELDS = "",
|
|
|
|
|
- OVERLAY = sprintf("%s|layername=%s", dsn, intersect),
|
|
|
|
|
- OVERLAY_FIELDS = "",
|
|
|
|
|
- OVERLAY_FIELDS_PREFIX = "",
|
|
|
|
|
- OUTPUT = output
|
|
|
|
|
- # .quiet = TRUE
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ str <- paste0("{ 'INPUT' : '", tmp_gpkg_file_input, "', 'OVERLAY' : '", intersect_layer, "', 'OUTPUT' : '", output, "', 'INPUT_FIELDS' : '', 'OVERLAY_FIELDS' : '', 'OVERLAY_FIELDS_PREFIX' : '' }")
|
|
|
|
|
+ str <- paste0("{ 'INPUT' : '", tmp_gpkg_file_input, "', 'INPUT_FIELDS' : ['id','osm_id','code','fclass','name'], 'OUTPUT' : '", output, "', 'OVERLAY' : '", intersect_layer, "', 'OVERLAY_FIELDS' : ['fid','id','left','top','right','bottom'], 'OVERLAY_FIELDS_PREFIX' : '' }")
|
|
|
|
|
+ algorithm <- "native:intersection"
|
|
|
|
|
+ cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
|
|
|
|
|
+ cat(sprintf("\n%s\n", cmd))
|
|
|
|
|
+ system(cmd)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
## Filtreerime maakasutuse kihi 'landuse-a' eraldi alamkihtideks
|
|
## Filtreerime maakasutuse kihi 'landuse-a' eraldi alamkihtideks
|
|
|
if (andmed$table[i] == "landuse_a") {
|
|
if (andmed$table[i] == "landuse_a") {
|
|
|
landuse_a <- unique(as.data.frame(sf::read_sf(dsn = dsn, layer = sprintf("%s_landuse_a", intersect), as_tibble = T))[, c("code", "fclass")])
|
|
landuse_a <- unique(as.data.frame(sf::read_sf(dsn = dsn, layer = sprintf("%s_landuse_a", intersect), as_tibble = T))[, c("code", "fclass")])
|
|
@@ -83,7 +90,19 @@ gpkg_piirkonnale_polygoonide_lisamine <- function(obj = NULL, gpkg_home = "/tmp"
|
|
|
for (k in 1:nrow(landuse_a)) {
|
|
for (k in 1:nrow(landuse_a)) {
|
|
|
table_suffix <- landuse_a$fclass[k]
|
|
table_suffix <- landuse_a$fclass[k]
|
|
|
conf$gpkg_table <- sprintf("%s_%s", parent_table, table_suffix)
|
|
conf$gpkg_table <- sprintf("%s_%s", parent_table, table_suffix)
|
|
|
- output <- ruut::construct_to_gpkg_output_file_str(conf = conf)
|
|
|
|
|
|
|
+ input <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = TRUE)
|
|
|
|
|
+ sprintf("%s_%s",conf$gpkg_table, table_suffix)
|
|
|
|
|
+ output <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = FALSE)
|
|
|
|
|
+ str <- paste0("{ 'INPUT' : '", input, "', 'INTERSECT' : '", intersect_layer, "', 'OUTPUT' : '", tmp_gpkg_file, "', FIELD : 'code', OPERATOR : 0, VALUE : '", landuse_a$code[k], "' }")
|
|
|
|
|
+ algorithm <- "native:extractbyattribute"
|
|
|
|
|
+ cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
|
|
|
|
|
+ cat(sprintf("\n%s\n", cmd))
|
|
|
|
|
+ system(cmd)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
result <- qgisprocess::qgis_run_algorithm(
|
|
result <- qgisprocess::qgis_run_algorithm(
|
|
|
algorithm = "native:extractbyattribute",
|
|
algorithm = "native:extractbyattribute",
|
|
|
FIELD = "code",
|
|
FIELD = "code",
|