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으로 반올림하고 두 번째 필드를 가장 가까운 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

관련 정보