oss<<"Using available image metadata to determine the sensor model,"<<std::endl;
oss<<"computes a cartographic projection of the image";
oss<<"This application allows to ortho-rectify optical images from supported sensors."<<std::endl;
SetDescription(oss.str());
// Documentation
SetDocName("Ortho Rectification application");
SetDocName("Ortho-rectification application");
oss.str("");
oss<<"An inverse sensor model is built from the input image metadata to convert geographical to raw geometry coordinates. ";
oss<<"This inverse sensor model is then combined with the chosen map projection to build a global coordinate mapping grid. Last, this grid is used to resample using the chosen interpolation algorithm. ";
oss<<"A Digital Elevation Model can be specified to account for terrain deformations. "<<std::endl;
oss<<"In case of SPOT5 images, the sensor model can be approximated by an RPC model in order to speed-up computation.";
SetDocLongDescription(oss.str());
SetDocLimitations("None");
SetDocLimitations("Supported sensors are SPOT5 (TIF format), Ikonos, Quickbird, Worldview2, GeoEye.");
SetDocAuthors("OTB-Team");
SetDocSeeAlso("");
SetDocSeeAlso("Ortho-rectification chapter from the OTB Software Guide");
SetParameterDescription("map.utm.zone","The zone number ranges from 1 to 60 and allows to define the transverse mercator projection (along with the hemisphere)");
SetParameterDescription("map.utm.hem","The transverse mercator projections are defined by their zone number as well as the hemisphere. Activate this parameter if your image is in the northern hemisphere.");
AddChoice("map.lambert2","Lambert II Etendu");
SetParameterDescription("map.lambert2","This is a Lambert Conformal Conic projection mainly used in France.");
AddChoice("map.epsg","EPSG Code");
SetParameterDescription("map.epsg","This code is a generic way of identifying map projections, and allows to specify a large amount of them. See www.spatialreference.org to find which EPSG code is associated to your projection;");
SetParameterDescription("outputs.mode.auto","This mode allows you to fully modify default values.");
AddChoice("outputs.mode.autosize","Automatic Size from Spacing");
SetParameterDescription("outputs.mode.autosize","This mode allows you to automatically compute the optimal image size from given spacing (pixel size) values");
AddChoice("outputs.mode.autospacing","Automatic Spacing from Size");
SetParameterDescription("outputs.mode.autospacing","This mode allows you to automatically compute the optimal image spacing (pixel size) from the given size");
// Upper left point coordinates
AddParameter(ParameterType_Float,"outputs.ulx","Upper Left X");
SetParameterDescription("outputs.ulx","Cartographic X coordinate of upperleft corner");
SetParameterDescription("outputs.ulx","Cartographic X coordinate of upper-left corner (meters for cartographic projections, degrees for geographic ones)");
AddParameter(ParameterType_Float,"outputs.uly","Upper Left Y");
SetParameterDescription("outputs.uly","Cartographic Y coordinate of upperleft corner");
SetParameterDescription("outputs.uly","Cartographic Y coordinate of the upper-left corner (meters for cartographic projections, degrees for geographic ones)");
SetParameterDescription("outputs.spacingy","Size of each pixel along Y axis");
SetParameterDescription("outputs.spacingy","Size of each pixel along Y axis (meters for cartographic projections, degrees for geographic ones)");
AddParameter(ParameterType_Empty,"outputs.isotropic","Force isotropic spacing by default");
std::ostringstreamisotropOss;
isotropOss<<"Default spacing values are estimated from the sensor modelling of the image. It can therefore result in a non-isotropic spacing. ";
isotropOss<<"Default spacing (pixel size) values are estimated from the sensor modeling of the image. It can therefore result in a non-isotropic spacing. ";
isotropOss<<"This option allows you to force default values to be isotropic (in this case, the minimum of spacing in both direction is applied. ";
isotropOss<<"Values overriden by user are not affected by this option.";
SetParameterDescription("elev.dem","This parameter allows to select a directory containing Digital Elevation Model tiles. Supported formats are SRTM, DTED or any geotiff processed by the DEM import application");
AddParameter(ParameterType_Radius,"interpolator.bco.radius","Radius for bicubic interpolation");
SetParameterDescription("interpolator.bco.radius","This parameter allows to control the size of the bicubic interpolation filter. If the target pixel size is higher than the input pixel size, increasing this parameter will reduce aliasing artefacts.");
SetParameterDescription("opt","This group of parameters allows to optimize processing time.");
AddChoice("map.lambert2","Lambert II Etendu");
// Estimate a RPC model (for spot image for instance)
AddParameter(ParameterType_Int,"opt.rpc","RPC modeling (points per axis)");
SetDefaultParameterInt("opt.rpc",10);
SetParameterDescription("opt.rpc","Enabling RPC modeling allows to speed-up SPOT5 ortho-rectification. Value is the number of control points per axis for RPC estimation");
AddParameter(ParameterType_RAM,"opt.ram","Available memory for processing (in MB)");
SetParameterDescription("opt.ram","This allows to set the maximum amount of RAM available for processing. As the writing task is time consuming, it is better to write large pieces of data, which can be achieved by increasing this parameter (pay attention to your system capabilities)");
SetDefaultParameterInt("opt.ram",256);
MandatoryOff("opt.ram");
// Deformation Field Spacing
AddParameter(ParameterType_Float,"gridspacing","Deformation Field Spacing");
SetDefaultParameterFloat("gridspacing",4.);
SetParameterDescription("gridspacing","Generate a coarser deformation field with the given spacing");
SetParameterDescription("opt.gridspacing","Resampling is done according to a coordinate mapping grid, whose pixel size is set by this parameter. The closer to the output spacing this parameter is, the more precise will be the ortho-rectified image, but increasing this parameter allows to reduce processing time.");