0

我有数百个没有坐标参考系统的 shapefile。我的目标是在 WorldClim 栅格图层上叠加空间多边形。我以前使用过这种方法,没有任何问题。但是,这次我的 shapefile 中的坐标对我来说很奇怪。多边形内边界框和坐标的每个坐标由 8 位数字组成,没有逗号或点来分隔小数点。这是其中一种形状的边界框:

SHP bbox: xmin:-17367529, xmax:17367529, ymin:-5997367 and ymax:7052489 

这与 WorldClim 栅格图层的边界框明显不同。

WorldClim bbox: xmin=-180,xmax=180,ymin=-60 and ymax=90

当我尝试使用 plot 命令将 shapefile 覆盖在栅格图层上时,没有任何反应。

plot(shapefile, add=T)

我明白这是一个投影问题。然后我尝试使用 CRS 函数在 shapefile 中分配 WorldClim 栅格图层的相同坐标系。但是,结果保持不变(即 shapefile 不在光栅上)。在序列中,我尝试使用 rgdal 包中的 spTransform 函数重新投影 shapefile 坐标。但是,由于 shapefile 没有任何参考系统,因此该功能不起作用,我不知道如何重新投影 shapefile 以匹配栅格图层。几天来我一直在研究如何处理这个问题,我相信没有参考系统是问题的关键。但是,我无法克服这个问题,我想知道是否有人可以帮助如何处理这种情况。

4

1 回答 1

2

您需要先使用定义形状文件的投影,proj4string(meuse)然后crs(shapefile)<-crs string可以使用spTransform

library(rgdal)
data(meuse)
coordinates(meuse) <- c("x", "y")

在这里,您拥有带有 x 和 y 的空间数据,但您还crs没有!所以如果你使用spTransform它会失败。

summary(meuse) #proj4string : [NA] so below line fails!
meuse.utm <- spTransform(meuse, CRS("+proj=utm +zone=32 +datum=WGS84"))
# Error in spTransform(xSP, CRSobj, ...) : 
#   No transformation possible from NA reference system

为了解决这个问题,如上所述,您首先需要定义如下投影:

proj4string(meuse) <- CRS(paste("+init=epsg:28992",
"+towgs84=565.237,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812"))
summary(meuse) #proj4string : epsg:28992...  and then you may use spTransform

接着:

meuse.utm <- spTransform(meuse, CRS("+proj=utm +zone=32 +datum=WGS84"))
于 2019-11-11T00:07:32.660 回答