This page documents through examples how to migrate from the traditional GDAL command line utilities to the unified "gdal" command line interface added in GDAL 3.11.

Raster commands

  • Getting information on a raster dataset in human-readable format

gdalinfo my.tif ==> gdal raster info --format=text my.tif
  • Converting a georeferenced netCDF file to cloud-optimized GeoTIFF

gdal_translate -of COG in.nc out.tif ==> gdal raster convert --of=COG in.nc out.tif
  • Reprojecting a GeoTIFF file to a Deflate compressed tiled GeoTIFF file

gdalwarp -t_srs EPSG:4326 -co TILED=YES -co COMPRESS=DEFLATE -overwrite in.tif out.tif ==> gdal raster reproject --dst-crs=EPSG:4326 --co=TILED=YES,COMPRESS=DEFLATE --overwrite in.tif out.tif
  • Converting a PNG file to a tiled GeoTIFF file, adding georeferencing for world coverage in WGS 84 and metadata

gdal_translate -a_ullr -180 90 180 -90 -a_srs EPSG:4326 -co TILED=YES -mo DESCRIPTION=Mean_day_temperature in.png out.tif ==> gdal raster pipeline read in.png ! edit --crs=EPSG:4326 --bbox=-180,-90,180,90 --metadata=DESCRIPTION=Mean_day_temperature ! write --co=TILED=YES out.tif

Note that the order of elements differ: "upper-left-x upper-left-y lower-right-x lower-right-y" for gdal_translate, compared to "minimum-x,minimum-y,maximum-x,maximum-y" for the --bbox option of "gdal raster pipeline ... edit".

  • Clipping a raster with a bounding box

gdal_translate -projwin 2 50 3 49 in.tif out.tif ==> gdal raster clip --bbox=2,49,3,50 in.tif out.tif
  • Creating a virtual mosaic (.vrt) from all GeoTIFF files in a directory

gdalbuildvrt out.vrt src/*.tif ==> gdal raster mosaic src/*.tif out.vrt
  • Creating a mosaic in COG format from all GeoTIFF files in a directory

gdalbuildvrt tmp.vrt src/*.tif gdal_translate -of COG tmp.vrt out.tif ==> gdal raster mosaic --of=COG src/*.tif out.tif
  • Adding internal overviews for reduction factors 2, 4, 8 and 16 to a GeoTIFF file

gdaladdo -r average my.tif 2 4 8 16 ==> gdal raster overview add -r average --levels=2,4,8,16 my.tif
  • Combining single-band rasters into a multi-band raster

gdalbuildvrt tmp.vrt red.tif green.tif blue.tif gdal_translate tmp.vrt out.tif ==> gdal raster stack red.tif green.tif blue.tif out.tif
  • Reorder a 3-band dataset with bands ordered Blue, Green, Red to Red, Green, Blue

gdal_translate -b 3 -b 2 -b 1 bgr.tif rgb.tif ==> gdal raster select --band 3,2,1 bgr.tif rgb.tif --overwrite
  • Expand a dataset with a color table to RGB

gdal_translate -expand rgb color_table.tif rgb.tif ==> gdal raster color-map color_table.tif rgb.tif --overwrite
  • Apply an external color-map to a dataset

gdaldem color-map color_table.tif color_map.txt rgb.tif ==> gdal raster color-map --color-map=color_map.txt color_table.tif rgb.tif --overwrite
  • Convert nearly black values of the collar to black

nearblack -nb 1 -near 10 my.tif ==> gdal raster clean-collar --update --color-threshold=1 --pixel-distance=10 my.tif
  • Generating tiles between zoom level 2 and 5 of WebMercator from an input GeoTIFF

gdal2tiles --zoom=2-5 input.tif output_folder ==> gdal raster tile --min-zoom=2 --max-zoom=5 input.tif output_folder

Vector commands

  • Getting information on a vector dataset in human-readable format

ogrinfo -al -so my.gpkg ==> gdal vector info --format=text my.gpkg
  • Converting a shapefile to a GeoPackage

ogr2ogr out.gpkg in.shp ==> gdal vector convert in.shp out.gpkg
  • Reprojecting a shapefile to a GeoPackage

ogr2ogr -t_srs EPSG:4326 out.gpkg in.shp ==> gdal vector reproject --dst-crs=EPSG:4326 in.shp out.gpkg
  • Clipping a GeoPackage file

ogr2ogr -clipsrc 2 49 3 50 out.gpkg in.shp ==> gdal vector clip --bbox=2,49,3,50 in.gpkg out.gpkg
  • Selecting features from a GeoPackage file intersecting a bounding box, but not clipping them to it

ogr2ogr -spat 2 49 3 50 out.gpkg in.shp ==> gdal vector filter --bbox=2,49,3,50 in.gpkg out.gpkg
  • Selecting features from a shapefile intersecting a bounding box, but not clipping them to it and reprojecting

ogr2ogr -t_srs EPSG:32631 -spat 2 49 3 50 out.gpkg in.shp ==> gdal vector pipeline read in.gpkg ! filter --bbox=2,49,3,50 ! reproject --dst-crs=EPSG:32631 ! write out.gpkg
  • Selecting features from a shapefile based on an attribute query, and restricting to a few fields

ogr2ogr -where "country='Greenland'" -select population,_ogr_geometry_ out.gpkg in.shp ==> gdal vector pipeline ! read in.shp ! filter --where "country='Greenland'" ! select --fields population,_ogr_geometry_ ! write out.gpkg
  • Creating a GeoPackage stacking all input shapefiles in separate layers.

ogrmerge -f GPKG -o merged.gpkg *.shp ==> gdal vector concat --mode=stack *.shp merged.gpkg