4

有没有办法读取具有特定字符编码的形状文件?我正在尝试阅读加拿大 shapefile,其中某些名称中包含特殊(法语)字符。我可以手动转换它们,但如果在某个地方有一个我很盲目的设置,我不希望这样做。

# manual conversion works
library(maptools)
shp <- file.path("path/to/file.shp")
map <- readShapePoly(shp, proj4string = CRS("+init=epsg:25832"))
map$ERNAME <- iconv(map$ERNAME, "Windows-1252", "UTF-8") 
4

1 回答 1

2

使用带有函数的库而不是使用maptoolsreadShapePoly参数,可以提供更多选项。例如,使用 rgdal 的语法可以是:rgdalreadOGR

pasl=readOGR(".","filename", use_iconv=TRUE, encoding="UTF-8")

请注意,这不是一个通用的解决方案,而是取决于文件的编码,在 OP 案例中是UTF-8. 常见的编码还包括latin1. 在某些 shapefile 中,编码与文件一起在.cpg文件中命名(使用文本编辑器软件打开).shpQGIS创建新的 shapefile 时会自动生成.cpg文件,但许多其他 GIS 软件不会。

于 2020-09-25T16:28:00.200 回答