将地理层与R中的不同投影相结合

dig*_*aps 3 gis r

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

组合投影和未投影的地理图层可能具有挑战性.通常,似乎有些转型是必要的,因为地理层来自不同的产品和出版商.

我知道R有几个工具来执行地理变换.例如:

  1. 对于类的对象Spatial*sp封装中,spTransform()在功能rgdal包都可以使用; 和,
  2. 对于类的对象Raster*raster封装中,projectRaster()可以使用的功能.

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

Spa*_*man 5

这里有用的是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]
Run Code Online (Sandbox Code Playgroud)

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

require(maptools)
lakes = readShapeSpatial("lakes.shp")
proj4string(lakes)=CRS("+init=epsg:26715")
Run Code Online (Sandbox Code Playgroud)

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

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

lakes83 = spTransform(lakes,CRS("+init=epsg:26915"))
Run Code Online (Sandbox Code Playgroud)

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