GDAL_GRID(1) GDAL GDAL_GRID(1)

NAME


gdal_grid - Creates regular grid from the scattered data.

SYNOPSIS



gdal_grid [--help] [--help-general]
[-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/
CInt16/CInt32/CFloat32/CFloat64}]
[-oo <NAME>=<VALUE>]...
[-of <format>] [-co <NAME>=<VALUE>]...
[-zfield <field_name>] [-z_increase <increase_value>] [-z_multiply <multiply_value>]
[-a_srs <srs_def>] [-spat <xmin> <ymin> <xmax> <ymax>]
[-clipsrc <xmin> <ymin> <xmax> <ymax>|<WKT>|<datasource>|spat_extent]
[-clipsrcsql <sql_statement>] [-clipsrclayer <layer>]
[-clipsrcwhere <expression>]
[-l <layername>]... [-where <expression>] [-sql <select_statement>]
[-txe <xmin> <xmax>] [-tye <ymin> <ymax>] [-tr <xres> <yres>] [-outsize <xsize> <ysize>]
[-a {<algorithm>[[:<parameter1>=<value1>]...]}] [-q]
<src_datasource> <dst_filename>

DESCRIPTION


This program creates a regular grid (raster) from the scattered data
read from the OGR datasource. Input data will be interpolated to fill
grid nodes with values, you can choose from various interpolation
methods.

It is possible to set the GDAL_NUM_THREADS configuration option to
parallelize the processing. The value to specify is the number of
worker threads, or ALL_CPUS to use all the cores/CPUs of the
computer.

--help Show this help message and exit

--help-general
Gives a brief usage message for the generic GDAL commandline
options and exit.

-ot <type>
Force the output image bands to have a specific data type
supported by the driver, which may be one of the following:
Byte, Int8, UInt16, Int16, UInt32, Int32, UInt64, Int64,
Float32, Float64, CInt16, CInt32, CFloat32 or CFloat64.

If not set then a default type is used, which might not be supported
by the relevant driver, causing a error.

-of <format>
Select the output format. Starting with GDAL 2.3, if not
specified, the format is guessed from the extension
(previously was GTiff). Use the short format name.

-txe <xmin> <xmax>
Set georeferenced X extents of output file to be created.

-tye <ymin> <ymax>
Set georeferenced Y extents of output file to be created.

-tr <xres> <yres>
Set output file resolution (in target georeferenced units).
Note that -tr just works in combination with a valid input
from -txe and -tye

New in version 3.2.


-outsize <xsize> <ysize>
Set the size of the output file in pixels and lines. Note
that -outsize cannot be used with -tr

-a_srs <srs_def>
Override the projection for the output file. The srs_def may
be any of the usual GDAL/OGR forms, complete WKT, PROJ.4,
EPSG:n or a file containing the WKT. No reprojection is done.

-zfield <field_name>
Identifies an attribute field on the features to be used to
get a Z value from. This value overrides the Z value read from
the feature geometry record (naturally, if you have a Z value
in the geometry, otherwise you have no choice and should
specify a field name containing a Z value).

-z_increase <increase_value>
Addition to the attribute field on the features to be used to
get a Z value from. The addition should be the same unit as
the Z value. The result value will be Z value + Z increase
value. The default value is 0.

-z_multiply <multiply_value>
This is multiplication ratio for the Z field. This can be used
for a shift from e.g. feet to meters or from elevation to
depth. The result value will be (Z value + Z increase value) *
Z multiply value. The default value is 1.

-a {<algorithm>[[:<parameter1>=<value1>]...]}
Set the interpolation algorithm or data metric name and
(optionally) its parameters. See the Interpolation algorithms
and Data metrics sections for further discussion of available
options.

-spat <xmin> <ymin> <xmax> <ymax>
Adds a spatial filter to select only features contained within
the bounding box described by (xmin, ymin) - (xmax, ymax).

-clipsrc [<xmin> <ymin> <xmax> <ymax>]|<WKT>|<datasource>|spat_extent
Adds a spatial filter to select only features contained within
the specified bounding box (expressed in source SRS), WKT
geometry (POLYGON or MULTIPOLYGON), from a datasource or to
the spatial extent of the -spat option if you use the
spat_extent keyword. When specifying a datasource, you will
generally want to use it in combination with the
-clipsrclayer, -clipsrcwhere or -clipsrcsql options.

-clipsrcsql <sql_statement>
Select desired geometries using an SQL query instead.

-clipsrclayer <layername>
Select the named layer from the source clip datasource.

-clipsrcwhere <expression>
Restrict desired geometries based on an attribute query.

-l <layername>
Indicates the layer(s) from the datasource that will be used
for input features. May be specified multiple times, but at
least one layer name or a -sql option must be specified.

-where <expression>
An optional SQL WHERE style query expression to be applied to
select features to process from the input layer(s).

-sql <select_statement>
An SQL statement to be evaluated against the datasource to
produce a virtual layer of features to be processed.

-oo <NAME>=<VALUE>
New in version 3.7.


Source dataset open option (format specific)

-co <NAME>=<VALUE>
Many formats have one or more optional creation options that
can be used to control particulars about the file created. For
instance, the GeoTIFF driver supports creation options to
control compression, and whether the file should be tiled.

The creation options available vary by format driver, and some
simple formats have no creation options at all. A list of
options supported for a format can be listed with the
--formats command line option but the documentation for the
format is the definitive source of information on driver
creation options. See Raster drivers format specific
documentation for legal creation options for each format.

-q Suppress progress monitor and other non-error output.

<src_datasource>
Any OGR supported readable datasource.

<dst_filename>
The GDAL supported output file.

INTERPOLATION ALGORITHMS


There are a number of interpolation algorithms to choose from.

More details about them can also be found in GDAL Grid Tutorial

invdist
Inverse distance to a power. This is the default algorithm. It has
the following parameters:

+o power: Weighting power (default 2.0).

+o smoothing: Smoothing parameter (default 0.0).

+o radius1: The first radius (X axis if rotation angle is 0) of the
search ellipse. Set this parameter to zero to use the whole point
array. Default is 0.0.

+o radius2: The second radius (Y axis if rotation angle is 0) of the
search ellipse. Set this parameter to zero to use the whole point
array. Default is 0.0.

+o radius: Set first and second radius (mutually exclusive with
radius1 and radius2). Default is 0.0. Added in GDAL 3.6

+o angle: Angle of search ellipse rotation in degrees (counter
clockwise, default 0.0).

+o max_points: Maximum number of data points to use. Do not search for
more points than this number. This is only used if the search
ellipse is set (both radii are non-zero). Zero means that all found
points should be used. Default is 0.

+o min_points: Minimum number of data points to use. If less amount of
points found the grid node considered empty and will be filled with
NODATA marker. This is only used if search ellipse is set (both
radii are non-zero). Default is 0.

+o max_points_per_quadrant: Maximum number of data points to use per
quadrant. Default is 0. Added in GDAL 3.6. When specified, this
actually uses invdistnn implementation.

+o min_points_per_quadrant: Minimum number of data points to use per
quadrant. Default is 0. Added in GDAL 3.6. When specified, this
actually uses invdistnn implementation.

+o nodata: NODATA marker to fill empty points (default 0.0).

invdistnn
New in version 2.1.


Inverse distance to a power with nearest neighbor searching, ideal
when max_points is used. It has following parameters:

+o power: Weighting power (default 2.0).

+o smoothing: Smoothing parameter (default 0.0).

+o radius: The radius of the search circle, which should be non-zero.
Default is 1.0.

+o max_points: Maximum number of data points to use. Do not search for
more points than this number. Found points will be ranked from
nearest to furthest distance when weighting. Default is 12.

+o min_points: Minimum number of data points to use. If less amount of
points found the grid node is considered empty and will be filled
with NODATA marker. Default is 0.

+o max_points_per_quadrant: Maximum number of data points to use per
quadrant. Default is 0. Added in GDAL 3.6. When specified, the
algorithm will only take into account up to max_points_per_quadrant
points for each of the right-top, left-top, right-bottom and
right-top quadrant relative to the point being interpolated.

+o min_points_per_quadrant: Minimum number of data points to use per
quadrant. Default is 0. Added in GDAL 3.6. If that number is not
reached, the point being interpolated will be set with the NODATA
marker. When specified, the algorithm will collect at least
min_points_per_quadrant points for each of the right-top, left-top,
right-bottom and right-top quadrant relative to the point being
interpolated.

+o nodata: NODATA marker to fill empty points (default 0.0).

When min_points_per_quadrant or max_points_per_quadrant is specified,
the search will start with the closest point to the point being
interpolated from the first quadrant, then the closest point to the
point being interpolated from the second quadrant, etc. up to the 4th
quadrant, and will continue with the next closest point in the first
quadrant, etc. until max_points and/or max_points_per_quadrant
thresholds are reached.

average
Moving average algorithm. It has following parameters:

+o radius1: The first radius (X axis if rotation angle is 0) of search
ellipse. Set this parameter to zero to use whole point array.
Default is 0.0.

+o radius2: The second radius (Y axis if rotation angle is 0) of
search ellipse. Set this parameter to zero to use whole point
array. Default is 0.0.

+o radius: Set first and second radius (mutually exclusive with
radius1 and radius2). Default is 0.0. Added in GDAL 3.6

+o angle: Angle of search ellipse rotation in degrees (counter
clockwise, default 0.0).

+o max_points: Maximum number of data points to use. Do not search for
more points than this number. Found points will be ranked from
nearest to furthest distance when weighting. Default is 0. Added in
GDAL 3.6 Only taken into account if one or both of
min_points_per_quadrant or max_points_per_quadrant is specified

+o min_points: Minimum number of data points to use. If less amount of
points found the grid node considered empty and will be filled with
NODATA marker. Default is 0.

+o max_points_per_quadrant: Maximum number of data points to use per
quadrant. Default is 0. Added in GDAL 3.6. When specified, the
algorithm will only take into account up to max_points_per_quadrant
points for each of the right-top, left-top, right-bottom and
right-top quadrant relative to the point being interpolated.

+o min_points_per_quadrant: Minimum number of data points to use per
quadrant. Default is 0. Added in GDAL 3.6. If that number is not
reached, the point being interpolated will be set with the NODATA
marker. When specified, the algorithm will collect at least
min_points_per_quadrant points for each of the right-top, left-top,
right-bottom and right-top quadrant relative to the point being
interpolated.

+o nodata: NODATA marker to fill empty points (default 0.0).

Note, that it is essential to set search ellipse for moving average
method. It is a window that will be averaged when computing grid
nodes values.

When min_points_per_quadrant or max_points_per_quadrant is specified,
the search will start with the closest point to the point being
interpolated from the first quadrant, then the closest point to the
point being interpolated from the second quadrant, etc. up to the 4th
quadrant, and will continue with the next closest point in the first
quadrant, etc. until max_points and/or max_points_per_quadrant
thresholds are reached.

nearest
Nearest neighbor algorithm. It has following parameters:

+o radius1: The first radius (X axis if rotation angle is 0) of search
ellipse. Set this parameter to zero to use whole point array.
Default is 0.0.

+o radius2: The second radius (Y axis if rotation angle is 0) of
search ellipse. Set this parameter to zero to use whole point
array. Default is 0.0.

+o radius: Set first and second radius (mutually exclusive with
radius1 and radius2). Default is 0.0. Added in GDAL 3.6

+o angle: Angle of search ellipse rotation in degrees (counter
clockwise, default 0.0).

+o nodata: NODATA marker to fill empty points (default 0.0).

linear
New in version 2.1.


Linear interpolation algorithm.

The Linear method performs linear interpolation by computing a
Delaunay triangulation of the point cloud, finding in which triangle
of the triangulation the point is, and by doing linear interpolation
from its barycentric coordinates within the triangle. If the point
is not in any triangle, depending on the radius, the algorithm will
use the value of the nearest point or the nodata value.

It has following parameters:

+o radius: In case the point to be interpolated does not fit into a
triangle of the Delaunay triangulation, use that maximum distance
to search a nearest neighbour, or use nodata otherwise. If set to
-1, the search distance is infinite. If set to 0, nodata value
will be always used. Default is -1.

+o nodata: NODATA marker to fill empty points (default 0.0).

DATA METRICS


Besides the interpolation functionality gdal_grid can be used to
compute some data metrics using the specified window and output grid
geometry. These metrics are:

+o minimum: Minimum value found in grid node search ellipse.

+o maximum: Maximum value found in grid node search ellipse.

+o range: A difference between the minimum and maximum values found in
grid node search ellipse.

+o count: A number of data points found in grid node search ellipse.

+o average_distance: An average distance between the grid node (center
of the search ellipse) and all of the data points found in grid
node search ellipse.

+o average_distance_pts: An average distance between the data points
found in grid node search ellipse. The distance between each pair
of points within ellipse is calculated and average of all distances
is set as a grid node value.

All the metrics have the same set of options:

+o radius1: The first radius (X axis if rotation angle is 0) of search
ellipse. Set this parameter to zero to use whole point array.
Default is 0.0.

+o radius2: The second radius (Y axis if rotation angle is 0) of
search ellipse. Set this parameter to zero to use whole point
array. Default is 0.0.

+o radius: Set first and second radius (mutually exclusive with
radius1 and radius2). Default is 0.0. Added in GDAL 3.6

+o angle: Angle of search ellipse rotation in degrees (counter
clockwise, default 0.0).

+o min_points: Minimum number of data points to use. If less amount of
points found the grid node considered empty and will be filled with
NODATA marker. This is only used if search ellipse is set (both
radii are non-zero). Default is 0.

+o max_points_per_quadrant: Maximum number of data points to use per
quadrant. Default is 0. Added in GDAL 3.6. When specified, the
algorithm will only take into account up to max_points_per_quadrant
points for each of the right-top, left-top, right-bottom and
right-top quadrant relative to the point being interpolated.

+o min_points_per_quadrant: Minimum number of data points to use per
quadrant. Default is 0. Added in GDAL 3.6. If that number is not
reached, the point being interpolated will be set with the NODATA
marker. When specified, the algorithm will collect at least
min_points_per_quadrant points for each of the right-top, left-top,
right-bottom and right-top quadrant relative to the point being
interpolated.

+o nodata: NODATA marker to fill empty points (default 0.0).

When min_points_per_quadrant or max_points_per_quadrant is specified,
the search will start with the closest point to the point being
interpolated from the first quadrant, then the closest point to the
point being interpolated from the second quadrant, etc. up to the 4th
quadrant, and will continue with the next closest point in the first
quadrant, etc. until max_points and/or max_points_per_quadrant
thresholds are reached.

READING COMMA SEPARATED VALUES


Often you have a text file with a list of comma separated XYZ values
to work with (so called CSV file). You can easily use that kind of
data source in gdal_grid. All you need is to create a virtual dataset
header (VRT) for your CSV file and use it as an input datasource for
gdal_grid. You can find details on the VRT format on the VRT --
Virtual Format description page.

Here is a small example. Let's say we have a CSV file called dem.csv
containing

Easting,Northing,Elevation
86943.4,891957,139.13
87124.3,892075,135.01
86962.4,892321,182.04
87077.6,891995,135.01
...

For the above data we will create a dem.vrt header with the following
content:

<OGRVRTDataSource>
<OGRVRTLayer name="dem">
<SrcDataSource>dem.csv</SrcDataSource>
<GeometryType>wkbPoint</GeometryType>
<GeometryField encoding="PointFromColumns" x="Easting" y="Northing" z="Elevation"/>
</OGRVRTLayer>
</OGRVRTDataSource>

This description specifies so called 2.5D geometry with three
coordinates X, Y and Z. The Z value will be used for interpolation.
Now you can use dem.vrt with all OGR programs (start with ogrinfo
to test that everything works fine). The datasource will contain a
single layer called "dem" filled with point features constructed
from values in the CSV file. Using this technique you can handle CSV
files with more than three columns, switch columns, etc. OK, now
the final step:

gdal_grid dem.vrt demv.tif

Or, if we do not wish to use a VRT file:

gdal_grid -l dem -oo X_POSSIBLE_NAMES=Easting \
-oo Y_POSSIBLE_NAMES=Northing -zfield Elevation dem.csv dem.tif

If your CSV file does not contain column headers then it can be
handled in the VRT file in the following way:

<GeometryField encoding="PointFromColumns" x="field_1" y="field_2" z="field_3"/>

The Comma Separated Value (.csv) description page contains details on
CSV format supported by GDAL/OGR.

CREATING MULTIBAND FILES


Creating multiband files is not directly possible with gdal_grid.
One might use gdal_grid multiple times to create one band per file,
and then use gdalbuildvrt -separate and then gdal_translate:

gdal_grid ... 1.tif; gdal_grid ... 2.tif; gdal_grid ... 3.tif
gdalbuildvrt -separate 123.vrt 1.tif 2.tif 3.tif
gdal_translate 123.vrt 123.tif

Or just use gdal_merge, to combine the one-band files into a single
one:

gdal_grid ... a.tif; gdal_grid ... b.tif; gdal_grid ... c.tif
gdal_merge -separate a.tif b.tif c.tif -o d.tif

C API


This utility is also callable from C with GDALGrid().

EXAMPLES


The following would create raster TIFF file from VRT datasource
described in Reading comma separated values section using the inverse
distance to a power method. Values to interpolate will be read from
Z value of geometry record.

gdal_grid -a invdist:power=2.0:smoothing=1.0 -txe 85000 89000 -tye 894000 890000 \
-outsize 400 400 -of GTiff -ot Float64 -l dem dem.vrt dem.tiff

The next command does the same thing as the previous one, but reads
values to interpolate from the attribute field specified with -zfield
option instead of geometry record. So in this case X and Y
coordinates are being taken from geometry and Z is being taken from
the "Elevation" field. The GDAL_NUM_THREADS is also set to
parallelize the computation.

gdal_grid -zfield "Elevation" -a invdist:power=2.0:smoothing=1.0 -txe 85000 89000 \
-tye 894000 890000 -outsize 400 400 -of GTiff -ot Float64 -l dem dem.vrt \
dem.tiff --config GDAL_NUM_THREADS ALL_CPUS

AUTHOR


Andrey Kiselev <dron@ak4719.spb.edu>

COPYRIGHT


1998-2025

January 8, 2025 GDAL_GRID(1)

tribblix@gmail.com :: GitHub :: Privacy