gpt4 book ai didi

r - 更改已采用 SpatialPointsDataFrame 格式的对象的坐标值

转载 作者:行者123 更新时间:2023-12-04 11:31:13 30 4
gpt4 key购买 nike

我必须沿着一个曲折的特征来克里格值。因此,我必须将正常的笛卡尔坐标 (x,y) 转换为曲线坐标系 (s,n)。曲线坐标允许我进行克里格法,在克里格法之后,我可以将坐标反转为笛卡尔 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)

鉴于所需的克里格存储在 meuse.grid 中但是对于 s,n 坐标,我想使用 x,y 笛卡尔坐标来查看最终结果(假设将 s,n 转换为 x,y 完全等于 x,y 到 s,n)。我可以吗,如果可以,我如何才能将网格中的 (s,n) 值替换为 (XX,YY),因为 meuse.grid已经是一个 SpatialPointsDataFrame。

最佳答案

访问 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用于绘图。

关于r - 更改已采用 SpatialPointsDataFrame 格式的对象的坐标值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23647529/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com