我正在尝试使用readOGR
包提供的rgdal
函数读取OGR矢量图,但是我对德国变形金刚有点麻烦。我提供了一个关于数据外观的例子,像ö这样的变音符号被替换为\ 303 \ 266。
map <-readOGR("/path/to/data.gdb", layer = "layer")
map@data$name
# [1] L\303\266rrach
# [2] Karlsruhe
# [3] B\303\266blingen
# [4] ...
我试图在readOGR
函数(readOGR(dsn = "/path/to/data.gdb", layer = "layer", encoding = "UTF-8"
或readOGR(dsn = "/path/to/data.gdb", layer = "layer", encoding = "LATIN-1"
)中指定一个编码,但它看起来完全忽略了编码参数,因为我为我尝试过的每个编码得到了相同的结果。有谁知道如何获得readOGR
函数或R来显示正确的德语变音符号?
我不太确定encoding = "UTF-8/LATIN-1/..."
会做什么。我本以为你会选择一种且只有一种编码方案。在我的机器上,我确实看到该八进制字符转换为o-umlaut:
> 'B\303\266blingen'
[1] "Böblingen"
> 'L\303\266rrach'
[1] "Lörrach"
要查看R字符的各种约定,请键入:
?Quotes
除了编码之外,还需要使用字体中的字符。控制台显示中使用的字体似乎没有适合o-umlaut的映射。我的默认字体是Courier。您还应该检查您的区域设置。 ?Sys.getlocale
朱利安是对的。
file_name <- "../gis_data/bw/AX_KommunalesGebiet.shp"
shape_kommunal <- readOGR(file_name, layer = "AX_KommunalesGebiet", use_iconv = TRUE, encoding = "UTF-8")
data_kommunal <- shape_kommunal@data
head(data_kommunal)
正确返回字符串:
GKZ NAME
0 08236074 Kämpfelbach
1 08425052 Grundsheim
2 08435067 Deggenhausertal
如果iconv未设置为TRUE,则忽略encoding-parameter。