我的文本文件中有一个 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