【问题标题】:Combining geographic layers with different projections in R将地理图层与R中的不同投影相结合
【发布时间】:2012-02-11 01:09:20
【问题描述】:

编辑:我稍微改写了标题问题,并调整了文本以回应@DWin 的评论。

组合已投影和未投影的地理图层可能具有挑战性。通常,似乎需要进行一些转换,因为地理层来自不同的产品和出版商。

我知道 R 有多种工具来执行地理变换。例如:

  1. 对于sp包中Spatial*类的对象,可以使用rgdal包中的spTransform()函数;并且,
  2. 对于raster包中Raster*类的对象,可以使用projectRaster()函数。

这是我想在 R 中完成的一项特定任务:转换为 UTM 网格区域 15N(基准:NAD83)一个多边形图层,描述 UTM 网格区域 15N(基准:NAD27)投影中的湖泊(这是在ESRI shapefile 格式)。

【问题讨论】:

  • 这个问题似乎过于宽泛,您是在要求读者提供一般性意见或要求他们构建自己的示例。我认为您没有理由不缩小问题范围,并期望您提供创建可用于说明特定解决方案的结构的虚拟示例。
  • @Dwin 已经改写了问题的标题和文本。请求的任务要窄得多。
  • 事实证明,答案比我预期的更笼统,感谢您和@Spaceman。

标签: r gis


【解决方案1】:

这里有用的是rgdal中包含的epsg数据库。

epsgs = make_EPSG()
subset(epsgs,grepl("15N",epsgs$note))

[etc]
      code
2703 26715                         # NAD27 / UTM zone 15N  [etc]
2851 26915                         # NAD83 / UTM zone 15N  [etc]
[etc]

这些代码是您在 spTransform 中需要的。如果您的湖泊位于具有该 NAD27 投影的 shapefile 中,则:

require(maptools)
lakes = readShapeSpatial("lakes.shp")
proj4string(lakes)=CRS("+init=epsg:26715")

应该给你提供的湖泊(注意我不认为 readShapeSpatial 会读取带有 shapefile 集的 .prj 文件,所以我在这里明确设置)

现在转换为 UTM 区域 15N 的 NAD83 基准版本:

lakes83 = spTransform(lakes,CRS("+init=epsg:26915"))

栅格有点棘手,因为它们通常涉及扭曲,因此您最终会在投影坐标系中得到一个规则网格 - 您不能只转换角的坐标...

【讨论】:

猜你喜欢
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 2019-11-10
  • 2020-06-20
  • 1970-01-01
  • 2016-09-11
相关资源
最近更新 更多