编辑:我略微重写了标题问题,并调整了文本以回应@DWin的评论.
组合投影和未投影的地理图层可能具有挑战性.通常,似乎有些转型是必要的,因为地理层来自不同的产品和出版商.
我知道R有几个工具来执行地理变换.例如:
Spatial*在sp封装中,spTransform()在功能rgdal包都可以使用; 和,Raster*在raster封装中,projectRaster()可以使用的功能.这是我想要在R中完成的特定任务:转换为UTM网格区域15N(基准:NAD83)描述UTM网格区域15N(基准面:NAD27)投影中的湖泊的多边形层(这是ESRI shapefile格式).
这里有用的是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)
栅格有点棘手,因为它们通常涉及一个扭曲,因此你最终会在投影坐标系中得到一个规则网格 - 你不能只改变角点的坐标......