| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443 |
- #' Teeregistri WFS ja maaameti andmete põhjal oma teeandmete 'minu_teed' loomine
- #'
- #' 1. Põhi-, kõrval ja tugimaanteedest ning rambid moodustatakse uus andmebaas 'riigiteedevork'.
- #' 2. Ilma teenumbrita kohalike teede andmebaasi 'numbrita_kohalik_tee' loomine.
- #' 3. Eesti kaart ainult suurte saartega (üle 10km2).
- #' 4. Polügoniseerime riigiteedevõrgu.
- #' Eesti avaandmete \url{https://avaandmed.eesti.ee/datasets?emsId=35} teabevärava kaudu teederegistri WFS (Web Feature Service) andmete eksportimine postgisandmebaasi. WFS andmestiku kirjeldus: \url{https://teeregister-api.mnt.ee/teenus/wfs?request=GetCapabilities&service=WFS}
- #'
- #' @param conf A list() of configuration variables. Default values \code{\link[ruut]{get_config}}.
- #' @return No output.
- #' @seealso [ruut::get_config()], [ruut::copy_shp_to_db()], [estmap::teeregister_wfs()]
- #' @keywords postgis, maps, WFS, OSM
- #' @export
- #' @examples
- #' \dontrun{
- #'
- #' conf <- ruut::get_config()
- #' minu_teed_loomine(conf = conf)
- #' }
- minu_teed_loomine <- function(conf = NULL) {
- ## ------------- muutujad ja teisendused ---------------
- if (is.null(conf)) {
- conf <- ruut::get_config()
- }
- ## Defineerime ajutised failid ja muutujad.
- tmp_dir <- tempdir() # ajutine kataloog
- obj <- "demo"
- tmp_gpkg_file <- sprintf("%s/%s.gpkg", tmp_dir, obj) # ajutine gpkg fail
- conf$gpkg_home <- tmp_dir
- conf$gpkg_file <- obj
- conf$primary_key <- "id"
- ## Loome lingid gpkg ajutistest tabelitest lugemiseks ja kirjutamiseks
- conf$gpkg_table <- layer_6 <- "test_layer_6"
- tmp_gpkg_file_output_6 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = F)
- tmp_gpkg_file_input_6 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = T)
- conf$gpkg_table <- layer_5 <- "test_layer_5"
- tmp_gpkg_file_output_5 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = F)
- tmp_gpkg_file_input_5 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = T)
- conf$gpkg_table <- layer_4 <- "test_layer_4"
- tmp_gpkg_file_output_4 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = F)
- tmp_gpkg_file_input_4 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = T)
- conf$gpkg_table <- layer_3 <- "test_layer_3"
- tmp_gpkg_file_output_3 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = F)
- tmp_gpkg_file_input_3 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = T)
- conf$gpkg_table <- layer_2 <- "test_layer_2"
- tmp_gpkg_file_output_2 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = F)
- tmp_gpkg_file_input_2 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = T)
- conf$gpkg_table <- layer_1 <- "test_layer_1"
- tmp_gpkg_file_output_1 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = F)
- tmp_gpkg_file_input_1 <- ruut::construct_to_gpkg_output_file_str(conf = conf, is_input_str = T)
- ## ================= Schema 'minu_teed' ====================
- conf$schema <- "minu_teed"
- ruut::db_create_new_schema(conf = conf)
- ## =================== 2. teedevõrkude loomine =======================
- ## ------------------ 2.1.1 Riigiteed osadena -----------------------
- ## s.o (ilma rampideta) <= 30, koos rampide ja muude riigiteedega <= 45.
- # ruut::qgis_algorithm_search_by_word("extract")
- algorithm <- "native:extractbyattribute"
- # ruut::qgis_show_help(algorithm = algorithm)
- conf$schema <- "eesti"
- conf$table <- "e_501_tee_j"
- input <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_type = "MultiLineString", srid = 3301,
- checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geom"
- )
- output <- tmp_gpkg_file_output_1
- str <- sprintf("{ 'FIELD' : 'tyyp', 'INPUT' : '%s', 'OPERATOR' : 5, 'OUTPUT' : '%s', 'VALUE' : '45' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
- ## 2.1.2 Copy temp gpkg file to postgis.
- conf$schema <- "minu_teed"
- conf$table <- "teedevork_riigiteed_osadena"
- PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
- cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=id -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, tmp_gpkg_file, layer_1, "LINESTRING", conf$schema, conf$table)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
- ## ---------------- 2.2.1 Riigiteed tervikuna ------------------
- # ruut::qgis_algorithm_search_by_word("dissolve")
- algorithm <- "native:dissolve"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_1
- output <- tmp_gpkg_file_output_2
- str <- sprintf("{ 'FIELD' : 'tee', 'INPUT' : '%s', 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- ## 2.2.2 Eemaldame ebavajalikud veerud
- # ruut::qgis_algorithm_search_by_word("retain")
- algorithm <- "native:retainfields"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_2
- output <- tmp_gpkg_file_output_3
- cmd <- sprintf("qgis_process run %s --FIELDS='tyyp' --FIELDS='tyyp_t' --FIELDS='tee' --FIELDS='nimetus' --INPUT='%s' --OUTPUT='%s' ", algorithm, input, output)
- system(cmd)
- ## 2.2.2 Copy temp gpkg file to postgis.
- conf$schema <- "minu_teed"
- conf$table <- "teedevork_riigiteed"
- PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
- cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=id -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, tmp_gpkg_file, layer_3, "MULTILINESTRING", conf$schema, conf$table)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
- ## 2.2.3 Riigiteede alg- ja lõpppunkt ---------------
- # ruut::qgis_algorithm_search_by_word("vertices")
- algorithm <- "native:extractspecificvertices"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_3
- output <- tmp_gpkg_file_output_4
- str <- sprintf("{ 'INPUT' : '%s', 'OUTPUT' : '%s', , 'VERTICES' : \"0,-1\" }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
- ## 2.2.4 Copy temp gpkg file to postgis.
- conf$schema <- "minu_teed"
- conf$table <- "teedevork_riigiteed_p"
- PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
- cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=fid -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, tmp_gpkg_file, layer_4, "POINT", conf$schema, conf$table)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
- ## ------------------- 2.4 Muud teed osadena ----------------------
- ## s.o tyyp IN (50,60,).
- ## 2.4.1 Esmalt sorteerime >= 50
- # ruut::qgis_algorithm_search_by_word("extract")
- algorithm <- "native:extractbyattribute"
- # ruut::qgis_show_help(algorithm = algorithm)
- conf$schema <- "eesti"
- conf$table <- "e_501_tee_j"
- input <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_type = "MultiLineString", srid = 3301,
- checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geom"
- )
- output <- tmp_gpkg_file_output_1
- str <- sprintf("{ 'FIELD' : 'tyyp', 'INPUT' : '%s', 'OPERATOR' : 3, 'OUTPUT' : '%s', 'VALUE' : '50' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
- ## 2.4.2 Seejärel sorteerime <= 60
- algorithm <- "native:extractbyattribute"
- input <- tmp_gpkg_file_input_1
- output <- tmp_gpkg_file_output_2
- str <- sprintf("{ 'FIELD' : 'tyyp', 'INPUT' : '%s', 'OPERATOR' : 5, 'OUTPUT' : '%s', 'VALUE' : '60' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
- ## 2.4.3 Eemaldame need muud teed kus 'tee'=NULL (ilma teenumbrita ehk kvartalissisesed).
- algorithm <- "native:extractbyattribute"
- input <- tmp_gpkg_file_input_2
- output <- tmp_gpkg_file_output_3
- str <- sprintf("{ 'FIELD' : 'tee', 'INPUT' : '%s', 'OPERATOR' : 9, 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
- ## 2.4.4 Copy temp gpkg file to postgis.
- conf$schema <- "minu_teed"
- conf$table <- "teedevork_kt_osadena"
- PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
- cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=id -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, tmp_gpkg_file, layer_3, "LINESTRING", conf$schema, conf$table)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
- ## 2.4.5 Ühendame sama teenumbriga muud teed
- # ruut::qgis_algorithm_search_by_word("dissolve")
- algorithm <- "native:dissolve"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_3
- output <- tmp_gpkg_file_output_4
- str <- sprintf("{ 'FIELD' : 'tee', 'INPUT' : '%s', 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- ## 2.4.6 Eemaldame ebavajalikud veerud
- # ruut::qgis_algorithm_search_by_word("retain")
- algorithm <- "native:retainfields"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_4
- output <- tmp_gpkg_file_output_5
- cmd <- sprintf("qgis_process run %s --FIELDS='tyyp' --FIELDS='tyyp_t' --FIELDS='tee' --FIELDS='nimetus' --INPUT='%s' --OUTPUT='%s' ", algorithm, input, output)
- system(cmd)
- ## 2.4.7 Copy temp gpkg file to postgis.
- conf$schema <- "minu_teed"
- conf$table <- "teedevork_kt"
- PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
- cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=id -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, tmp_gpkg_file, layer_5, "MULTILINESTRING", conf$schema, conf$table)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
- ## 2.4.8 Muude teede alg- ja lõpppunkt
- # ruut::qgis_algorithm_search_by_word("vertices")
- algorithm <- "native:extractspecificvertices"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_5
- output <- tmp_gpkg_file_output_6
- str <- sprintf("{ 'INPUT' : '%s', 'OUTPUT' : '%s', , 'VERTICES' : \"0,-1\" }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
- ## 2.4.9 Copy temp gpkg file to postgis.
- conf$schema <- "minu_teed"
- conf$table <- "teedevork_kt_p"
- PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
- cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=fid -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, tmp_gpkg_file, layer_6, "POINT", conf$schema, conf$table)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
- ## 2.5.1 Leiame need muud teed kus 'tee'=NULL (ilma teenumbrita ehk kvartalissisesed).
- algorithm <- "native:extractbyattribute"
- input <- tmp_gpkg_file_input_2
- output <- tmp_gpkg_file_output_3
- str <- sprintf("{ 'FIELD' : 'tee', 'INPUT' : '%s', 'OPERATOR' : 8, 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
- ## 2.5.2 Eemaldame ebavajalikud veerud
- # ruut::qgis_algorithm_search_by_word("retain")
- algorithm <- "native:retainfields"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_3
- output <- tmp_gpkg_file_output_4
- cmd <- sprintf("qgis_process run %s --FIELDS='tyyp' --FIELDS='tyyp_t' --FIELDS='tee' --FIELDS='nimetus' --INPUT='%s' --OUTPUT='%s' ", algorithm, input, output)
- system(cmd)
- ## 2.5.3 Copy temp gpkg file to postgis.
- conf$schema <- "minu_teed"
- conf$table <- "teedevork_kt_numbrita"
- PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
- cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=id -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, tmp_gpkg_file, layer_4, "LINESTRING", conf$schema, conf$table)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
- ## 2.5.3 Nimeta teede alg- ja lõpppunkt
- # ruut::qgis_algorithm_search_by_word("vertices")
- algorithm <- "native:extractspecificvertices"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_4
- output <- tmp_gpkg_file_output_5
- str <- sprintf("{ 'INPUT' : '%s', 'OUTPUT' : '%s', , 'VERTICES' : \"0,-1\" }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
- ## 2.4.9 Copy temp gpkg file to postgis.
- conf$schema <- "minu_teed"
- conf$table <- "teedevork_kt_numbrita_p"
- PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
- cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=fid -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, tmp_gpkg_file, layer_5, "POINT", conf$schema, conf$table)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
- ## =================== 3. 'eesti' =======================
- ## 3.1 Maakondadest Eesti maismaapiir
- # ruut::qgis_algorithm_search_by_word("dissolve")
- algorithm <- "native:dissolve"
- # ruut::qgis_show_help(algorithm = algorithm)
- conf$schema <- "maaamet"
- conf$table <- "maakond"
- input <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_type = "MultiPolygon", srid = 3301,
- checkPrimaryKeyUnicity = TRUE, key = "id", geometry_field = "geom"
- )
- output <- tmp_gpkg_file_output_1
- str <- sprintf("{ 'FIELD' : [], 'INPUT' : '%s', 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- ## 3.2 Kustutame ebaolulised väljad
- # ruut::qgis_algorithm_search_by_word("delete")
- algorithm <- "native:deletecolumn"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_1
- output <- tmp_gpkg_file_output_2
- cmd <- sprintf("qgis_process run %s --COLUMN='mnimi' --COLUMN='mkood' --COLUMN='fid' --INPUT='%s' --OUTPUT='%s' ", algorithm, input, output)
- system(cmd)
- ## 3.3 Jaotame multipart polügooni singlepart polügoonideks.
- # ruut::qgis_algorithm_search_by_word("multipart")
- algorithm <- "native:multiparttosingleparts"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_2
- output <- tmp_gpkg_file_output_3
- str <- sprintf("{ 'INPUT' : '%s', 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- ## 3.4 Lisame pindade pindalad ja perimeetri
- # ruut::qgis_algorithm_search_by_word("columns")
- algorithm <- "qgis:exportaddgeometrycolumns"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_3
- output <- tmp_gpkg_file_output_4
- str <- sprintf("{ 'CALC_METHOD' : 0, 'INPUT' : '%s', 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- ## 3.5 Eemaldame objektid mille pindala on väiksem kui 10km2 (väikesaared)
- # ruut::qgis_algorithm_search_by_word("extract")
- algorithm <- "native:extractbyattribute"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_4
- output <- tmp_gpkg_file_output_5
- str <- sprintf("{ 'FIELD' : 'area', 'OPERATOR' : 2, 'VALUE' : '10000000', 'INPUT' : '%s', 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- ## 3.6 Eemaldame augud, mis on suuremad kui 1ha.
- # ruut::qgis_algorithm_search_by_word("holes")
- algorithm <- "native:deleteholes"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_5
- output <- tmp_gpkg_file_output_6
- str <- sprintf("{ 'MIN_AREA' : '10000', 'INPUT' : '%s', 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- ## 3.7 Copy temp gpkg file to postgis.
- conf$schema <- "minu_teed"
- conf$table <- "eesti"
- PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
- cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=fid -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, tmp_gpkg_file, layer_6, "MULTIPOLYGON", conf$schema, conf$table)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
- ## ------------------ Teedevõrgu polügoniseerimine ------------------
- ## 4.1 Teisendame eesti polügooni joonteks.
- # ruut::qgis_algorithm_search_by_word("lines")
- algorithm <- "native:polygonstolines"
- # ruut::qgis_show_help(algorithm = algorithm)
- conf$schema <- "minu_teed"
- conf$table <- "eesti"
- input <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_type = "Polygon", srid = 3301,
- checkPrimaryKeyUnicity = TRUE, key = "fid", geometry_field = "geom"
- )
- output <- tmp_gpkg_file_output_1
- str <- sprintf("{ 'INPUT' : '%s', 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- ## 4.2 Eemaldame riigiteedest rambid.
- algorithm <- "native:extractbyattribute"
- # ruut::qgis_show_help(algorithm = algorithm)
- conf$schema <- "minu_teed"
- conf$table <- "teedevork_riigiteed"
- input <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_type = "MultiLineString", srid = 3301,
- checkPrimaryKeyUnicity = TRUE, key = "id_0", geometry_field = "geom"
- )
- output <- tmp_gpkg_file_output_2
- str <- sprintf("{ 'FIELD' : 'tyyp', 'INPUT' : '%s', 'OPERATOR' : 5, 'OUTPUT' : '%s', 'VALUE' : '30' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
- ## 4.3 Enne polügoniseerimist ühendame eesti kontuuri ja teedevõrgu üheks.
- # ruut::qgis_algorithm_search_by_word("merge")
- algorithm <- "native:mergevectorlayers"
- # ruut::qgis_show_help(algorithm = algorithm)
- layer_1 <- tmp_gpkg_file_input_1
- layer_2 <- tmp_gpkg_file_input_2
- output <- tmp_gpkg_file_output_3
- cmd <- sprintf(
- "qgis_process run native:mergevectorlayers --CRS='epsg:3301' --LAYERS='%s' --LAYERS='%s' --OUTPUT='%s' ",
- layer_1, layer_2, output
- )
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", output))
- ## 4.4 Polügoniseerime saadud riigiteedevõrgu. Tekib teedega piiratud polügoonid.
- # ruut::qgis_algorithm_search_by_word("Polygonize")
- algorithm <- "native:polygonize"
- # ruut::qgis_show_help(algorithm = algorithm)
- input <- tmp_gpkg_file_input_3
- output <- tmp_gpkg_file_output_4
- str <- sprintf("{ 'INPUT' : '%s', 'KEEP_FIELDS' : False, 'OUTPUT' : '%s' }", input, output)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- ## 4.5 Copy temp gpkg file to postgis.
- conf$schema <- "minu_teed"
- conf$table <- "teedevork_riigiteed_a"
- PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
- cmd <- sprintf("ogr2ogr -progress --config PG_USE_COPY YES -f PostgreSQL %s -lco DIM=2 %s %s -overwrite -nlt %s -lco GEOMETRY_NAME=geom -lco FID=fid -nln %s.%s -nlt PROMOTE_TO_MULTI", PG, tmp_gpkg_file, layer_4, "MULTIPOLYGON", conf$schema, conf$table)
- system(cmd)
- cat(sprintf("\n-------------\nLoodi andmebaas '%s'.\n", conf$table))
- ## =================== !!!!!!!!!!!!!! POOLELI !!!!!!!!!!!! =======================
- ## 4.2 Lõikame Eesti kaardist polügoniseerime riigiteedevõrgu välja.
- ## Tekib ümber Eesti raam, mis tuleb jagada kuidagi transporditsoonideks.
- # ruut::qgis_algorithm_search_by_word("Difference")
- algorithm <- "native:difference"
- # ruut::qgis_show_help(algorithm = algorithm)
- conf$schema <- "minu_teed"
- conf$table <- "eesti"
- input <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_type = "Polygon", srid = 3301,
- checkPrimaryKeyUnicity = TRUE, key = "fid", geometry_field = "geom"
- )
- conf$schema <- "minu_teed"
- conf$table <- "riigiteedevork_a"
- overlay <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_type = "Polygon", srid = 3301,
- checkPrimaryKeyUnicity = TRUE, key = "fid", geometry_field = "geom"
- )
- conf$schema <- "minu_teed"
- conf$table <- "riigiteedevork_xxx"
- output <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_field = "geom", key = "fid"
- )
- str <- sprintf("{ 'INPUT' : '%s', 'OUTPUT' : '%s', 'OVERLAY' : '%s' }", input, output, overlay)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- "Processing algorithm…
- Algorithm 'Intersection' starting…
- Input parameters:
- { 'INPUT' : 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'fid\' srid=3301 type=MultiLineString checkPrimaryKeyUnicity=\'1\' table=\"minu_teed\".\"riigiteedevork\" (geom)', 'INPUT_FIELDS' : [], 'OUTPUT' : 'TEMPORARY_OUTPUT', 'OVERLAY' : 'postgres://dbname=\'data\' host=localhost port=6432 user=\'osm\' sslmode=disable authcfg=0i30k14 key=\'id_0\' srid=3301 type=MultiPolygon checkPrimaryKeyUnicity=\'1\' table=\"minu_teed\".\"riigiteedevork_xxx\" (geom)', 'OVERLAY_FIELDS' : [], 'OVERLAY_FIELDS_PREFIX' : '' }"
- ## 4.3 Kuna polügoniseeritud pinnad ei olnud täiuslikud, siis teostame
- ## polügoniseeriist veelkorra. Selleks lõikame esmalt teedevõrgust
- ## tekkinud raamiga need teed mis jäävad raamis sisse.
- # ruut::qgis_algorithm_search_by_word("Intersection")
- algorithm <- "native:intersection"
- # ruut::qgis_show_help(algorithm = algorithm)
- conf$schema <- "minu_teed"
- conf$table <- "riigiteedevork"
- input <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_type = "MultiLineString", srid = 3301,
- checkPrimaryKeyUnicity = TRUE, key = "fid", geometry_field = "geom"
- )
- conf$schema <- "minu_teed"
- conf$table <- "riigiteedevork_xxx"
- overlay <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_type = "MultiPolygon", srid = 3301,
- checkPrimaryKeyUnicity = TRUE, key = "fid", geometry_field = "geom"
- )
- conf$schema <- "minu_teed"
- conf$table <- "riigiteedevork_xxx1"
- output <- ruut::construct_to_gpkg_output_postgres_str(
- conf = conf, geometry_field = "geom"
- )
- str <- sprintf("{ 'INPUT' : '%s', 'INPUT_FIELDS' : [], 'OUTPUT' : '%s', 'OVERLAY' : '%s', 'OVERLAY_FIELDS' : [], 'OVERLAY_FIELDS_PREFIX' : '' }", input, output, overlay)
- cmd <- ruut::construct_qgis_output_result_to_better_format(str = str, algorithm = algorithm)
- system(cmd)
- }
|