Tuesday, 1 August 2017

openlayers 2 - affine transformation on geotiff


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);

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'.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...