get part of very large raster

Frank Warmerdam fwarmerdam at GMAIL.COM
Wed Mar 2 06:36:29 PST 2005


On Wed, 2 Mar 2005 10:11:24 +0100, Ivan Mjartan <ivan.mjartan at geovap.cz> wrote:
>
> Hi, everybody
>
> I have little problem,
>
> I have very large raster over 100M, and I have to programming small program,
> that on input get Xmin, Xmax, Ymin, Ymax and return small wedge of this
> large raster.

Ivan,

Hmm, 100M is large?  It depends on context I suppose.

> My first test was using GD library but problem is that this library  load
> whole raster into memory and its mean, that its take very long time.
>
> I know (I am developing something on mapserver), that mapserver is doing
> this and very fast and my question is, which library mapserver is using , or
>  which part of code is processing this ?

As Bart mentioned, GDAL attempts to provide efficient access to
subregions (and reduced resolutions) of raster files and is used as
the basis of most raster input for rendering in mapserver.

I would add that the organization of the data also plays a role in
efficiency.  If you want to be able to extract subwindows from
a dataset with maximum efficiency it is helpful to ensure the raster
is tiled.  That is internally the image is stored as a bunch of smallish
tiles so that pulling a local area out is just  matter of accessing the
corresponding tiles.  In a normal "scanline oriented image", picking
out a subwindow generally results in paging in the entire scanlines
touched by the subwindow which is pretty inefficient.

If you have a TIFF file that is not tiled, you can convert it to tiled
format with a command like:

 gdal_translate -co TILED=YES in.tif out.tif

Best regards,
--
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent



More information about the MapServer-users mailing list