Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
SIMO_output
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
clblatte
SIMO_output
Commits
68b94f18
Commit
68b94f18
authored
5 years ago
by
mpotterf
Browse files
Options
Downloads
Patches
Plain Diff
changed connection name
parent
9854dc9c
No related branches found
No related tags found
No related merge requests found
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
Main.R
+72
-31
72 additions, 31 deletions
Main.R
loadDB.R
+85
-64
85 additions, 64 deletions
loadDB.R
structure_SIMO_rslDB_FBE.R
+26
-4
26 additions, 4 deletions
structure_SIMO_rslDB_FBE.R
structure_SIMO_rslDB_SA.R
+7
-1
7 additions, 1 deletion
structure_SIMO_rslDB_SA.R
with
190 additions
and
100 deletions
Main.R
+
72
−
31
View file @
68b94f18
#####
#####
#
#
#
Load simulated Watershed data of SIMO and create
CSV
.
files
for further analysis
#
Convert SIMO simulated data to
CSV
files
# 2020-02-21
# 2020-02-21
#
#
#####
#####
rm
(
list
=
ls
())
# remove all files in memory
library
(
dplyr
)
library
(
dplyr
)
# this is my big change!!!
### Set the working path to this R-project
### Set the working path to this R-project
path
<-
paste0
(
getwd
(),
"/"
)
path
<-
paste0
(
getwd
())
### Define the input & output folders
# ------------------------------------
# Input: contains all .db and will convert them to
# to .csv in 'output' folder
inputFolder
<-
paste
(
path
,
"input_data"
,
sep
=
"/"
)
outputFolder
<-
paste
(
path
,
"output"
,
sep
=
"/"
)
### load some parameter
### load some parameter
# Management regimes and their abbreviation, they are merged to the data by the branching group (script loadDB.R)
# Management regimes and their abbreviation, they are merged to the data by the branching group (script loadDB.R)
regime
<-
read.csv
(
paste0
(
path
,
"params/regimes.csv"
),
sep
=
","
,
stringsAsFactors
=
FALSE
)
regime
<-
read.csv
(
paste0
(
path
,
"/params/regimes.csv"
),
sep
=
","
,
stringsAsFactors
=
FALSE
)
### Simulation variant that will be load
### Simulation variant that will be load
### The corresponding db files need to be stored in folder "input_data"
### The corresponding db files need to be stored in folder "input_data"
### The output .csv files will be stored in folder "output"
### specify which one should be read:
### specify which one should be read:
...
@@ -52,21 +64,45 @@ regime <- read.csv(paste0(path, "params/regimes.csv"), sep = ",", stringsAsFacto
...
@@ -52,21 +64,45 @@ regime <- read.csv(paste0(path, "params/regimes.csv"), sep = ",", stringsAsFacto
# "CC0_p_canesm" NEW: RCP scenario 0
# "CC0_p_canesm" NEW: RCP scenario 0
sim_variant
<-
"CC0_p_canesm"
# Select the variation
#sim_variant <- "CC0_p_canesm"
sim_variant
<-
"without"
# Vector to keep all variants for future use:
all.variants
<-
c
(
"CC45"
,
"CC85"
,
"without"
,
"CC45_p"
,
"CC85_p"
,
"CC26_p"
,
"CC0_p"
,
"CC45_p_canesm"
,
"CC85_p_canesm"
,
"CC26_p_canesm"
,
"CC0_p_canesm"
)
### Define the names of the databases (SIMO-output for 10 watersheds) that will be imported
### Define the names of the databases (SIMO-output for 10 watersheds) that will be imported
# It is used in the skripts "structure_SIMO_rslDB_FBE.R" and "loadDB.R"
# It is used in the skripts "structure_SIMO_rslDB_FBE.R" and "loadDB.R"
db_names
<-
c
(
"MV_Hartola"
,
#db_names <- c(#"MV_Hartola",
"MV_Kitee"
,
#"MV_Kitee",
"MV_Korsnas"
,
# "MV_Korsnas" #,
"MV_Parikkala"
,
#"MV_Parikkala",
"MV_Pori"
,
#"MV_Pori",
"MV_Pyhtaa"
,
#"MV_Pyhtaa",
"MV_Raasepori"
,
#"MV_Raasepori",
"MV_Simo"
,
#"MV_Simo",
"MV_Vaala"
,
#"MV_Vaala",
"MV_Voyri"
)
#"MV_Voyri"
# )
# List all .db in 'input'
db_input
<-
list.files
(
inputFolder
,
pattern
=
".db$"
)
#Remove the ending ".db" from the list to create a database name
db_names
<-
gsub
(
".db"
,
""
,
db_input
)
### Restructure the SQL database.
### Restructure the SQL database.
...
@@ -83,16 +119,16 @@ first_load = FALSE
...
@@ -83,16 +119,16 @@ first_load = FALSE
if
(
first_load
==
TRUE
){
if
(
first_load
==
TRUE
){
# If one of the follwing simulation variants is read ...
# If one of the follwing simulation variants is read ...
if
(
sim_variant
%in%
c
(
"CC45"
,
"CC85"
,
"without"
,
"CC45_p"
,
"CC85_p"
,
"CC26_p"
,
"CC0_p"
,
"CC45_p_canesm"
,
"CC85_p_canesm"
,
"CC26_p_canesm"
,
"CC0_p_canesm"
)
)
{
if
(
sim_variant
%in%
all.variants
)
{
# Run the script with the SQL query for all management regimes
# Run the script with the SQL query for all management regimes
source
(
paste0
(
path
,
"structure_SIMO_rslDB_FBE.R"
))
source
(
paste0
(
path
,
"
/
structure_SIMO_rslDB_FBE.R"
))
}
else
{
}
else
{
# Otherwise, run the script witht the SQL query for Set aside without deadwood extraction (...SA)
# Otherwise, run the script witht the SQL query for Set aside without deadwood extraction (...SA)
# This needs a different SQL query, since the database does not contain harvest information
# This needs a different SQL query, since the database does not contain harvest information
source
(
paste0
(
path
,
"structure_SIMO_rslDB_SA.R"
))
# Query
source
(
paste0
(
path
,
"
/
structure_SIMO_rslDB_SA.R"
))
# Query
}
}
...
@@ -125,27 +161,32 @@ columns <- paste0("id,
...
@@ -125,27 +161,32 @@ columns <- paste0("id,
CARBON_STORAGE"
)
CARBON_STORAGE"
)
# Create the final CSV
# -------------------------
source
(
paste
(
path
,
"loadDB.R"
,
sep
=
"/"
))
### !!! CSV files are stored unter output
### !!! CSV files are stored unter output
#
#
# If data/columns have already been loaded and saved as csv file under ../output: csv_exist = TRUE
# If data/columns have already been loaded and saved as csv file under ../output: csv_exist = TRUE
# If data is loaded for the firest time OR "new columns have to be loaded" (takes some time): csv_exits = FALSE
# If data is loaded for the firest time OR "new columns have to be loaded" (takes some time): csv_exits = FALSE
csv_exist
=
TRUE
#
csv_exist = TRUE
#
#
### the following lines do not need any changes ###
### the following lines do not need any changes ###
if
(
csv_exist
==
FALSE
){
#
if(csv_exist == FALSE){
#
# If FALSE run the following script
# If FALSE run the following script
source
(
paste0
(
path
,
"loadDB.R"
))
#
source(paste0(path, "loadDB.R"))
#
}
else
{
#
} else {
#
# If TRUE read the CSV file that contains all watersheds (GPKGs)
#
# If TRUE read the CSV file that contains all watersheds (GPKGs)
rslt
<-
read.csv
(
paste0
(
path
,
"output/rslt_"
,
sim_variant
,
"_all.csv"
),
sep
=
";"
,
header
=
TRUE
,
stringsAsFactors
=
FALSE
)
#
rslt <- read.csv(paste0(path, "output/rslt_", sim_variant, "_all.csv" ), sep = ";", header = TRUE, stringsAsFactors = FALSE)
#
}
#
}
###
###
...
...
This diff is collapsed.
Click to expand it.
loadDB.R
+
85
−
64
View file @
68b94f18
...
@@ -16,84 +16,105 @@ library(dplyr)
...
@@ -16,84 +16,105 @@ library(dplyr)
# # Variant 1: create a single dataframe for each SQL Database (selected columns of table UNIT)
# Variant 1: create a single dataframe for each SQL Database (selected columns of table UNIT)
# # Dataframes are given the names of the DB and column "test" is added with the name of the DB
# Dataframes are given the names of the DB and column "test" is added with the name of the DB
#
# for (name in db_names){
#
# # name = "MV_Hartola"
# db <- dbConnect(dbDriver("SQLite"), dbname = paste0(path,"input_data/simulated_", sim_variant, "_", name, "_rsu.db"))
# rsl <- dbGetQuery( db, paste0("select ", columns, " from UNIT"))
# rsl$gpkg <- name
# dbDisconnect(db)
#
# ### Add the abbreviation of the regimes
# rsl <- rsl %>%
# left_join(regime, by = "branching_group", all.x = TRUE)
#
# ### Filter those stands that caused errors during the simulation with SIMO
# # import csv file that contains the error stands
# error_stands <- read.csv(paste0(path, "params/errors_watersheds.csv"), sep = ",", header = TRUE, stringsAsFactors = FALSE)
# error_stands$id <- as.character(error_stands$id)
#
# rsl <- rsl %>%
# anti_join(error_stands, by = c("id", "gpkg"))
#
#
# ### Rename set aside scenario if it considers deadwood extraction
# if(sim_variant %in% c("CC45", "CC85", "without", "CC45_p", "CC85_p", "CC26_p", "CC0_p", "CC45_p_canesm", "CC85_p_canesm", "CC26_p_canesm", "CC0_p_canesm")) {
#
# rsl <- rsl %>% mutate(regime = ifelse(regime %in% "SA", "SA_DWextract", regime))
#
# }
#
#
# write.table(rsl, paste0(path, "output/rsl_",sim_variant,"_",name,".csv" ), sep = ";", row.names = F, col.names = TRUE)
#
# assign( paste("rsl", name, sep="_"), rsl)
# rm(db, rsl)
#
# }
# Variant 2: create one hughe dataframe combining all SQL databases (selected columns of table UNIT)
for
(
name
in
db_names
){
# Different DBs are indicated by an additional column "test"
rslt
<-
NULL
#name = "simulated_without_MV_Korsnas_Wind_NO_1-15"
#db <- dbConnect(dbDriver("SQLite"), dbname = paste0(path,"input_data/simulated_", sim_variant, "_", name, "_rsu.db"))
db
<-
dbConnect
(
dbDriver
(
"SQLite"
),
dbname
=
paste
(
inputFolder
,
paste0
(
name
,
".db"
),
sep
=
"/"
))
#db <- dbConnect(dbDriver("SQLite"),
# dbname = paste0(path, "input_data/simulated_without_MV_Korsnas_Wind_NO_1-15.db"))
for
(
name
in
db_names
){
db
<-
dbConnect
(
dbDriver
(
"SQLite"
),
dbname
=
paste0
(
path
,
"input_data/simulated_"
,
sim_variant
,
"_"
,
name
,
"_rsu.db"
))
rsl
<-
dbGetQuery
(
db
,
paste0
(
"select "
,
columns
,
" from UNIT"
))
rsl
<-
dbGetQuery
(
db
,
paste0
(
"select "
,
columns
,
" from UNIT"
))
rsl
$
gpkg
<-
name
rsl
$
gpkg
<-
name
dbDisconnect
(
db
)
dbDisconnect
(
db
)
rslt
<-
rbind
(
rslt
,
rsl
)
rm
(
db
,
rsl
)
}
### Add the abbreviation of the regimes
### Add the abbreviation of the regimes
rslt
<-
rslt
%>%
rsl
<-
rsl
%>%
left_join
(
regime
,
by
=
"branching_group"
,
all.X
=
TRUE
)
left_join
(
regime
,
by
=
"branching_group"
,
all.x
=
TRUE
)
### Filter those stands that caused errors during the simulation with SIMO
# import csv file that contains the error stands
error_stands
<-
read.csv
(
paste0
(
path
,
"/params/errors_watersheds.csv"
),
sep
=
","
,
header
=
TRUE
,
stringsAsFactors
=
FALSE
)
error_stands
$
id
<-
as.character
(
error_stands
$
id
)
rsl
<-
rsl
%>%
anti_join
(
error_stands
,
by
=
c
(
"id"
,
"gpkg"
))
### Rename set aside scenario if it considers deadwood extraction
### Rename set aside scenario if it considers deadwood extraction
if
(
sim_variant
%in%
c
(
"CC45"
,
"CC85"
,
"without"
,
"CC45_p"
,
"CC85_p"
,
"CC26_p"
,
"CC0_p"
,
"CC45_p_canesm"
,
"CC85_p_canesm"
,
"CC26_p_canesm"
,
"CC0_p_canesm"
)
)
{
if
(
sim_variant
%in%
all.variants
)
{
rsl
t
<-
rsl
t
%>%
mutate
(
regime
=
ifelse
(
regime
%in%
"SA"
,
"SA_DWextract"
,
regime
))
rsl
<-
rsl
%>%
mutate
(
regime
=
ifelse
(
regime
%in%
"SA"
,
"SA_DWextract"
,
regime
))
}
}
# Export the final table
print
(
paste0
(
"writing csv for "
,
name
))
write.table
(
rsl
,
paste0
(
outputFolder
,
"/"
,
name
,
".csv"
),
sep
=
";"
,
row.names
=
F
,
col.names
=
TRUE
)
### Filter those stands that caused errors during the simulation with SIMO
#assign( paste("rsl", name, sep="_"), rsl)
# import csv file that contains the error stands
#rm(db, rsl)
error_stands
<-
read.csv
(
paste0
(
path
,
"params/errors_watersheds.csv"
),
sep
=
","
,
header
=
TRUE
,
stringsAsFactors
=
FALSE
)
#print("csv exported")
error_stands
$
id
<-
as.character
(
error_stands
$
id
)
}
rslt
<-
rslt
%>%
anti_join
(
error_stands
,
by
=
c
(
"id"
,
"gpkg"
))
### write table
# Variant 2: create one huge dataframe combining all SQL databases (selected columns of table UNIT)
write.table
(
rslt
,
paste0
(
path
,
"output/rslt_"
,
sim_variant
,
"_all.csv"
),
sep
=
";"
,
row.names
=
F
,
col.names
=
TRUE
)
# Different DBs are indicated by an additional column "test"
# rslt <- NULL
#
# for (name in db_names){
# #name = "MV_Korsnas"
# db <- dbConnect(dbDriver("SQLite"),
# dbname = paste0(inputFolder, name, ".db"))
# #dbname = paste0(path, "input_data/simulated_without_MV_Korsnas_Wind_NO_1-15.db"))
# #dbname = paste0(path,"input_data/simulated_", sim_variant, "_" , name, "_rsu.db"))
# rsl <- dbGetQuery( db, paste0("select ", columns, " from UNIT"))
# rsl$gpkg <- name
# dbDisconnect(db)
# rslt <- rbind(rslt, rsl)
# rm(db, rsl)
# }
#
# ### Add the abbreviation of the regimes
# rslt <- rslt %>%
# left_join(regime, by= "branching_group", all.X = TRUE)
#
#
# ### Rename set aside scenario if it considers deadwood extraction
# if(sim_variant %in% all.variants) {
#
# rslt <- rslt %>% mutate(regime = ifelse(regime %in% "SA", "SA_DWextract", regime))
#
# }
#
#
### Filter those stands that caused errors during the simulation with SIMO
# import csv file that contains the error stands
# error_stands <- read.csv(paste0(path, "params/errors_watersheds.csv"), sep = ",", header = TRUE, stringsAsFactors = FALSE)
# error_stands$id <- as.character(error_stands$id)
#
# rslt <- rslt %>%
# anti_join(error_stands, by = c("id", "gpkg"))
#
# ### write table
# write.table(rslt, paste0(path, "output/rslt_", sim_variant, "_all.csv" ), sep = ";", row.names = F, col.names = TRUE)
# write.table(rsl,
# paste0(path, "/", name, ".csv" ),
# sep = ";",
# row.names = F,
# col.names = TRUE)
...
...
This diff is collapsed.
Click to expand it.
structure_SIMO_rslDB_FBE.R
+
26
−
4
View file @
68b94f18
...
@@ -125,17 +125,39 @@ create_table_UNIT <- 'Create Table UNIT AS SELECT u.*,
...
@@ -125,17 +125,39 @@ create_table_UNIT <- 'Create Table UNIT AS SELECT u.*,
##### For each "db_names", defined in main.R ...
##### For each "db_names", defined in main.R ...
for
(
name
in
db_names
)
{
print
(
name
)
db
<-
dbConnect
(
dbDriver
(
"SQLite"
),
dbname
=
paste
(
inputFolder
,
paste0
(
name
,
".db"
),
sep
=
"/"
))
print
(
db
)
dbDisconnect
(
db
)
}
for
(
name
in
db_names
){
for
(
name
in
db_names
){
name
=
"MV_Korsnas"
#print(name)
#name = "simulated_without_MV_Korsnas_Wind_NO_1-15"
# Connect to the database
# Connect to the database
#con <- dbConnect(dbDriver("SQLite"),
#con <- dbConnect(dbDriver("SQLite"),
# dbname = paste0(path,"input_data/simulated_", sim_variant,"_" ,name , "_rsu.db"))
# dbname = paste0(path,"input_data/simulated_", sim_variant,"_" ,name , "_rsu.db"))
#db <- dbConnect(dbDriver("SQLite"),
# dbname = paste0(path, "input_data/simulated_without_MV_Korsnas_Wind_NO_1-15.db"))
#db <- dbConnect(dbDriver("SQLite"),
# dbname = paste(inputFolder, paste0(name, ".db"), sep = "/"))
db
<-
dbConnect
(
dbDriver
(
"SQLite"
),
db
<-
dbConnect
(
dbDriver
(
"SQLite"
),
dbname
=
paste0
(
path
,
"input_data/simulated_without_MV_Korsnas_Wind_NO_1-15.db"
))
dbname
=
paste
(
inputFolder
,
paste0
(
name
,
".db"
),
sep
=
"/"
))
# If the following tables already exist, for which the query is defined, remove them
# If the following tables already exist, for which the query is defined, remove them
tab_to_delete
<-
c
(
"OPERS2"
,
"OPERS3"
,
"max_v"
,
"UNIT"
)
tab_to_delete
<-
c
(
"OPERS2"
,
"OPERS3"
,
"max_v"
,
"UNIT"
)
...
@@ -152,7 +174,7 @@ for (name in db_names){
...
@@ -152,7 +174,7 @@ for (name in db_names){
create_table_UNIT
)
create_table_UNIT
)
for
(
i
in
query_to_run
){
for
(
i
in
query_to_run
){
#i = create_table_UNIT
dbExecute
(
db
,
i
)
dbExecute
(
db
,
i
)
}
}
...
...
This diff is collapsed.
Click to expand it.
structure_SIMO_rslDB_SA.R
+
7
−
1
View file @
68b94f18
...
@@ -71,7 +71,13 @@ for (name in db_names){
...
@@ -71,7 +71,13 @@ for (name in db_names){
# name = "MV_Hartola"
# name = "MV_Hartola"
# Connect to the database
# Connect to the database
con
<-
dbConnect
(
dbDriver
(
"SQLite"
),
dbname
=
paste0
(
path
,
"input_data/simulated_"
,
sim_variant
,
"_"
,
name
,
"_rsu.db"
))
#con <- dbConnect(dbDriver("SQLite"), dbname = paste0(path,"input_data/simulated_", sim_variant,"_" ,name , "_rsu.db"))
# db <- dbConnect(dbDriver("SQLite"),
# dbname = paste(inputFolder, paste0(name, ".db"), sep = "/"))
db
<-
dbConnect
(
dbDriver
(
"SQLite"
),
dbname
=
paste
(
inputFolder
,
paste0
(
name
,
".db"
),
sep
=
"/"
))
# If the following tables already exist, for which the query is defined, remove them
# If the following tables already exist, for which the query is defined, remove them
tab_to_delete
<-
c
(
"OPERS2"
,
"OPERS3"
,
"max_v"
,
"UNIT"
)
tab_to_delete
<-
c
(
"OPERS2"
,
"OPERS3"
,
"max_v"
,
"UNIT"
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment