如何从包含数据点网格的文件中提取特定位置的数据

How to extract data at a specific location from a file containing a grid of data points

我有一个包含 3D 网格(x、y、时间)的文件,每个网格点都有一个 属性 "v"。我想在特定的 x、y 点或更具体地说,在最接近我所需位置的 x、y 点提取 "v" 的时间剖面(所需位置不太可能恰好落在网格上观点)。当文件是 ascii 或二进制格式时,是否有一个简单的 awk 脚本?

文件格式示例

X   Y   Time   V
1   1     0    2
1   1    10    3
1   1    20    4
1   2     0    3
1   2    10    8
1   2    20   11
1   3     0    3

如果感兴趣的位置是 x=0.9, y=2.1

,则所需的输出示例
1   2     0    3
1   2    10    8
1   2    20   11
$ cat tst.awk                           
function abs(val) { return (val < 0 ? -val : val) }

BEGIN { ARGV[ARGC] = ARGV[ARGC-1]; ARGC++ }

NR==FNR {
    if (NR>1) {
        dist[NR] = abs(x - ) + abs(y - )
        min = (NR==2 || dist[NR]<min ? dist[NR] : min)
    }
    next
}

FNR==1 || dist[FNR] == min

$ awk -v x=0.9 -v y=2.1 -f tst.awk file
X   Y   Time   V
1   2     0    3
1   2    10    8
1   2    20   11

只需检查计算 dist[] 的算法是否符合您的需要,然后调整它以适应其他情况。