标签: spatial-interpolation

将函数定义为 x,y 数据的插值

我在 data.txt 中有 2 列 xy 数据,如下所示:

0  0
1  1
2  4
3  9
4  16
5  25
Run Code Online (Sandbox Code Playgroud)

现在我想定义一个函数 f(x),其中 x 是第一列,f(x) 是第二列,然后能够打印该函数的值,如下所示:

f(2)
Run Code Online (Sandbox Code Playgroud)

这应该给我 4。

我该如何实现这一目标?

matlab function spatial-interpolation

5
推荐指数
1
解决办法
7034
查看次数

如何使用gstat预测进行普通克里金法

我试图在R中编写一个使用gstat库的代码来创建插值.我已经阅读了gstat手册,基于互联网上的一些例子,我设法编写了这段代码(这只是一部分):

 g <- gstat(id="tec", formula=TEC ~ 1, data=data)  ##I create an object
 v <- variogram(g) # plot the empirical variogram
 plot(v)
 mod<-vgm(sill=var(data$TEC),model="Sph",range=200,nugget=200) #create the variogram model

v.fit <- fit.variogram(v, model=mod,fit.method=1)  #fit the empirical variogram 
Theor_variogram=plot(variogram(g),v.fit,main="WLS Model") #plot the theoretical variogram
plot(Theor_variogram)
 ## Kriging interpolation
 p <- predict.gstat(g, model=v.fit, newdata=predGrid)
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我运行最后一个命令(预测)而不是通过普通克里金插值得到结果时,我得到一个反距离加权(IDW).我在gstat手册中读到:"当没有指定变异函数时,反距离加权插值是默认操作.当指定变异函数时,默认预测方法是普通克里金法."

但是,正如您在我的代码中所看到的,我指定了经验和理论变差函数.你知道我为什么一直得到IDW而不是普通克里金吗?它可以与我的坐标类型相关吗?例如,如果我的坐标彼此接近,或者感兴趣的区域太大?任何帮助都非常有用.

在此先感谢迪米特里斯

r automap spatial-interpolation gstat

4
推荐指数
1
解决办法
6351
查看次数

为插值方法创建数据对象,例如R中的克里金法

我有不同位置(X1,X2,...)的温度数据的每日平均值,我想用它们插入地图.我通过从格式化的Excel工作表加载它们来创建长格式数据对象,例如:

library(reshape2)
tempdata <- read.csv("...", sep=";")
names(tempdata) <- c("date", paste("X", 1:73))
head(tempdata)
#    date  X1  X2  X3  X4  X5  X6  X7
# 1    1  7.3 6.6 6.7 5.8 6.1 6.1 5.5
# 2    2  7.5 6.6 6.6 5.6 4.8 4.7 3.9
# 3    3  8.8 7.7 7.6 7.0 7.0 6.0 5.8
# 4    4  8.5 7.4 7.5 7.0 7.3 5.9 5.5
# 5    5  7.7 6.7 6.9 6.1 6.8 5.1 4.1
# 6    6  7.5 6.7 6.8 6.0 6.4 5.0 …
Run Code Online (Sandbox Code Playgroud)

r spatial-interpolation spatial-data-frame

4
推荐指数
1
解决办法
2232
查看次数

将不规则的x,y数据点插值到规则网格中以进行轮廓映射

我是一位地质学家,需要在具有不同xyz数据集的项目中创建数百个一致的轮廓图。

塑造不规则xyz数据点的轮廓涉及在统一的xy网格处创建内插(外推)z值的“网格”。在R之外-此步骤称为“网格化”。我对R还是比较陌生,因此我尝试设置一个强大的工作流来网格化大量不规则数据点。我在努力!

在经典轮廓映射软件和工作流程上,步骤如下:

  1. 读取xyz数据
  2. 确定最终地图的兴趣区(AOI)。XMIN,XMAX,YMIN,YMAX
  3. 确定网格间隔(XINT,YINT)-将“行数”和“列数”设置为“网格”(NROW,NCOL)
  4. 应用所需的插值器之一-在常规网格/网格处创建“ z”(常见插值器是:反距离,反平方距离,加权平均值,多项式,克里金法,样条线等)
  5. 轮廓生成的“网格”

我正在尝试使R脚本完全遵循上述步骤顺序,以在整个分析过程中保持灵活性和控制力。

df是由示例数据集组成的数据帧。

     wellid property           z        x       y
    060010        1 0.008849558 756994.5 2637732
    009410        1 0.260162602 760190.9 2622262
    009910        1 0.115044248 760898.7 2637466
    051110        1 0.109243697 761690.2 2630985
    065610        1 0.066666667 763064.1 2620929
    011010        1 0.000000000 763089.3 2630888
    035210        1 0.022556391 765942.4 2625944
    052510        1 0.157894737 767058.1 2650034
    006610        1 0.045045045 768265.0 2645318
    009010        1 0.378151261 768471.8 2636731
    011210        1 0.028776978 771393.8 2629001
    064810        1 0.428571429 771394.1 2650776
    009110        1 0.064220183 775332.6 …
Run Code Online (Sandbox Code Playgroud)

workflow r contour spatial-interpolation

4
推荐指数
1
解决办法
2815
查看次数

在 3d 空间中的两个平面之间进行插值

我正在开发一种工具,可以让您在 3D“体积”上圈出/包围事物。我想通过标记“切片”1 和 3 并从该信息“填充”切片 2 来节省时间。

两个简单的解决方案是:

1. slice2 = slice1 AND slice3 (gets the overlap between the two)
2. slice2 = slice2 OR  slice3 (true for any pixel true in either image)
Run Code Online (Sandbox Code Playgroud)

这些都很好而且很快,但我更喜欢通过使形状在两者之间进行某种平均/插值来做一些更智能的事情。您可以将其想象为试图找到连接海平面飞机和空中高原的悬崖面。

示例:填充此 3d 矩阵中的切片 2-4。(使用创建montage从一到五片

随意想出全新的想法。我将把我的想法放在下面。

我想到的一些东西可能会对你(回答者)有所帮助,但我未能成功使用。

  • 您可以对每个图像执行 bwperim。
  • 您可以尝试对图像进行“平均”(或加权平均)。

到目前为止我得到的最好的:

添加图像。给你重叠和两个周长:
- 一个内周长(其内部肯定是 1)
- 和一个外周长(其内部是有问题的)。
您还可以屏蔽 >0 AND <2 的区域,这是该可疑区域的屏蔽。在两周边图像上
运行 a并遮罩:bwdist

![蒙版 bwdist 图像] 2

但不知道如何从这里出发。沿着该区域绘制“最大”轮廓的线是可行的,但我不确定如何稳健地做到这一点。

欢迎任何关于修正我的想法或任何其他想法的想法!

谢谢。

math 3d matlab contour spatial-interpolation

2
推荐指数
1
解决办法
4044
查看次数

如何在Python中使用克里格法对二维空间数据进行插值?

我有一个二维空间域,例如 [0,1]\xc3\x97[0,1]。在此域中,有 6\xc2\xa0 个点,其中观察到了一些感兴趣的标量(例如,温度、机械应力、流体密度等)。如何预测未观察点的兴趣量?换句话说,如何在 Python 中插入空间数据?

\n

例如,考虑 2D 域中的点的以下坐标(输入)以及感兴趣数量的相应观测值(输出)。

\n
import numpy as np\ncoordinates = np.array([[0.0,0.0],[0.5,0.0],[1.0,0.0],[0.0,1.0],[0.5,1.],[1.0,1.0]])\nobservations = np.array([1.0,0.5,0.75,-1.0,0.0,1.0])\n
Run Code Online (Sandbox Code Playgroud)\n

X\xc2\xa0 和 Y\xc2\xa0 坐标可以通过以下方式提取:

\n
x = coordinates[:,0]\ny = coordinates[:,1]\n
Run Code Online (Sandbox Code Playgroud)\n

以下脚本创建一个散点图,其中黄色(或蓝色)代表高(或低)输出值。

\n
import matplotlib.pyplot as plt\nfig = plt.figure()\nplt.scatter(x, y, c=observations, cmap=\'viridis\')\nplt.colorbar()\nplt.show()\n
Run Code Online (Sandbox Code Playgroud)\n

6点观察

\n

我想使用克里金法来预测二维输入域内规则网格上感兴趣的标量。我怎样才能在Python中做到这一点?

\n

spatial-interpolation scikit-learn kriging openturns

2
推荐指数
1
解决办法
6011
查看次数

如何简化样条曲线?

在我正在开发的项目中,我有一个有趣的算法挑战.我有一个排序的坐标点列表,指向街道两侧的建筑物,这些建筑物已经足够放大,如下所示:

在此输入图像描述

我想采取这种曲折并将其平滑以使基础街道线性化.

我可以想到几个解决方案:

  1. 使用六个左右的滚动平均值计算质心,并使用它们.
  2. 样条回归.

是否有更好或最好的方法来解决这个问题?(我使用的是Python 3.5)

algorithm interpolation geospatial smoothing spatial-interpolation

1
推荐指数
1
解决办法
666
查看次数

autokrige和proj4string

我使用R功能autokrigeautomap包,但我得到了一个错误,我不知道如何解决它.你有什么提示吗?

谢谢!

sp.poidf <- SpatialPointsDataFrame(sp.poi,thresh.df)
proj4string(sp.poidf) <- CRS("+proj=longlat +datum=WGS84")
pro.df=spTransform(sp.poidf, CRS("+proj=merc +zone=32s +datum=WGS84"))
sp.new <- SpatialPoints(new.poi)
proj4string(sp.new) <- CRS("+proj=longlat +datum=WGS84")
pro.new <- spTransform(sp.new, CRS("+proj=merc +zone=32s +datum=WGS84"))
mykri <- autoKrige(mythresh~1,pro.df,newdata=pro.new)

Error in function (classes, fdef, mtable)  : 
unable to find an inherited method for function "proj4string", for signature "NULL"
Run Code Online (Sandbox Code Playgroud)

r automap spatial-interpolation

0
推荐指数
1
解决办法
2322
查看次数