2013-03-06 45 views
0

请原谅我的天真。我在重新投标SGDF时遇到了麻烦。5公里* 5公里分辨率的重新项目SGDF到0.05 * 0.05

我有一个xyz(x =经度,y =纬度,z =值)3列数据集。经度和纬度值是EPSG:3035格式的坐标。我将数据帧转换成EPSG:3035中预测的空间分辨率为5公里* 5公里的网格。我希望将网格重新投影到EPSG:4326,空间分辨率为0.05 * 0.05。但是,我收到以下警告消息:

Warning messages: 
1: In spTransform(radon, CRS("+init=epsg:4326")) : Grid warping not available, coercing to points 
2: In spTransform(as(x, "SpatialPixelsDataFrame"), CRSobj, ...) : Grid warping not available, coercing to points 

有人可以请告诉我,我如何重新投影电网。下面是一个小的可重复的例子:

library(sp) 
library(rgdal) 
library(raster) 

x=c(5013500, 5018500, 4883500, 4888500, 4893500, 4898500, 4908500,4948500, 4953500, 4958500, 4963500, 4973500, 4978500, 4988500, 5008500, 5013500, 5028500, 4878500, 4883500, 4888500, 4893500,4898500, 4903500,4928500, 4963500, 4968500, 4973500, 4978500, 4983500, 4988500) 

y=c(5395500, 5395500, 5390500, 5390500, 5390500, 5390500, 5390500,5390500, 5390500, 5390500, 5390500, 5390500, 5390500, 5390500, 5390500,5390500, 5390500, 5385500, 5385500, 5385500, 5385500, 5385500, 5385500,5385500, 5385500, 5385500, 5385500, 5385500, 5385500, 5385500) 

z=c(1.74, 1.74, 1.82, 1.82, 1.82, 1.81, 1.81, 1.78, 1.77, 1.77, 1.76,1.76, 1.75, 1.74, 1.73, 1.73, 1.72, 1.82, 1.82, 1.81, 1.81, 1.80, 1.80, 1.78, 1.75, 1.75, 1.74, 1.74, 1.73, 1.73) 

df1=data.frame(x,y,z) 
coordinates(df1) <- c("x", "y") 
proj4string(df1)=CRS("+init=epsg:3035") 
gridded(df1)=TRUE 
fullgrid(df1)=TRUE 

getGridTopology(df1) 

        x  y 
cellcentre.offset 4878500 5385500 
cellsize    5000 5000 
cells.dim    31  3 

newgrid = spTransform(df1, CRS("+init=epsg:4326")) 

好了,感谢保罗,我是能够重新使用项目gdalwarp电网。但是,空间分辨率仍然不同:

Coordinates: 
    min  max 
x -31.34409 50.36650 
y 34.07928 71.87206 
Is projected: FALSE 
proj4string : 
[+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0] 
Grid attributes: 
     cellcentre.offset cellsize cells.dim 
x   -31.31151 0.06515996  1254 
y   34.11186 0.06515996  580 
Data attributes: 
Min. 1st Qu. Median  Mean 3rd Qu.  Max. 
-0.11290 0.00000 0.00000 0.06136 0.00000 1.90300 

有什么想法?

回答

1

您会收到此消息,因为再投影后,经常在经纬网格上的点不再是另一个投影系统中的规则网格。重投影步骤并不能保持规律性,因为对于很多预测来说,经纬度和投影系统之间的变化并不是恒定的。因此,一个区域的变形或变化比另一个区域更大,导致非规则的网格。想象一下,在投影系统中,经纬度网格的正方形变成非正方形。

最简单的解决方案就是先将点投影到EPSG:4326,然后执行插值步骤。我不确定您使用哪个插值例程,但例如gstat不支持lat-lon的插值。因此,在内插数据之前,先投影一个投影系统,而不是经纬度,总是一个安全的选择。

如果您确实需要重新投影网格,则需要进行某种插值。你做了两件事:使用像gdalwarp这样的工具,它可以执行坐标变换以及随后生成的网格的变形。或者,可以使用例如内插法将非规则网格内插到规则网格。最近的邻居或任何你喜欢的插值程序。

+0

感谢Paul,您的快速回复。插值是在EPSG 3035投影的网格上进行的。这是否意味着我还应该重新投影网格以执行插值?那么它会再次回到这个问题上?我如何重新投影网格? – Nav 2013-03-06 21:55:26

+0

将所有点数据集投影到目标投影中是最简单的,这是最简单的。我会在上面的答案中编辑更多信息。 – 2013-03-06 22:07:02

+0

如果我错了,请纠正我。数据集本身是Lon Lat和相应值的插值,可以将其转换为规则网格。如果我希望重新投影插入的网格,我是否应该再次在插值上使用另一个插值例程,例如gstat中的idw()。 – Nav 2013-03-06 22:29:48