Jelajahi Sumber

Lisatud 'statistika_csv'.

Ardo Kubjas 5 tahun lalu
induk
melakukan
9c01ae37d7
4 mengubah file dengan 157 tambahan dan 4 penghapusan
  1. 1 0
      NAMESPACE
  2. 4 4
      R/minu_teed_riigiteed_ls.R
  3. 120 0
      R/statistika_csv.R
  4. 32 0
      man/statistika_csv.Rd

+ 1 - 0
NAMESPACE

@@ -18,6 +18,7 @@ export(minu_teed_riigiteed)
 export(minu_teed_riigiteed_ls)
 export(minu_teed_riigiteed_valjapaasud)
 export(osm_shp)
+export(statistika_csv)
 export(statistika_rahvaarv)
 export(teeregister_teed)
 export(teeregister_wfs)

+ 4 - 4
R/minu_teed_riigiteed_ls.R

@@ -18,10 +18,10 @@ minu_teed_riigiteed_ls <- function(conf = NULL) {
   vars <- ajutised_muutujad(conf = conf)
   conf <- vars$conf
 
-  conf$schema <- "minu_teed"
-  conf$table <- "zzz"
-  output <- ruut::construct_to_gpkg_output_postgres_str(conf = conf, geometry_field = "geom")
-  cat(paste(paste0('"', ruut::db_table_colnames(conf = conf)$column_name, '"'), collapse = ","))
+  # conf$schema <- "minu_teed"
+  # conf$table <- "zzz"
+  # output <- ruut::construct_to_gpkg_output_postgres_str(conf = conf, geometry_field = "geom")
+  # cat(paste(paste0('"', ruut::db_table_colnames(conf = conf)$column_name, '"'), collapse = ","))
 
   ## -------- 1.1 Kontrollime andmebaasis vajalike tabelite olemasolu ----------
   conf$schema <- "teeregister_wfs"

+ 120 - 0
R/statistika_csv.R

@@ -0,0 +1,120 @@
+#' Statistikaameti REL andmed CSV kujul ja import andmebaasi.
+#'
+#' Statistikaamet csv andmete sidumine andmebaasiga 'rel_1x1km'.  Source: \url{https://estat.stat.ee/StatistikaKaart/VKR}. Lae sealt käsitsi alla 1x1 km andmestiku shp fail. Andmed salvestatakse postgisi andmebaasi. Schema = 'statistikaamet'. Koniguratsiooni muutmiseks muuda konfiguratsiooni. Muutujate vaikeväärtused on sellised, et ei ole vaja midagi muuta.
+#' @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()]
+#' @keywords postgis, maps, ESRI Shpfile, OSM
+#' @export
+#' @examples
+#' \dontrun{
+#'
+#' conf <- ruut::get_config()
+#' statistika_csv(conf = conf)
+#' }
+statistika_csv <- function(conf = NULL) {
+  ## --------------------- muutujad ja teisendused -----------------------------
+  vars <- ajutised_muutujad(conf = conf)
+  conf <- vars$conf
+
+  # conf$schema <- "minu_teed"
+  # conf$table <- "zzz"
+  # output <- ruut::construct_to_gpkg_output_postgres_str(conf = conf, geometry_field = "geom")
+  # cat(paste(paste0('"', ruut::db_table_colnames(conf = conf)$column_name, '"'), collapse = ","))
+
+  # Directory for csv files.
+  tmp_dir <- sprintf("%s/tmp/%s", system.file(package = "estmap"), "statistika_csv")
+  if (!dir.exists(tmp_dir)) {
+    dir.create(tmp_dir)
+  }
+
+
+  ## -------- 1.1 Kontrollime andmebaasis vajalike tabelite olemasolu ----------
+  conf$schema <- "statistikaamet"
+  conf$table <- "rel_1x1km"
+
+  tbl_names <- ruut::db_schema_tablenames(conf = conf)
+  if (!all(c("rel_1x1km") %in% tbl_names)) {
+    cat("\n------------------\nPuuduvad vajalikud andmebaasitabelid.\n")
+    return(NULL)
+  }
+
+  # List of files
+  ls <- list.files(path = tmp_dir, pattern = ".csv")
+  ls_long <- list.files(path = tmp_dir, pattern = ".csv", full.names = T)
+  tbl_names <- unlist(strsplit(x = ls, split = ".csv"))
+  tbl_names <- tolower(gsub("_[(]Ruudustik_1_x_1_km_2011[)]", "", tbl_names))
+  tbl_names <- gsub("__", "_", tbl_names)
+  tbl_names <- gsub("-", "_", tbl_names)
+  tbl_names <- gsub("[(]", "", tbl_names)
+  tbl_names <- gsub("[)]", "", tbl_names)
+  tbl_names <- gsub(" ", "", tbl_names)
+  tbl_names <- gsub("\u00E4", "a", tbl_names) #ä
+  tbl_names <- gsub("^([0-9])", "n\\1", tbl_names) # postgis'i tabeli nimi ei tohi alata numbriga
+
+  # Connect db
+  conn <- ruut::db_connect()
+
+  for (i in 1:length(tbl_names)) {
+    ## -------------------- 1.1 Copy csv file to postgis -----------------------
+    conf$table <- tbl_names[i]
+    conf$table <- "ajutine"
+    PG <- ruut::construct_ogr2ogr_PG_connect_str(conf = conf)
+    # ogr2ogr oskab csv faili lugeda juhul kui laiend on csv.
+    cmd <- sprintf("ogr2ogr -f PostgreSQL %s -lco SCHEMA=%s -lco OVERWRITE=yes -lco FID=%s -nln \"%s\" \"%s\"", PG, conf$schema, "id", conf$table, ls_long[i])
+    system(cmd)
+    postgis_tbl_colnames <- ruut::db_table_colnames(conf = conf)
+
+    # Connect db
+    conn <- ruut::db_connect()
+    ## --------------- 1.2 Kopeerime väärtused põhitabelisse  ------------------
+    # Drop column
+    conf$table <- "rel_1x1km"
+    q <- sprintf("ALTER TABLE \"%s\".\"%s\" DROP COLUMN  IF EXISTS %s;", conf$schema, conf$table, tbl_names[i])
+    cat(q)
+    DBI::dbExecute(conn, q)
+    # # Drop column
+    conf$table <- "rel_1x1km"
+    q <- sprintf("ALTER TABLE \"%s\".\"%s\" DROP COLUMN  IF EXISTS %s;", conf$schema, conf$table, "value")
+    cat(q)
+    DBI::dbExecute(conn, q)
+    # Rename columns
+    conf$table <- "ajutine"
+    q <- sprintf("ALTER TABLE \"%s\".\"%s\" RENAME COLUMN \"%s\" TO \"%s\";", conf$schema, conf$table, postgis_tbl_colnames[3, "column_name"], "value")
+    cat(q)
+    DBI::dbExecute(conn, q)
+    Sys.sleep(1)
+    conf$table <- "ajutine"
+    q <- sprintf("ALTER TABLE \"%s\".\"%s\" RENAME COLUMN \"%s\" TO \"%s\";", conf$schema, conf$table, postgis_tbl_colnames[2, "column_name"], "kood")
+    cat(q)
+    DBI::dbExecute(conn, q)
+    # Set '<4' to '3'
+    conf$table <- "ajutine"
+    q <- sprintf("UPDATE  \"%s\".\"%s\" SET value='3' WHERE value='<4';", conf$schema, conf$table)
+    cat(q)
+    DBI::dbExecute(conn, q)
+    # Lisame uue veeru baastabelisse
+    conf$table <- "rel_1x1km"
+    q <- sprintf("ALTER TABLE \"%s\".\"%s\" ADD value int4 NULL DEFAULT 0;", conf$schema, conf$table)
+    cat(q)
+    DBI::dbExecute(conn, q)
+    # Kopeerime andmed
+    conf$table <- "rel_1x1km"
+    q <- sprintf("UPDATE \"%s\".\"%s\" as r \
+    SET value = CAST(a.value AS INT) \
+    FROM statistikaamet.ajutine a \
+    WHERE r.kood = a.kood;", conf$schema, conf$table)
+    cat(q)
+    DBI::dbExecute(conn, q)
+    # Muudame veeru nime
+    conf$table <- "rel_1x1km"
+    q <- sprintf("ALTER TABLE \"%s\".\"%s\" RENAME COLUMN value TO %s;", conf$schema, conf$table, tbl_names[i])
+    cat(q)
+    DBI::dbExecute(conn, q)
+  }
+  # Kustutame ajutise tabeli.
+  conf$table <- "ajutine"
+  q <- sprintf("drop table if exists %s.%s cascade;", conf$schema, conf$table)
+  cat(q)
+  DBI::dbExecute(conn, q)
+}

+ 32 - 0
man/statistika_csv.Rd

@@ -0,0 +1,32 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/statistika_csv.R
+\name{statistika_csv}
+\alias{statistika_csv}
+\title{Statistikaameti REL andmed CSV kujul ja import andmebaasi.}
+\usage{
+statistika_csv(conf = NULL)
+}
+\arguments{
+\item{conf}{A list() of configuration variables. Default values \code{\link[ruut]{get_config}}.}
+}
+\value{
+No output.
+}
+\description{
+Statistikaamet csv andmete sidumine andmebaasiga 'rel_1x1km'.  Source: \url{https://estat.stat.ee/StatistikaKaart/VKR}. Lae sealt käsitsi alla 1x1 km andmestiku shp fail. Andmed salvestatakse postgisi andmebaasi. Schema = 'statistikaamet'. Koniguratsiooni muutmiseks muuda konfiguratsiooni. Muutujate vaikeväärtused on sellised, et ei ole vaja midagi muuta.
+}
+\examples{
+\dontrun{
+
+conf <- ruut::get_config()
+statistika_csv(conf = conf)
+}
+}
+\seealso{
+\code{\link[ruut:get_config]{ruut::get_config()}}, \code{\link[ruut:copy_shp_to_db]{ruut::copy_shp_to_db()}}
+}
+\keyword{ESRI}
+\keyword{OSM}
+\keyword{Shpfile,}
+\keyword{maps,}
+\keyword{postgis,}