问题描述
我有一个具有4层的栅格,我想将范围转换为lon / lat以便进行提取,但是点和栅格的投影或范围不匹配。你能帮我吗?
pp.an
class : RasterBrick
dimensions : 530,748,396440,4 (nrow,ncol,ncell,nlayers)
resolution : 1000,1000 (x,y)
extent : 133000,881000,225000,755000 (xmin,xmax,ymin,ymax)
crs : +proj=longlat +datum=wgs84 +ellps=wgs84 +towgs84=0,0
source : memory
names : X01,X02,X03,X04
min values : 13.12333,12.16333,16.02000,13.00667
max values : 75.00333,65.92000,88.52333,100.46333
: 01,02,03,04
pshp
class : SpatialPoints
features : 5
extent : 27.25892,27.38349,44.43456,44.55279 (xmin,ymax)
crs : +proj=longlat +datum=wgs84 +ellps=wgs84 +towgs84=0,0
pshp<- data.frame(Y = c(44.548684,44.533389,44.537298,44.4345597,44.552794),X = c(27.258922,27.282476,27.347930,27.331980,27.383491))
coordinates(pshp) <- ~X+Y
proj4string(pshp)<- CRS("+init=epsg:4326")
pshp1 <- spTransform(pshp,projection(p.p))
crs(pshp) <-"+proj=longlat +datum=wgs84 +ellps=wgs84 +towgs84=0,0"
projectRaster(pp.an,crs = projection(pshp))
ex <- extract(pp.an,pshp1)
解决方法
-
要从具有不同crs的栅格中提取点的值,应该转换点而不是栅格(以避免精度损失)。
-
您显示
的范围,这显然是错误的pp.an
的crs设置为+proj=longlat +datum=WGS84
。鉴于您说这是UTM且133000,881000,225000,755000
所以首先您需要设置正确的crs
crs(pp.an) <- "+proj=utm +zone=??? +datum=WGS84"
然后变换点
pshp1 <- spTransform(pshp,projection(pp.an))
然后使用extract
e <- extract(pp.an,pshp1)