Migration guide to "gdal" command line interface
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