Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
GDAL_TRANSLATE(1)		      GDAL		       GDAL_TRANSLATE(1)

NAME
     gdal_translate - Converts raster data between different formats.

SYNOPSIS
	Usage: gdal_translate [--help] [--long-usage] [--help-general]
			      [-ot Byte|Int8|[U]Int{16|32|64}|CInt{16|32}|[C]Float{32|64}]
			      [-if <format>]... [-of <output_format>] [--quiet]
			      [-b <band>]... [-mask <mask>] [-expand gray|rgb|rgba]
			      [[-strict]|[-not_strict]]
			      [-outsize <xsize[%]|0> <ysize[%]|0>] [-tr <xres> <yres>]
			      [-ovr <level>|AUTO|AUTO-<n>|NONE] [-sds]
			      [-r nearest,bilinear,cubic,cubicspline,lanczos,average,mode]
			      [[-scale [<src_min> <src_max> [<dst_min> <dst_max>]]]...|
			      [-scale_X [<src_min> <src_max> [<dst_min> <dst_max>]]]...|
			      [-unscale]]
			      [[-exponent <value>]|[-exponent_X <value>]...]
			      [-srcwin <xoff> <yoff> <xsize> <ysize>]
			      [-projwin <ulx> <uly> <lrx> <lry>]
			      [-projwin_srs <srs_def>] [-epo] [-eco] [-a_srs <srs_def>]
			      [-a_coord_epoch <epoch>] [-a_ullr <ulx> <uly> <lrx> <lry>]
			      [-a_nodata <value>|none]
			      [-a_gt <gt(0)> <gt(1)> <gt(2)> <gt(3)> <gt(4)> <gt(5)>]
			      [-a_scale <value>] [-a_offset <value>] [-nogcp]
			      [-gcp <pixel> <line> <easting> <northing> [<elevation>]]...
			      [-colorinterp {red|green|blue|alpha|gray|undefined|pan|coastal|rededge|nir|swir|mwir|lwir|...},...]
			      [-colorinterp_X {red|green|blue|alpha|gray|undefined|pan|coastal|rededge|nir|swir|mwir|lwir|...}]...
			      [[-stats]|[-approx_stats]]
			      [-norat] [-noxmp] [-co <NAME>=<VALUE>]...
			      [-mo <NAME>=<VALUE>]... [-dmo <DOMAIN>:<KEY>=<VALUE>]...
			      [-oo <NAME>=<VALUE>]...
			      <input_file> <output_file>

DESCRIPTION
     The  gdal_translate utility can be used to convert raster data between dif-
     ferent formats, potentially performing some operations like subsetting, re-
     sampling, and rescaling pixels in the process.

     TIP:
	Equivalent in new "gdal" command line interface:

	* gdal raster convert for format translation.

	* gdal raster clip for spatial subsetting.

	* gdal raster nodata-to-alpha to add an alpha channel from  nodata  val-
	  ues.

	* gdal raster resize for image resizing.

	* gdal raster scale to scale pixel values.

	* gdal raster set-type to change the band data type.

     --help
	    Show this help message and exit

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

     -q, --quiet
	    Suppress progress messages and other non-error output.

     -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.

     -strict
	    Enable strict mode. In this mode, GDAL will fail instead of silently
	    performing operations that may lead to loss of information, such  as
	    data type conversions that cannot be exactly preserved.

	    The  exact	behavior of this option is driver-dependent. Most raster
	    drivers use it to enforce strict preservation of the input data type
	    and will report an error if the requested operation cannot	be  per-
	    formed without data loss. See Example 5.

     -if <format>
	    Format/driver  name to be attempted to open the input file(s). It is
	    generally not necessary to specify it, but it can be  used	to  skip
	    automatic  driver detection, when it fails to select the appropriate
	    driver.  This option can be repeated several times to  specify  sev-
	    eral  candidate  drivers.  Note that it does not force those drivers
	    to open the dataset. In particular, some drivers  have  requirements
	    on file extensions.

	    Added in version 3.2.

     -of <format>
	    Select  the  output  format. If not specified, the format is guessed
	    from the extension. Use the short format name.

     -b <band>
	    Select an input band band for output. Bands  are  numbered	from  1.
	    Multiple  -b  switches may be used to select a set of input bands to
	    write to the output file, or to reorder bands. band can also be  set
	    to "mask,1" (or just "mask") to mean the mask band of the first band
	    of the input dataset.

     -mask <band>
	    Select  an input band band to create output dataset mask band. Bands
	    are numbered from 1. band can be set to "none" to avoid copying  the
	    global  mask  of  the  input  dataset  if it exists. Otherwise it is
	    copied by default ("auto"), unless the mask is an alpha channel,  or
	    if	it is explicitly used to be a regular band of the output dataset
	    ("-b mask"). band can also be set to "mask,1" (or  just  "mask")  to
	    mean the mask band of the 1st band of the input dataset.

     -expand gray|rgb|rgba
	    To expose a dataset with 1 band with a color table as a dataset with
	    3  (RGB)  or 4 (RGBA) bands. Useful for output drivers such as JPEG,
	    JPEG2000, MrSID, ECW that don't support color indexed datasets.  The
	    'gray'  value  enables  to	expand a dataset with a color table that
	    only contains gray levels to a gray indexed dataset.

     -outsize <xsize>[%]|0 <ysize>[%]|0
	    Set the size of the output file.  Outsize is in pixels and lines un-
	    less '%' is attached in which case it is as a fraction of the  input
	    image  size.   If one of the 2 values is set to 0, its value will be
	    determined from the other one, while maintaining the aspect ratio of
	    the source dataset.

     -tr <xres> <yres>
	    Set target resolution. The values must be expressed in georeferenced
	    units.  Both must be positive values.  This  is  mutually  exclusive
	    with -outsize, -a_ullr, and -a_gt.

     -ovr {<level>|AUTO|AUTO-<n>|NONE}
	    Added in version 3.6.

	    To specify which overview level of source file must be used. The de-
	    fault  choice, AUTO, will select the overview level whose resolution
	    is the closest to the target resolution. Specify  an  integer  value
	    (0-based,  i.e.  0=1st overview level) to select a particular level.
	    Specify AUTO-n where n is an integer greater or equal to 1,  to  se-
	    lect  an overview level below the AUTO one. Or specify NONE to force
	    the base resolution to be used (can be useful if overviews have been
	    generated with a low quality resampling method, and a higher quality
	    resampling method is specified with -r.)

	    When -ovr is specified as an integer value, and neither -outsize nor
	    -tr is specified, the size of the overview will be used as the  out-
	    put size.

	    When  -ovr	is  specified,	values of -srcwin should be expressed as
	    pixel offset and size of the full resolution source dataset.   Simi-
	    larly  when using -outsize with percentage values, they refer to the
	    size of the full resolution source dataset.

     -r {nearest|bilinear|cubic|cubicspline|lanczos|average|rms|mode}
	    Select a resampling algorithm.

	    nearest (default) applies a nearest neighbour (simple sampling)  re-
	    sampler

	    average  computes the average of all non-NODATA contributing pixels.
	    Starting with GDAL 3.1, this is a weighted average taking  into  ac-
	    count properly the weight of source pixels not contributing fully to
	    the target pixel.

	    rms  computes  the root mean squared / quadratic mean of all non-NO-
	    DATA contributing pixels (GDAL >= 3.3)

	    bilinear applies a bilinear convolution kernel.

	    cubic applies a cubic convolution kernel.

	    cubicspline applies a B-Spline convolution kernel.

	    lanczos applies a Lanczos windowed sinc convolution kernel.

	    mode selects the value which appears most often of all  the  sampled
	    points.

     -scale [<src_min> <src_max> [<dst_min> <dst_max>]]
	    Rescale the input pixels values from the range src_min to src_max to
	    the  range	dst_min to dst_max.  If omitted the output range is from
	    the minimum value to the maximum  value  allowed  for  integer  data
	    types (for example from 0 to 255 for Byte output) or from 0 to 1 for
	    floating-point  data types.  If omitted the input range is automati-
	    cally computed from the source dataset, in its whole (not  just  the
	    window  of interest potentially specified with -srcwin or -projwin).
	    This may be a slow operation on a large source dataset, and if using
	    it multiple times for several gdal_translate invocation, it might be
	    beneficial to call gdalinfo -stats {source_dataset} priorly to  pre-
	    compute  statistics, for formats that support serializing statistics
	    computations (GeoTIFF, VRT...)  Note that the values specified after
	    -scale are only used to compute a scale and offset to apply  to  the
	    input raster values. In particular, src_min and src_max are not used
	    to clip input values unless -exponent is also specified.  Instead of
	    being  clipped,  source values that are outside the range of src_min
	    and src_max will be scaled to values outside the  range  of  dst_min
	    and  dst_max.   If	clipping without exponential scaling is desired,
	    -exponent 1 can be used.  -scale can be repeated several  times  (if
	    specified  only  once,  it	also  applies to all bands of the output
	    dataset), so as to specify per band parameters. It is also	possible
	    to use the -scale_bn syntax where bn is a band number (e.g. -scale_2
	    for the 2nd band of the output dataset) to specify the parameters of
	    one or several specific bands.

     -exponent <exp_val>
	    Apply non-linear scaling with a power function. exp_val is the expo-
	    nent  of  the power function (must be positive). This option must be
	    used with the -scale option. If specified only once,  -exponent  ap-
	    plies  to  all bands of the output image. It can be repeated several
	    times so as to specify per band parameters. It is also  possible  to
	    use  the  -exponent_bn syntax where bn is a band number (e.g. -expo-
	    nent_2 for the 2nd band of the output dataset) to specify the  para-
	    meters of one or several specific bands.

	    The  scaled  value	Dst is calculated from the source value Src with
	    the following formula:

	    {Dst} = \left( {Dst}_{max} - {Dst}_{min} \right)  \times  \operator-
	    name{max}  \left( 0, \operatorname{min} \left( 1, \left( \frac{{Src}
	    - {Src}_{min}}{{Src}_{max}-{Src}_{min}}  \right)^{exp\_val}  \right)
				   \right) + {Dst}_{min}

     -unscale
	    Apply  the	scale/offset  metadata	for  the  bands  to convert lin-
	    early-scaled values to unscaled values.  It is also often  necessary
	    to	reset  the  output  datatype  with the -ot switch.  The unscaled
	    value is computed from the scaled raw value with the following  for-
	    mula:

		  {unscaled\_value} = {scaled\_value} * {scale} + {offset}

     -srcwin <xoff> <yoff> <xsize> <ysize>
	    Selects  a	subwindow  from  the  source  image for copying based on
	    pixel/line location. Pixel/line offsets (xoff and yoff) are measured
	    from the left and top of the image.  If the subwindow extends beyond
	    the bounds of the source dataset, output pixels will be written with
	    a value of zero, unless a NoData value  is	defined  either  in  the
	    source  dataset  or by -a_nodata.  Alternatively, gdal_translate can
	    issue an error in this case if so directed by options -epo or -eco.

     -projwin <ulx> <uly> <lrx> <lry>
	    Selects a subwindow from the source image for copying (like -srcwin)
	    but with the corners given in georeferenced coordinates (by  default
	    expressed	in   the  SRS  of  the	dataset.  Can  be  changed  with
	    -projwin_srs). If the subwindow extends beyond  the  bounds  of  the
	    source  dataset, output pixels will be written with a value of zero,
	    unless a NoData value is defined either in the source dataset or  by
	    -a_nodata.	Alternatively, gdal_translate can issue an error in this
	    case if so directed by options -epo or -eco.

	    NOTE:
	       Beginning with GDAL 3.11, the extent described by  -projwin  will
	       be  transformed into the dataset SRS and used to select a subwin-
	       dow.  Before GDAL 3.11, only the two corner  points  were  trans-
	       formed  into  the  dataset  SRS, and these two transformed points
	       were used to define an extent in the dataset  SRS.  Depending  on
	       the SRS involved, the subwindow selected in GDAL 3.11 may be sub-
	       stantially larger than in previous versions.

	    NOTE:
	       When  using  nearest-neighbor resampling, the window specified by
	       -projwin is expanded (rounded, for GDAL < 3.11) if  necessary  to
	       match  input  pixel  boundaries. For other resampling algorithms,
	       the window is not modified.

     -projwin_srs <srs_def>
	    Specifies the SRS in which to interpret the coordinates  given  with
	    -projwin. The <srs_def> may be any of the usual GDAL/OGR forms, com-
	    plete WKT, PROJ.4, EPSG:n or a file containing the WKT.

	    WARNING:
	       This  does not cause reprojection of the dataset to the specified
	       SRS.

     -epo   (Error when Partially Outside) If this option  is  set,  -srcwin  or
	    -projwin  values  that falls partially outside the source raster ex-
	    tent will be considered as an error. The default behavior is to  ac-
	    cept such requests.

     -eco   (Error when Completely Outside) Same as -epo, except that the crite-
	    rion  for  erroring out is when the request falls completely outside
	    the source raster extent.

     -a_srs <srs_def>
	    Override the projection for  the  output  file.  Can  be  used  with
	    -a_ullr or -a_gt to specify the extent in this projection.

	    The  coordinate  reference	systems  that can be passed are anything
	    supported by the OGRSpatialReference::SetFromUserInput() call, which
	    includes  EPSG  Projected,	Geographic   or   Compound   CRS   (i.e.
	    EPSG:4296),  a well known text (WKT) CRS definition, PROJ.4 declara-
	    tions, or the name of a .prj file containing a WKT CRS definition.

	    NOTE:
	       No reprojection is done.

     -a_coord_epoch <epoch>
	    Added in version 3.4.

	    Assign a coordinate epoch, linked with the output SRS.  Useful  when
	    the output SRS is a dynamic CRS.

     -a_scale <value>
	    Set  band  scaling	value.	No modification of pixel values is done.
	    Note that the -unscale does not take into account -a_scale.  You may
	    for example specify -scale 0 1 <offset> <offset+scale>  to	apply  a
	    (offset,   scale)	tuple,	for  the  equivalent  of  the  2  steps:
	    gdal_translate input.tif tmp.vrt  -a_scale	scale  -a_offset  offset
	    followed by gdal_translate tmp.vrt output.tif -unscale

     -a_offset <value>
	    Set  band  offset  value.  No  modification of pixel values is done.
	    Note that the -unscale does not take into  account	-a_offset.   You
	    may  for example specify -scale 0 1 <offset> <offset+scale> to apply
	    a (offset,	scale)	tuple,	for  the  equivalent  of  the  2  steps:
	    gdal_translate  input.tif  tmp.vrt	-a_scale  scale -a_offset offset
	    followed by gdal_translate tmp.vrt output.tif -unscale

     -a_ullr <ulx> <uly> <lrx> <lry>
	    Assign/override the georeferenced bounds of the output  file.   This
	    assigns georeferenced bounds to the output file, ignoring what would
	    have  been	derived from the source file. So this does not cause re-
	    projection to the specified SRS.  This is  mutually  exclusive  with
	    -a_gt

     -a_gt <gt(0)> <gt(1)> <gt(2)> <gt(3)> <gt(4)> <gt(5)>
	    Assign/override  the  geotransform of the output file.  This assigns
	    the geotransform to the output file, ignoring what would  have  been
	    derived from the source file. So this does not cause reprojection to
	    the  specified SRS. See Geotransform Tutorial.  This is mutually ex-
	    clusive with -a_ullr

	    Added in version 3.8.

     -a_nodata <value>
	    Assign a specified nodata value to output bands. It can  be  set  to
	    none  to  avoid setting a nodata value to the output file if one ex-
	    ists for the source file. Note that, if the input dataset has a  no-
	    data  value, this does not cause pixel values that are equal to that
	    nodata value to be changed to the value specified with this option.

     -colorinterp_X <red|green|blue|alpha|gray|undefined|pan|coastal|red-
     edge|nir|swir|mwir|lwir|...>
	    Override the color interpretation of band X (where X is a valid band
	    number, starting at 1)

     -colorinterp {red|green|blue|alpha|gray|undefined|pan|coastal|red-
     edge|nir|swir|mwir|lwir|...},...
	    Override the color interpretation of all specified bands. For  exam-
	    ple -colorinterp red,green,blue,alpha for a 4 band output dataset.

     -mo <META-TAG>=<VALUE>
	    Passes a metadata key and value to set on the output dataset if pos-
	    sible.

     -dmo DOMAIN:META-TAG=VALUE
	    Passes  a  metadata  key and value in specified domain to set on the
	    output dataset if possible.

	    Added in version 3.9.

     -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  sim-
	    ple  formats have no creation options at all. A list of options sup-
	    ported for a format can be listed with the --format command line op-
	    tion but the documentation for the format is the  definitive  source
	    of	information on driver creation options.  See Raster drivers for-
	    mat specific documentation for legal creation options for each  for-
	    mat.

	    In	addition to the driver-specific creation options, gdal_translate
	    (and GDALTranslate() and GDALCreateCopy()) recognize  the  following
	    options:

	    * APPEND_SUBDATASET=[YES^a/^aNO]:  Defaults to NO.

	      Can  be  specified  to  YES to avoid prior destruction of existing
	      dataset, for drivers that support adding several subdatasets (e.g.
	      GTIFF, NITF)

	    * COPY_SRC_MDD=[AUTO^a/^aYES^a/^aNO]:  (GDAL >= 3.8)  Defaults to AUTO.

	      Defines if metadata domains of the source dataset should be copied
	      to the destination dataset.  In the default AUTO mode, only "safe"
	      domains will be copied, which include the default metadata  domain
	      (some drivers may include other domains such as IMD, RPC, GEOLOCA-
	      TION).   When  setting  YES, all domains will be copied (but a few
	      reserved ones like IMAGE_STRUCTURE or DERIVED_SUBDATASETS).   Cur-
	      rently  only  recognized by the GTiff, COG, VRT, PNG and JPEG dri-
	      vers.

	      When setting NO, no source metadata will be copied.

	    * SRC_MDD=<domain_name>:  (GDAL >= 3.8)

	      Defines which source metadata domain should be copied.   This  op-
	      tion  restricts  the  list of source metadata domains to be copied
	      (it implies COPY_SRC_MDD=YES if it is not set). This option may be
	      specified as many times as they are source  domains.  The  default
	      metadata	domain	is the empty string "" ("_DEFAULT_") may also be
	      used when empty string is not practical).  Currently  only  recog-
	      nized by the GTiff, COG, VRT, PNG and JPEG drivers.

     -nogcp
	    Do not copy the GCPs in the source dataset to the output dataset.

     -gcp <pixel> <line> <easting> <northing> [<elevation>]
	    Add  the indicated ground control point to the output dataset.  This
	    option may be provided multiple times to provide a set of GCPs.

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

     -sds   Copy all subdatasets of this file to individual output  files.   Use
	    with formats like HDF that have subdatasets.

     -stats
	    Force (re)computation of statistics.

     -norat
	    Do not copy source RAT into destination dataset.

     -noxmp
	    Do	not  copy  the	XMP metadata in the source dataset to the output
	    dataset when driver is able to copy it.

	    Added in version 3.2.

     -oo <NAME>=<VALUE>
	    Dataset open option (format specific)

     <src_dataset>
	    The source dataset name. It can be either file  name,  URL	of  data
	    source or subdataset name for multi-dataset files.

     <dst_dataset>
	    The destination file name.

NODATA / SOURCE VALIDITY MASK HANDLING DURING RESAMPLING
     Masked values, either identified through a nodata value metadata set on the
     source  band, a mask band, an alpha band will not be used during resampling
     (when using -outsize or -tr).

     orphan

     The details of how it is taken into account depends on the resampling  ker-
     nel:

     * for  nearest resampling, for each target pixel, one of the potential con-
       tributing source pixels is selected (in an implementation specific  way).
       Its value is used as it, be it valid or invalid.

     * for  bilinear, cubic, cubicspline and lanczos, for each target pixel, the
       weights of contributing source pixels is set to zero to ignore them  when
       they  are  masked.   There  is an extra specificity for cubic: given that
       some of the weights in the kernel are negative, such strategy could  lead
       to  strong  overshoot/undershoot when there is an alternance of valid and
       invalid pixels. Consequently, if any of the horizontal or vertical direc-
       tion, if the maximum number of valid source pixels in each  dimension  is
       less  than  the radius of the resampling kernel, the target pixel is con-
       sidered as nodata.

     * for the other resampling methods, source pixels contributing to the  tar-
       get  pixel  are ignored if masked. Only the valid ones are taken into ac-
       count. If there are none, the target pixel is considered as nodata.

RETURN STATUS CODE
     The program returns status code 0 in case of success, and non-zero in  case
     of  error (non-blocking errors emitted as warnings are considered as a suc-
     cessful execution).

C API
     This utility is also callable from C with GDALTranslate().

EXAMPLES
   Example 1: Creating a tiled GeoTIFF
	gdal_translate -of GTiff -co "TILED=YES" utm.tif utm_tiled.tif

   Example 2: Creating a JPEG-compressed TIFF with internal  mask  from  a  RGBA
     dataset
	gdal_translate rgba.tif withmask.tif -b 1 -b 2 -b 3 -mask 4 -co COMPRESS=JPEG \
	  -co PHOTOMETRIC=YCBCR --config GDAL_TIFF_INTERNAL_MASK YES

   Example 3: Creating a RGBA dataset from a RGB dataset with a mask
	gdal_translate withmask.tif rgba.tif -b 1 -b 2 -b 3 -b mask

   Example 4: Subsetting using -projwin and -outsize
	gdal_translate -projwin -20037500 10037500 0 0 -outsize 100 100 frmt_wms_googlemaps_tms.xml junk.png

   Example 5: Use of strict mode with unsupported data type
	$ gdal_create test.tif -bands 3 -ot Int16 -outsize 1 1
	$ gdal_translate -strict test.tif test.webp
	ERROR 6: WEBP driver doesn't support data type Int16.
	Only UInt8 bands supported.

AUTHOR
     Frank Warmerdam <warmerdam@pobox.com>, Silke Reimer <silke@intevation.de>

COPYRIGHT
     1998-2026

				  Jun 05, 2026		       GDAL_TRANSLATE(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=gdal_translate&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help