【问题标题】:Building a proj4 string for readShapePoly in R在 R 中为 readShapePoly 构建 proj4 字符串
【发布时间】: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 对象相关联。我想我可以通过使用正确的 proj4stringreadShapePoly, 来解决这个问题,但找不到如何将 .prj 文件中的信息转换为proj4 字符串。我该怎么做/这是正确的方法吗?

【问题讨论】:

  • 我建议你检查两层的投影。我也会改用rgdal::readOGR。你试过了吗?您介意提供对您数据的访问权限吗?
  • 正如@PauloCardoso 建议的那样,尝试:library(rgdal); spu &lt;- readOGR('.', 'spus')。应自动导入与 shp 关联的 .prj 中的投影信息。
  • 是的,谢谢@PauloCardoso 我确实需要确保我的基础地图图层与我的数据投影相匹配。
  • 一旦我安装了rgdal readOGR 在我调用summary(spu) 时正确识别了投影。

标签: r gis proj


【解决方案1】:

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

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

system('gdalsrsinfo "spus.prj"')

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

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

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

【讨论】:

  • “应该包含在系统PATH环境变量中”是什么意思?怎么办?
  • PATH 是一个系统变量,其中包含一组通常包含可执行文件的目录。在 PATH 中有一个目录意味着它包含的文件是可执行的,而无需导航到目录本身。在 Windows here 中添加到 PATH 所需的步骤有明确的描述。对于其他操作系统,请在网络上搜索 add directory to path variable osx 之类的内容。网上应该有很多说明。注意修改PATH后需要重启R/RStudio。
  • 包含 GDAL 可执行文件的目录可能已经存在于您的 PATH 中。要确定这一点,您可以打开命令提示符(或终端)窗口,然后键入 gdalsrsinfo。如果它返回有关gdalsrsinfo 正确用法的信息,则说明您在做生意。您还可以使用echo %PATH%(在 Windows 中)从命令行查看 PATH 的内容。
  • 感谢详细的解释!我得试试。
猜你喜欢
  • 1970-01-01
  • 2016-03-28
  • 2016-08-23
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 2012-11-15
  • 2013-06-10
相关资源
最近更新 更多