我必须沿着一个蜿蜒曲折的特征来克服价值。因此,我必须将正常的笛卡尔坐标(x,y)转换为曲线坐标系(s,n)。曲线坐标允许我krig和krig之后,我可以将坐标反转为笛卡尔x,y,因此表示原始几何。有关可重现的示例,请使用meuse
数据集和sp
包。
data(meuse)
meuse$s<-meuse$x # Assuming that s is the curvilinear transformed coordinate from the orginal x cartessian coordinate
meuse$n<-meuse$y # Assuming that n is the curvilinear transformed coordinate from the orginal y cartessian coordinate
coordinates(meuse) <- ~s+n # Using the curvilinear coordinates to do the krigging
proj4string(meuse) <- nl.rd # projection not defined, so just used a random example
## load grid:
data(meuse.grid)
meuse.grid$XX<-meuse.grid$x+105 # Fake transformation value to give original X
meuse.grid$YY<-meuse.grid$y-77 # Fake transformation value to give original Y
meuse.grid$s <-meuse.grid$x # Assuming that s is the curvilinear transformed coordinate from the orginal x cartessian coordinate
meuse.grid$n <-meuse.grid$y # Assuming that n is the curvilinear transformed coordinate from the orginal y cartessian coordinate
coordinates(meuse.grid) <- ~s+n
gridded(meuse.grid) <- TRUE
## A simple inverse distance krig
zinc.id <- krige(zinc~1, meuse, meuse.grid)
meuse.grid$zinc.id <- zinc.id$var1.pred
str(meuse.grid)
鉴于期望的krig存储在meuse.grid
但是有s,n坐标,我想使用x,y卡特尔坐标来查看最终结果(将s,n转换为x,y被假定为完全等于x,y到s,n)。如果meuse.grid
已经是SpatialPointsDataFrame,我可以,如果是这样,我怎么能够将网格中的(s,n)值替换为(XX,YY)。
答案 0 :(得分:3)
要访问SpatialPointsDataFrame
中的原始数字,只需使用as.data.frame
将其投放到data.frame
:
> head(as.data.frame(meuse.grid))
x y part.a part.b dist soil ffreq XX YY zinc.id
1 181180 333740 1 0 0.0000000 1 1 181285 333663 633.6864
2 181140 333700 1 0 0.0000000 1 1 181245 333623 712.5450
3 181180 333700 1 0 0.0122243 1 1 181285 333623 654.1617
4 181220 333700 1 0 0.0434678 1 1 181325 333623 604.4422
5 181100 333660 1 0 0.0000000 1 1 181205 333583 857.2558
6 181140 333660 1 0 0.0122243 1 1 181245 333583 755.5061
s n
1 181180 333740
2 181140 333700
3 181180 333700
4 181220 333700
5 181100 333660
6 181140 333660
现在您可以将坐标更改为正确的值。之后,您可以再次使用coordinates
将对象更改回SpatialPointDataFrame
进行绘图。