diff --git a/NEWS.md b/NEWS.md index eec8e9f..d32dc4b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,9 @@ +# climate 1.2.2 + +* Major fixes for adjusting code to stay in line with CRAN policies +* Fixes for `hydro_imgw()` set of functions due to changes in encoding and metadata structure + + # climate 1.2.1 * Corrected duplicated column names for IMGW-PIB stations diff --git a/R/clean_metadata_hydro.R b/R/clean_metadata_hydro.R index 7f6da71..0879717 100644 --- a/R/clean_metadata_hydro.R +++ b/R/clean_metadata_hydro.R @@ -9,34 +9,30 @@ clean_metadata_hydro = function(address, interval) { temp = tempfile() test_url(link = address, output = temp) - a = readLines(temp, warn = FALSE) - - a = iconv(a, from = "cp1250", to = "ASCII//TRANSLIT") # remove polish characters - a = gsub(a, pattern = "\\?", replacement = "") # removing extra characters after conversion - - # additional workarounds for mac os but not only... + a = read.csv(temp, header = FALSE, stringsAsFactors = FALSE, + fileEncoding = "CP1250", skip = 1, sep = "\t")$V1 + a = gsub(a, pattern = "\\?", replacement = "") a = gsub(x = a, pattern = "'", replacement = "") - a = gsub(x = a, pattern = "\\^", replacement = "") + a = trimws(gsub(x = a, pattern = "\\^", replacement = "")) + a = gsub(a, pattern = "\\s+", replacement = " ") if (interval == "monthly") { - b = list(data.frame(parameters = a[3:12])) # sklad danych jeszcze nie wiem jak ominąć problem kontroli - # ale on może się zmienić nie wiem czy nie lepiej wykluczyć ostatni rok + b = list(data.frame(parameters = a[1:10])) } if (interval == "daily") { - b = data.frame(parameters = a[3:12]) + b = data.frame(parameters = a[1:10]) } if (interval == "semiannual_and_annual") { - godzina = paste0(a[15], ":", a[16]) # nie jestem pewien czy tak bo w dokumentacji jest podzial na dwie kolumny, - #ale w pliku jest jedna kolumna a pomiaru brak - data = c(a[12:14], godzina) + godzina = paste0(a[13], ":", a[14]) + data = c(a[10:12], godzina) data_od = paste0("wystapienie_od_", data) - data_do = paste0("wystapienie_od_", data) - SPT = unlist(strsplit(a[10], "]/")) # stan/przeplyw/temperatura + data_do = paste0("wystapienie_do_", data) + SPT = unlist(strsplit(a[8], "]/")) # stan/przeplyw/temperatura SPT[1] = paste0(SPT[1], "]") SPT[2] = paste0(SPT[2], "]") b = NULL for (i in seq_along(SPT)) { - tmp = c(a[3:9], SPT[i], data_od, data_do) + tmp = c(a[1:7], SPT[i], data_od, data_do) b = cbind(b, tmp) } b = list("H" = data.frame(parameters = b[, 1]), diff --git a/R/hydro_imgw_annual.R b/R/hydro_imgw_annual.R index 7e36b2d..3ee96a0 100644 --- a/R/hydro_imgw_annual.R +++ b/R/hydro_imgw_annual.R @@ -72,7 +72,7 @@ hydro_imgw_annual_bp = function(year = year, ind = grep(readHTMLTable(a)[[1]]$Name, pattern = "/") catalogs = as.character(readHTMLTable(a)[[1]]$Name[ind]) catalogs = gsub(x = catalogs, pattern = "/", replacement = "") - # less files to read: + catalogs = catalogs[catalogs %in% as.character(year)] if (length(catalogs) == 0) { stop("Selected year(s) is/are not available in the database.", call. = FALSE) @@ -81,10 +81,7 @@ hydro_imgw_annual_bp = function(year = year, all_data = vector("list", length = length(catalogs)) for (i in seq_along(catalogs)) { - # i = 1 catalog = catalogs[i] - #print(i) - address = paste0(base_url, interval_pl, "/", catalog, "/polr_", value, "_", catalog, ".zip") temp = tempfile() @@ -104,19 +101,19 @@ hydro_imgw_annual_bp = function(year = year, all_data[[i]] = data1 } all_data = do.call(rbind, all_data) - # ten sam warunek braku danych lub obserwacji dla wszytkich wartosci all_data[all_data == 99999.999] = NA all_data = all_data[, !duplicated(colnames(all_data))] # coords if (coords) { - all_data = merge(climate::imgw_hydro_stations, all_data, by.x = "id", by.y = "Kod stacji", all.y = TRUE) + all_data = merge(climate::imgw_hydro_stations, all_data, by.x = "id", by.y = "Nazwa rzeki/jeziora", all.y = TRUE) } #station selection if (!is.null(station)) { if (is.character(station)) { all_data = all_data[substr(all_data$`Nazwa stacji`, 1, nchar(station)) == station, ] if (nrow(all_data) == 0) { + stop("Selected station(s) is not available in the database.", call. = FALSE) } } else if (is.numeric(station)) { diff --git a/R/hydro_imgw_daily.R b/R/hydro_imgw_daily.R index a1940ed..2469576 100644 --- a/R/hydro_imgw_daily.R +++ b/R/hydro_imgw_daily.R @@ -133,7 +133,7 @@ hydro_imgw_daily_bp = function(year, all_data[[i]] = merge(data, data2, by = c("Kod stacji", "Nazwa stacji", "Rok hydrologiczny", "Nazwa rzeki/jeziora", - "Wskaznik miesiaca w roku hydrologicznym", "Dzien"), + "Wskaźnik miesiąca w roku hydrologicznym", "Dzień"), all.x = TRUE) } @@ -168,8 +168,8 @@ hydro_imgw_daily_bp = function(year, all_data = all_data[order(all_data$`Nazwa stacji`, all_data$`Rok hydrologiczny`, - all_data$`Wskaznik miesiaca w roku hydrologicznym`, - all_data$`Dzien`), ] + all_data$`Wskaźnik miesiąca w roku hydrologicznym`, + all_data$`Dzień`), ] # dodanie opcji dla skracania kolumn i usuwania duplikatow: all_data = hydro_shortening_imgw(all_data, col_names = col_names, ...) diff --git a/R/hydro_imgw_monthly.R b/R/hydro_imgw_monthly.R index ce7c605..9b58d11 100644 --- a/R/hydro_imgw_monthly.R +++ b/R/hydro_imgw_monthly.R @@ -123,7 +123,7 @@ hydro_imgw_monthly_bp = function(year, all_data = all_data[order(all_data$`Nazwa stacji`, all_data$`Rok hydrologiczny`, - all_data$`Wskaznik miesiaca w roku hydrologicznym`), ] + all_data$`Wskaźnik miesiąca w roku hydrologicznym`), ] all_data = hydro_shortening_imgw(all_data, col_names = col_names, ...) return(all_data) diff --git a/data-raw/hydro_parametry_skroty.csv b/data-raw/hydro_parametry_skroty.csv index ed29e7a..22b425c 100644 --- a/data-raw/hydro_parametry_skroty.csv +++ b/data-raw/hydro_parametry_skroty.csv @@ -1,23 +1,28 @@ fullname;abbr_eng;fullname_eng;; Kod stacji;id;ID;; Dzien;dd;Day;; -Miesiac kalendarzowy;mm;Month;; +Dzień;dd;Day;; +Miesiąc kalendarzowy;mm;Month;; Nazwa rzeki/jeziora;riv_or_lake;River_or_Lake;; Nazwa stacji;station;Station;; -Przeplyw [m^3/s];Q;Flow [m3_s];; -Rodzaj wielkosci (H - stan wody, Q - przeplyw, T - temperatura wody);Mesu;"Measurement [state - H, flow - Q, or temperature - T]""";;` +Przepływ [m^3/s];Q;Flow [m3_s];; +Rodzaj wielkości (H - stan wody, Q - przepływ, T - temperatura wody);Mesu;Measurement [state - H, flow - Q, or temperature - T];;` Rok hydrologiczny;hyy;Hydrologic year;; Stan wody [cm];H;State [cm];; Temperatura wody [st. C];T;Temperature [C];; -Wskaznik ekstremum;idex;Extreme ID [min - 1, mean - 2, Max - 3];; -Wskaznik ekstremum (1 - minimum, 2 - srednia, 3 - maksimum);idex;Extreme ID [min - 1, mean - 2, Max - 3];; -Wskaznik miesiaca w roku hydrologicznym;idhyy;Hydrologic year ID;; -Wskaznik polrocza (13 - zima, 14 - lato, 15 - rok);idyy;Year ID [13 -winter, 14 - summer, 15 - year];; -wystapienie_od_Dzien;bedd;Occurrence from day;; -wystapienie_od_Godzina:Minuta;behm;Occurrence from time;; -wystapienie_od_Miesiac;bemm;Occurrence from month;; -wystapienie_od_Rok;beyy;Occurrence from year;; -Grubosc lodu [cm];thick;Thickness of ice [cm];; -Kod zjawiska lodowego (slownik ponizej);id_ice;Ice phenomena;; -"Procent udzialu zjawiska lodowego [mnoznik *10; np. 3 oznacza 30% udzialu zjawisk lodowych]";p_ice;Percentage of ice phenomena;; -Kod zarastania (slownik ponizej);id_over_grow;Overgrowing;; +Wskaźnik ekstremum;idex;Extreme ID [min - 1, mean - 2, Max - 3];; +Wskaźnik ekstremum (1 - minimum, 2 - średnia, 3 - maksimum);idex;Extreme ID [min - 1, mean - 2, Max - 3];; +Wskaźnik miesiąca w roku hydrologicznym;idhyy;Hydrologic year ID;; +Wskaźnik półrocza (13 - zima, 14 - lato, 15 - rok);idyy;Year ID [13 -winter, 14 - summer, 15 - year];; +wystapienie_od_Dzień;bedd;Occurrence from day;; +wystapienie_od_Godzina:Minuta;behm;Occurrence start time;; +wystapienie_od_Miesiąc;bemm;Occurrence start month;; +wystapienie_od_Rok;beyy;Occurrence start year;; +wystapienie_do_Dzień;bedd;Occurrence start day;; +wystapienie_do_Godzina:Minuta;behm;Occurrence end time;; +wystapienie_do_Miesiąc;bemm;Occurrence end month;; +wystapienie_do_Rok;beyy;Occurrence end year;; +Grubość lodu [cm];thick;Thickness of ice [cm];; +Kod zjawiska lodowego (słownik poniżej);id_ice;Ice phenomena;; +"Procent udziału zjawiska lodowego [mnożnik *10; np. 3 oznacza 30% udziału zjawisk lodowych]";p_ice;Percentage of ice phenomena;; +Kod zarastania (słownik poniżej);id_over_grow;Overgrowing;; diff --git a/data/imgw_hydro_abbrev.rda b/data/imgw_hydro_abbrev.rda index 19968b1..88c8942 100644 Binary files a/data/imgw_hydro_abbrev.rda and b/data/imgw_hydro_abbrev.rda differ