1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
- .. index:: ! grdvolume
- .. include:: module_core_purpose.rst_
- *********
- grdvolume
- *********
- |grdvolume_purpose|
- Synopsis
- --------
- .. include:: common_SYN_OPTs.rst_
- **gmt grdvolume** *grdfile* [ |-C|\ *cval* or |-C|\ *low/high/delta* or |-C|\ **r**\ *low/high* or |-C|\ **r**\ *cval*]
- [ |-D| ]
- [ |-L|\ *base* ]
- [ |SYN_OPT-R| ]
- [ |-S|\ [*unit*] ]
- [ |-T|\ [**c**\|\ **h**] ]
- [ |SYN_OPT-V| ]
- [ |-Z|\ *fact*\ [/*shift*] ]
- [ |SYN_OPT-f| ]
- [ |SYN_OPT-o| ]
- [ |SYN_OPT--| ]
- |No-spaces|
- Description
- -----------
- **grdvolume** reads a 2-D grid file and calculates the volume contained below the surface and above the plane specified
- by the given contour (or zero if not given) and reports the contour, area, volume, and maximum mean height (volume/area).
- Alternatively, specify a range of contours to be tried and **grdvolume** will determine the volume and area inside
- the contour for all contour values. Using **-T**, the contour that produced the maximum mean height (or maximum
- curvature of heights vs contour value) is reported as well. This feature may be used with :doc:`grdfilter`
- in designing an Optimal Robust Separator [*Wessel*, 1998].
- Required Arguments
- ------------------
- *grdfile*
- The name of the input 2-D binary grid file. (See GRID FILE FORMAT below.)
- Optional Arguments
- ------------------
- .. _-C:
- **-C**\ *cval* or **-C**\ *low/high/delta* or **-Cr**\ *low/high* or **-Cr**\ *cval*
- find area, volume and mean height (volume/area) inside and above the *cval* contour. Alternatively, search using
- all contours from *low* to *high* in steps of *delta*. [Default returns area, volume and mean height
- of the entire grid]. The area is measured in the plane of the contour. The **Cr** form on the other
- hand computes the volume below the grid surface and above the planes defined by *low* and *high*,
- or below *cval* and grid's minimum. Note that this is an *outside* volume whilst the other forms
- compute an *inside* (below the surface) area volume. Use this form to compute for example the volume
- of water between two contours. **Note**: If no **-C** is given then there is no contour and we return
- the entire grid area, volume and the mean height; *cval* will be reported as 0 but we are not tracing
- a zero-contour (which we do if **-C**\ 0 is given).
- .. _-D:
- **-D**
- Requires **-C**\ *low/high/delta* and will compute the area and volume of each horizontal *slice* as defined by the
- contours. The reported contour and area values refer to the base of the slice, and the *height* is set to *delta*
- (since that is the thickness of all slices).
- .. _-L:
- **-L**\ *base*
- Also add in the volume from the level of the contour down to *base* [Default base is contour].
- .. _-S:
- **-S**\ [*unit*]
- For geographical grids, append a unit from
- **e**\|\ **f**\|\ **k**\|\ **M**\|\ **n**\|\ **u**
- [Default is meter (**e**)].
- .. _-T:
- **-T**\ [**c**\|\ **h**]
- Determine the single contour that maximized the average height (=
- volume/area). Select **-Tc** to use the maximum curvature of heights
- versus contour value rather than the contour with the maximum height
- to pick the best contour value (requires **-C**).
- .. _-R:
- .. |Add_-R| unicode:: 0x20 .. just an invisible code
- .. include:: explain_-R.rst_
- .. _-V:
- .. |Add_-V| unicode:: 0x20 .. just an invisible code
- .. include:: explain_-V.rst_
- .. _-Z:
- **-Z**\ *fact*\ [/*shift*]
- Optionally subtract *shift* before scaling data by *fact*. [Default
- is no scaling]. (Numbers in **-C**, **-L** refer to values after
- this scaling has occurred).
- .. |Add_-f| unicode:: 0x20 .. just an invisible code
- .. include:: explain_-f.rst_
- .. include:: explain_-ocols.rst_
- .. include:: explain_help.rst_
- .. include:: explain_grd_inout_short.rst_
- Examples
- --------
- .. include:: explain_example.rst_
- To determine area (in km^2), volume (in km^3), and mean height (in km) of all land areas
- (above zero contour) in the Hawaiian Islands from the remote grid @earth_relief_05m (height in m), use::
- gmt grdvolume @earth_relief_05m -R190/210/15/25 -C0 -Sk -Z0.001
- To find the volume below the surface peaks.nc and above the contour z = 250 m in meters, use
- ::
- gmt grdvolume peaks.nc -Se -C250
- To search for the contour, ranging from 100 to 300 in steps of 10, that
- maximizes the ratio of volume to surface area for the file peaks.nc, use
- ::
- gmt grdvolume peaks.nc -C0/300/10 -Th > results.d
- To see the areas and volumes for all the contours in the previous example, use
- ::
- gmt grdvolume peaks.nc -C100/300/10 > results.d
- To find the volume of water in a lake with its free surface at 0 and max depth of 300 meters, use
- ::
- gmt grdvolume lake.nc -Cr-300/0
- Volume integration
- ------------------
- The surface will be approximated using a bilinear expression for the *z*-value inside each grid box
- defined by four grid nodes: :math:`z(x,y) = z_0 + z_x^{'}x + z_y^{'}y + z_{xy}^{''}xy`, where the
- first term is the grid value at the lower left corner of the cell (where our relative coordinates
- *x* = *y* = 0). The primed *z*-values are derivatives in *x*, *y*, and both directions, respectively.
- We analytically integrate this expression within each box, allowing for straight line contour intersections
- to go through a box and affect the integration domain and limits.
- Notes
- -----
- #. The output of **grdvolume** is one or more records (one per contour if **-C**
- is set to search multiple contours) containing *contour area volume volume/area*.
- These records are written to standard output.
- #. For geographical grids we convert degrees to "Flat Earth" distances in
- meter. You can use **-S** to select another distance unit. The
- area is then reported in this unit squared while the volume is reported
- in unit^2 * z_unit quantities.
- #. **grdvolume** distinguishes between gridline and pixel-registered grids.
- In both cases the area and volume are computed up to the grid
- boundaries. That means that in the first case the grid cells on the
- boundary only contribute half their area (and volume), whereas in the
- second case all grid cells are fully used. The exception is when the
- **-C** flag is used: since contours do not extend beyond the outermost
- grid point, both grid types are treated the same. That means the outer
- rim in pixel oriented grids is ignored when using the **-C** flag.
- See Also
- --------
- :doc:`gmt`,
- :doc:`grdfilter`,
- :doc:`grdmask`,
- :doc:`grdmath`
- References
- ----------
- Wessel, P., 1998, An empirical method for optimal robust
- regional-residual separation of geophysical data, *Math. Geol.*, **30**\ (4), 391-408.
|