I’m trying to convert xyz -> grd and back to xyz again with gmt. The output should look like the input.
(The format is EarthVision, if anyone is wondering. As far as I know it’s not supported by gdal.)
Here’s my dummy input grid (only 0 values in z):
# Type: scattered data
# Version: 6
# Description: No description
# Format: free
# Field: 1 x
# Field: 2 y
# Field: 3 z meters
# Field: 4 column
# Field: 5 row
# Projection: Local Rectangular
# Units: meters
# End:
# Information from grid:
# Grid_size: 5 x 6
# Grid_space: -300.000000,-100.000000,-50.000000,200.000000
# Scattered data: Not_available
# Z_field: z
# Vertical_faults: Not_available
# History: No history
# Z_units: meters
-300.000000 -50.000000 0.000000 1 1
-250.000000 -50.000000 0.000000 2 1
-200.000000 -50.000000 0.000000 3 1
-150.000000 -50.000000 0.000000 4 1
-100.000000 -50.000000 0.000000 5 1
-300.000000 0.000000 0.000000 1 2
-250.000000 0.000000 0.000000 2 2
-200.000000 0.000000 0.000000 3 2
-150.000000 0.000000 0.000000 4 2
-100.000000 0.000000 0.000000 5 2
-300.000000 50.000000 0.000000 1 3
-250.000000 50.000000 0.000000 2 3
-200.000000 50.000000 0.000000 3 3
-150.000000 50.000000 0.000000 4 3
-100.000000 50.000000 0.000000 5 3
-300.000000 100.000000 0.000000 1 4
-250.000000 100.000000 0.000000 2 4
-200.000000 100.000000 0.000000 3 4
-150.000000 100.000000 0.000000 4 4
-100.000000 100.000000 0.000000 5 4
-300.000000 150.000000 0.000000 1 5
-250.000000 150.000000 0.000000 2 5
-200.000000 150.000000 0.000000 3 5
-150.000000 150.000000 0.000000 4 5
-100.000000 150.000000 0.000000 5 5
-300.000000 200.000000 0.000000 1 6
-250.000000 200.000000 0.000000 2 6
-200.000000 200.000000 0.000000 3 6
-150.000000 200.000000 0.000000 4 6
-100.000000 200.000000 0.000000 5 6
Make nc-grid of this;
# convert xyz -> nc
gmt xyz2grd -R-300/-100/-50/200 -Gtest.ev.nc test.ev -I50
Now for the task of formatting the output.
This is what I have:
# output xyz
gmt grd2xyz --IO_COL_SEPARATOR=space test.ev.nc > 1
# output column and rows
gmt grd2xyz -Cf --IO_COL_SEPARATOR=space test.ev.nc -o0,1 > 2
# sort by row, then column
paste -d ' ' 1 2 | sort -n -k5,5 -k4,4
Which gives:
-300 200 0 1 1
-250 200 0 2 1
-200 200 0 3 1
-150 200 0 4 1
-100 200 0 5 1
-300 150 0 1 2
-250 150 0 2 2
-200 150 0 3 2
-150 150 0 4 2
-100 150 0 5 2
-300 100 0 1 3
-250 100 0 2 3
-200 100 0 3 3
-150 100 0 4 3
-100 100 0 5 3
-300 50 0 1 4
-250 50 0 2 4
-200 50 0 3 4
-150 50 0 4 4
-100 50 0 5 4
-300 0 0 1 5
-250 0 0 2 5
-200 0 0 3 5
-150 0 0 4 5
-100 0 0 5 5
-300 -50 0 1 6
-250 -50 0 2 6
-200 -50 0 3 6
-150 -50 0 4 6
-100 -50 0 5 6
The problem is that grd2xyz
starts counting the rows on the top left in the grid.
I need it to start counting the rows from the bottom left.
I think.
Another way to put it: the y-values decrease with increasing row numbers.
They should increase with increasing row numbers,
Any way to do this?
I don’t know if what I have is a good solution, so any tips are welcome.