使用 mapview 显示地图 在 data.frame 中包含多字节字符

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

我想使用 mapview 包显示数据。

但包含多字节字符,有时无法显示地图。

显示地图的最佳方式是什么?

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 

但是,测试列字符中的弹出窗口是损坏的文本。

数据正确。

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 五十嵐

从提交 bc2c57f 开始,这应该已经修复。在mapview的下一个CRAN版本发布之前,只需使用开发版本(devtools::install_github("environmentalinformatics-marburg/mapview", ref = "develop"))来解决这个问题。

简而言之,此行为与我们的 Rcpp 例程有关,这些例程在幕后 运行 以确保计算高效地创建弹出表。在这里,使用用户的本机编码而不是 UTF-8 来创建 JSON 输出文件,导致在 UTF-8 不是默认设置的某些机器上导致文本输出损坏。