Estimate heights from parallax

This tool is intended for demonstration purposes only and can be used to estimate point elevations (h) from tie-points derived from vertical stereo-images, e.g. stereo aerial photographs, acquired from frame cameras using the basic form of the parallax equation:

h = (A - G) * dp / (P + dp)

Where A is flying altitude of the aircraft, G is the average elevation of the ground within the scene, dp is the difference in parallax of the point, and P is the absolute parallax and airbase (distance along the flight-line between exposures). Notice that this equation is only valid for vertical images and should not be used in highly rugged terrain.

The tie points can be acquired from the stereo-image pair using automated feature point detection methods such as that provided by the Find Tie Points tool in combination with manual digitizing of matching points. In addition to the left- and right-image tie point vector files, the user must also specify the names of the files containing the digitized vector principal points and conjugate principal points. A conjugate principal point is the location of the principal point of the neighbouring image within its stereo pair. The user must also provide the flying height of the aircraft at the time of image aquisition, the average ground elevation, and the name of the field in the attribute table of the two tie points files into which the calculated height data will be recorded. Notice that this field will be newly created to hold the data and should not already exist in the attribute tables.

See Also:

Scripting:

The following is an example of a Python script that uses this tool:

wd = pluginHost.getWorkingDirectory()
leftPrincipalPoint = wd + "leftPP.shp"
leftConjugatePP = wd + "leftCPP.shp"
leftTiePoints = wd + "leftTPs.shp"
rigtPrincipalPoint = wd + "rigtPP.shp"
rigtConjugatePP = wd + "rigtCPP.shp"
rigtTiePoints = wd + "rigtTPs.shp"
flyingHeight = "1000.0"
avgGrdHgt = "354.0"
outputField = "HEIGHT"
args = [leftPrincipalPoint, leftConjugatePP, leftTiePoints, rigtPrincipalPoint, rigtConjugatePP, rigtTiePoints, flyingHeight, avgGrdHgt, outputField]
pluginHost.runPlugin("EstimateHeightsFromParallax", args, False)

This is a Groovy script also using this tool:

def wd = pluginHost.getWorkingDirectory()
def leftPrincipalPoint = wd + "leftPP.shp"
def leftConjugatePP = wd + "leftCPP.shp"
def leftTiePoints = wd + "leftTPs.shp"
def rigtPrincipalPoint = wd + "rigtPP.shp"
def rigtConjugatePP = wd + "rigtCPP.shp"
def rigtTiePoints = wd + "rigtTPs.shp"
def flyingHeight = "1000.0"
def avgGrdHgt = "354.0"
def outputField = "HEIGHT"
String[] args = [leftPrincipalPoint, leftConjugatePP, leftTiePoints, rigtPrincipalPoint, rigtConjugatePP, rigtTiePoints, flyingHeight, avgGrdHgt, outputField]
pluginHost.runPlugin("EstimateHeightsFromParallax", args, false)

Credits: