Search code examples
rr-spr-mapview

show the map using mapview include multibyte character in data.frame


I want to show the data using mapview package.

but include multibyte character, sometime cannot show the map.

What would be the best thing to show the map?

library(mapview)
data(atlStorms2005)
test1 <- test2 <- atlStorms2005

test1@data$test <- as.factor(c("日本語", "てすと")) 
test2@data$test <- as.factor(c("日本語", "五十嵐"))

mapview(test1)   # can show the map
mapview(test2)    # cannot show

re.data.frame <- function(data, encoding = "UTF-8", fileEncoding="UTF-8"){
  write.csv(data, file("tmp.csv", encoding = encoding), row.names = F, fileEncoding=fileEncoding)
  tmp <- readr::read_csv("tmp.csv",  col_types = cols())
  return(tmp)
}

test2@data <- re.data.frame(test2@data)
mapview(test2) # can show 

but,the popup in test colum character is corrupted text. enter image description here

data is correct.

head(test2@data)

# A tibble: 6 × 4
Name MaxWind MinPress   test
<chr>   <int>    <int>  <chr>
  1  ALPHA      45      998 日本語
2 ARLENE      60      989 五十嵐
3   BRET      35     1002 日本語
4  CINDY      65      991 五十嵐
5  DELTA      60      980 日本語
6 DENNIS     130      930 五十嵐

Solution

  • As of commit bc2c57f, this should have been fixed. Until the next CRAN release of mapview, simply use the development version (devtools::install_github("environmentalinformatics-marburg/mapview", ref = "develop")) to solve this issue.

    In brief, this behavior was related to our Rcpp routines which run under the hood in order to ensure a computationally efficient creation of popup tables. Here, the user's native encoding was used instead of UTF-8 to create JSON output files, resulting in corrupted text output on some machines where UTF-8 was not the default.