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

时间:2017-03-18 09:22:32

标签: r sp r-mapview

我想使用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 

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

数据是正确的。

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

1 个答案:

答案 0 :(得分:1)

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

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