Perform least-square fit of a sensor model to a set of tie points


This application reads a geom file containing a sensor model and a text file containing a list of ground control point, and performs a least-square fit of the sensor model adjustable parameters to these tie points. It produces an updated geom file as output, as well as an optional ground control points based statistics file and a vector file containing residues. The output geom file can then be used to ortho-rectify the data more accurately. Plaease note that for a proper use of the application, elevation must be correctly set (including DEM and geoid file). The map parameters allows one to choose a map projection in which the accuracy will be estimated in meters.

This application has several output images and supports “multi-writing”. Instead of computing and writing each image independently, the streamed image blocks are written in a synchronous way for each output. The output images will be computed strip by strip, using the available RAM to compute the strip size, and a user defined streaming mode can be specified using the streaming extended filenames (type, mode and value). Note that multi-writing can be disabled using the multi-write extended filename option: &multiwrite=false, in this case the output images will be written one by one. Note that multi-writing is not supported for MPI writers.


Input geom file -ingeom filename [dtype] Mandatory
Geom file containing the sensor model to refine

Output geom file -outgeom filename [dtype] Mandatory
Geom file containing the refined sensor model

Input file containing tie points -inpoints filename [dtype] Mandatory
Input file containing tie points. Points are stored in following format: row col lon lat. Line beginning with # are ignored.

Output file containing output precision statistics -outstat filename [dtype]
Output file containing the following info: ref_lon ref_lat elevation predicted_lon predicted_lat x_error_ref(meters) y_error_ref(meters) global_error_ref(meters) x_error(meters) y_error(meters) overall_error(meters)

Output vector file with residues -outvector filename [dtype]
File containing segments representing residues

Map Projection -map [utm|lambert2|lambert93|wgs|epsg] Default value: utm
Defines the map projection to be used.

  • Universal Trans-Mercator (UTM)
    A system of transverse mercator projections dividing the surface of Earth between 80S and 84N latitude.
  • Lambert II Etendu
    This is a Lambert Conformal Conic projection mainly used in France.
  • Lambert93
    This is a Lambert 93 projection mainly used in France.
  • WGS 84
    This is a Geographical projection
  • EPSG Code
    This code is a generic way of identifying map projections, and allows specifying a large amount of them. See to find which EPSG code is associated to your projection;

Universal Trans-Mercator (UTM) options

Zone number int Default value: 31
The zone number ranges from 1 to 60 and allows defining the transverse mercator projection (along with the hemisphere)

Northern Hemisphere -map.utm.northhem bool Default value: false
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.

EPSG Code options

EPSG Code -map.epsg.code int Default value: 4326
See to find which EPSG code is associated to your projection

Elevation management

This group of parameters allows managing elevation values. Supported formats are SRTM, DTED or any geotiff. DownloadSRTMTiles application could be a useful tool to list/download tiles related to a product.

DEM directory -elev.dem directory
This parameter allows selecting a directory containing Digital Elevation Model files. Note that this directory should contain only DEM files. Unexpected behaviour might occurs if other images are found in this directory.

Geoid File -elev.geoid filename [dtype]
Use a geoid grid to get the height above the ellipsoid in case there is no DEM available, no coverage for some points or pixels with no_data in the DEM tiles. A version of the geoid can be found on the OTB website(

Default elevation -elev.default float Default value: 0
This parameter allows setting the default height above ellipsoid when there is no DEM available, no coverage for some points or pixels with no_data in the DEM tiles, and no geoid file has been set. This is also used by some application as an average elevation value.


From the command-line:

otbcli_RefineSensorModel -ingeom input.geom -outgeom output.geom -inpoints points.txt -map epsg -map.epsg.code 32631

From Python:

import otbApplication

app = otbApplication.Registry.CreateApplication("RefineSensorModel")

app.SetParameterString("ingeom", "input.geom")
app.SetParameterString("outgeom", "output.geom")
app.SetParameterString("inpoints", "points.txt")
app.SetParameterInt("map.epsg.code", 32631)


See also