[GIS] affine transformation on geotiff

affine transformationgeotiff-tiffopenlayers-2raster

I have a bunch of geotiffs stored in a PostGIS DB that i am mounting on my OpenLayers map.

enter image description here

They all have the geoTransform information in them. I just want to know how i can mount them on my OpenLayers map with the correct affine transformation without running a gdalwarp on all the images. Though i wouldn't mind calling gdalwarp on the fly if possible. I just don't want to store those warped images in the DB (they take up 8x more space).

Can OpenLayers rotate my image based on the GeoTransform info in the GeoTiff? If so how?:

enter image description here

This is the code i'm using to overlay my tiff:

var bounds = MyOrg.UI.Map.Results.Layer.features[array_index].geometry.bounds;

var options = {
    numZoomLevels: 15,
    isBaseLayer: false,
    resolutions: MyOrg.UI.Map.getMap().layers[0].resolutions,
    maxResolution: "auto",
    projection: MyOrg.UI.Map.Projections.Mercator,
    strategies: [new OpenLayers.Strategy.Fixed()]
};

var graphic = new OpenLayers.Layer.Image(
    'test',
    'GranuleImage.ashx?granuleID=' + MyOrg.UI.Map.Results.Data.arrGranules[array_index].id + '&thumb=0',
    bounds,
    bounds.getSize(),
    options
);

MyOrg.UI.Map.getMap().addLayer(graphic);

Best Answer

No. Openlayers cannot warp your images. OpenLayers reprojection/transform support is for vectors only.

For a raster solution, you will need to do the processing on the server side. You will have to determine if performance is enough of an issue that you decide to pre-process the imagery. If you want to do it on the fly, you could use MapServer or another WMS server. If you pre-process them, you could use MapServer or another WMS server, or you could build up a tile cache.

Raster processing is fairly expensive. You essentially have to determine whether 'disk is cheap' or 'time is cheap'.