如何将 3D 坐标 (X,Y,Z) 的文本文件插入到规则网格上?

如何将 3D 坐标 (X,Y,Z) 的文本文件插入到规则网格上?

我的文本文件中有一个 3D 曲面,我需要将其绘制在常规 X/Y 网格上。但是,X 和 Y 的值不是规则间隔的,也不一定按升序排列。我需要定期间隔 X 和 Y 坐标并在 Z 列中插入值。 Z 列不需要二次采样。

Hear 是该文件的一个示例。这些列是 X、Y 和值(或 Z):

50459.83        170405.62       0.01
50439.13        170384.92       0.03
50459.83        170384.92       0.04
50480.53        170384.92       0.01
50459.83        170364.22       0.13
50480.53        170364.22       0.14
50397.72        170343.51       0.27
50418.42        170343.51       0.33
50480.53        170343.51       0.32
50501.23        170343.51       0.36
50563.34        170343.51       0.29

我想要一个像这样的输出:

50460        170400       0.01
50440        170380       0.03
50460        170380       0.04
50480        170380       0.01
50460        170360       0.13

即在 20x20 网格上对 X 和 Y 进行采样,并将 Z 列插值到这些网格点(我在示例输出中没有这样做)。

文件很大,有几千万行。

谢谢。

答案1

根据示例输入和输出的 AFAICT,您希望将第一个字段舍入到最接近的 10,将第二个字段舍入到最接近的 10,并保留第三个字段。

awk '{printf "%5.0f\t%6.0f\t%.2f\n", int($1/10+0.5)*10, int($2/10)*10, $3}' file

输出:

50460   170400  0.01
50440   170380  0.03
50460   170380  0.04
50480   170380  0.01
50460   170360  0.13
50480   170360  0.14
50400   170340  0.27
50420   170340  0.33
50480   170340  0.32
50500   170340  0.36
50560   170340  0.29

相关内容