读取具有字符编码的shapefile

4

有没有一种方法可以使用特定的字符编码读取Shape文件?我试图读入一个加拿大的Shape文件,其中一些名称中有特殊(法语)字符。我可以手动转换它们,但如果有某个设置,我更愿意不这样做。

# 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") 

1
rgdal包中的readOGR()函数怎么样?有两个参数,你可能会用到:encoding和use_iconv。 - jazzurro
我会尝试一下并回复你! - Brandon Bertelsen
@jazzurro请以答案的形式发布。它对我有用。 - Brandon Bertelsen
2
rgdal 的语法是:pasl=readOGR(".","filename", use_iconv=TRUE, encoding="UTF-8") - user3386170
1
@user3386170,请考虑将您的评论添加为答案! - Brandon Bertelsen
@BrandonBertelsen 完成了! - user3386170
1个回答

3

使用 maptoolsreadShapePoly 参数的方法已经过时,应该使用 rgdal 库与 readOGR 函数代替,这样可以获得更多的选项。例如,使用 rgdal 的语法如下:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接