【发布时间】:2014-06-17 11:40:54
【问题描述】:
我在 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, 来解决这个问题,但找不到如何将 .prj 文件中的信息转换为proj4 字符串。我该怎么做/这是正确的方法吗?
【问题讨论】:
-
我建议你检查两层的投影。我也会改用
rgdal::readOGR。你试过了吗?您介意提供对您数据的访问权限吗? -
正如@PauloCardoso 建议的那样,尝试:
library(rgdal); spu <- readOGR('.', 'spus')。应自动导入与 shp 关联的 .prj 中的投影信息。 -
是的,谢谢@PauloCardoso 我确实需要确保我的基础地图图层与我的数据投影相匹配。
-
一旦我安装了
rgdalreadOGR在我调用summary(spu)时正确识别了投影。