3D座標(X、Y、Z)のテキストファイルを通常のグリッドに挿入するには?

3D座標(X、Y、Z)のテキストファイルを通常のグリッドに挿入するには?

通常のX / Yグリッドに描画する必要がある3Dサーフェスがテキストファイルにあります。しかし、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に丸め、2番目のフィールドを最も近い10に丸め、3番目のフィールドを維持しようとしています。

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

おすすめ記事