我在R中用readShapePoly
阅读了lodgepole松树种子规划单位的shapefile,就像这样
spu <- readShapePoly("spus.shp")
当我单独绘制spus时,它们会显示出来。
plot(spu, border=TRUE)
当我尝试将shapefile添加到加拿大的地图时,我知道spus应该去的地方,它们不会出现。
map("worldHires","Canada", xlim=c(-141,-110), ylim=c(45,65), col="gray90", fill=TRUE)
plot(spu, add=TRUE, border=TRUE)
我认为这是因为shapefile缺少.prj文件中包含的投影信息:
PROJCS["NAD_1983_Albers",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",1000000.0],
PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-126.0],PARAMETER["Standard_Parallel_1",50.0],
PARAMETER["Standard_Parallel_2",58.5],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Meter",1.0]]
的部分输出
summary(spu)
Object of class SpatialPolygonsDataFrame
Coordinates:
min max
x 642162.8 1870556
y 457057.2 1421478
Is projected: NA
proj4string : [NA]
Data attributes:
显示没有投影信息与R中的spu对象相关联。我想我可以通过使用proj4string
和readShapePoly,
使用正确的{{1}}来解决此问题,但无法找到如何翻译中的信息。将prj文件转换为proj4字符串。我该怎么做/这是正确的方法吗?
答案 0 :(得分:3)
要将.prj转换为proj4,您可以使用命令行工具gdalsrsinfo
,如here所述。
要从R运行它,你可以这样做:
system('gdalsrsinfo "spus.prj"')
其中spus.prj
是.prj文件的完整(或相对于wd)路径。
返回的信息中包含proj4字符串。
请注意,为了使此工作按此处提供,包含gdalsrsinfo.exe的路径应包含在系统PATH环境变量中。否则,您可以在system
调用中提供gdalsrsinfo的完整路径。