wiki:FAQRaster

Version 8 (modified by springmeyer, 16 years ago) ( diff )

--

FAQ - Raster

  1. Why won't gdalwarp or gdal_merge write to most formats?
  2. How to improve gdalwarp perfomance?
  3. How to convert a raster to a layer of polygons?
  4. Can I use gdal_rasterize to generate non-solid polygons?
  5. How do I use gdal_translate to extract or clip a sub-section of a raster?

Why won't gdalwarp or gdal_merge write to most formats?

GDAL supports many raster formats for reading, but significantly less formats for writing. Of the ones supported for writing most are only supported in create copy mode. Essentially this means they have to be written sequentially from a provided input copy of the image to be written. Programs like gdal_merge.py or gdalwarp that write chunks of imagery non-sequentially cannot easily write to these sequential write formats. Generally speaking formats that are compressed, such as PNG, JPEG and GIF are sequential write. Also some formats require information such as the coordinate system and color table to be known at creation time and so these are also sequential write formats.

When you encounter this problem it is generally a good idea to first write the result to GeoTIFF format, and then translate to the desired target format.

To determine which formats support which capabilities, use the --formats switch with pretty much any GDAL utility. Each driver will include either r (read-only), rw (read or sequential write) or rw+ (read, sequential write or random write).

How to improve gdalwarp perfomance?

Briefly: use the warp memory and config cachemax settings. For example gdalwarp --config GDAL_CACHEMAX 500 -wm 500 uses 500MB of RAM for read/write caching, and 500MB of RAM for working buffers during the warp.

For more details see UserDocs/GdalWarp Will increasing RAM increase the speed of gdalwarp?

How to convert a raster to a layer of polygons?

TBD

Can I use gdal_rasterize to generate non-solid polygons?

See How gdal_rasterize works in gdal-dev archives.

As Chris Barker suggests, GDAL's rasterization capability is not sophisticated from a render styling point of view. Other tools may be more appropriate if you want to do anything more sophisticated than rasterize the polygons in a single solid color.

Examples of other tools: Quantum GIS, GRASS, MapServer, GMT, SAGA GIS.

How do I use gdal_translate to extract or clip a sub-section of a raster?

Gdal_translate is designed to convert to and from a variety of raster formats, but it can also perform helpful geoprocessing operations during conversion.

For example, if you would like to extract a sub-section of a raster you can use the -srcwin or -projwin options. In gdal terminology these are "subsetting" operations that allow you to select a "subwindow" to copy from the source dataset into the destination dataset. Currently, clipping raster images using vector extent polygons is not supported but is under discussion (see http://trac.osgeo.org/gdal/ticket/1599)

Here is an example of using gdal_translate on NAIP orthophotography in sid format to select a geotiff of Blakely Island, WA:

gdal_translate -of Gtiff -projwin 510286 5385025 518708 5373405 ortho_1-1_1n_s_wa055_2006_1.sid naip_ortho_blakely_island.tiff

This example uses the -projwin option which needs the bounding coordinate in the map projection rather than in pixels (-srcwin). Gdal_translate -projwin needs the upper left x coordinate, the upper left y coordinate, the lower right x coordinate, and the lower right y coordinate. This naip imagery is in NAD 83 Utm 10, so to get these bounding coordinates simply load up the index shapefile that comes packages with naip imagery in Quantum GIS and read the screen coordinates you'd like to clip by.

If you don't care what section you want to clip out but just want to preview a portion of the raster use gdalinfo to get the bounding/corner coordinates and select an arbitrary subset that fits within those extents.

Note: See TracWiki for help on using the wiki.