在R中为readShapePoly构建一个proj4字符串

时间:2014-05-01 00:08:18

标签: r gis proj4

我在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对象相关联。我想我可以通过使用proj4stringreadShapePoly,使用正确的{{1}}来解决此问题,但无法找到如何翻译中的信息。将prj文件转换为proj4字符串。我该怎么做/这是正确的方法吗?

1 个答案:

答案 0 :(得分:3)

要将.prj转换为proj4,您可以使用命令行工具gdalsrsinfo,如here所述。

要从R运行它,你可以这样做:

system('gdalsrsinfo "spus.prj"')

其中spus.prj是.prj文件的完整(或相对于wd)路径。

返回的信息中包含proj4字符串。

请注意,为了使此工作按此处提供,包含gdalsrsinfo.exe的路径应包含在系统PATH环境变量中。否则,您可以在system调用中提供gdalsrsinfo的完整路径。