使用 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 不是默认设置的某些机器上导致文本输出损坏。
我想使用 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 不是默认设置的某些机器上导致文本输出损坏。