AirPhoto 3 - The Bonn Archaeological Software Package

AirPhoto 3 - The Bonn Archaeological Software Package
AirPhoto 3
Reference Manual
18 January 2013
Preface
The programming of AirPhoto for Microsoft Windows began in November 1997 to run on
affordable personal computers. It was initially based on mathematics used in Irmela Herzog's
Rectify programme for the first image processing system dedicated to archaeological air
photography designed by the author. It had Digital Equipment PDP 11/70 - PDP 11/10
minicomputers, a drum scanner, a drum film writer and a solid state disply, all state of the art
in bygone days. These were installed at the Rheinisches Landesmuseum in Bonn, Germany
in December 1975. It was used to prepare the illustrations in Chapter 5 of:
Scollar, I, Tabbagh, A., Hesse, A. Herzog, I. Archaeological Prospecting and Remote
Sensing, Cambridge University Press, 1990, reprinted 2009.
AirPhoto has gone through three major revisions, each with many minor revisions and
hundreds of changes based on the many suggestions and reports by users at hundreds of
institutions in many countries throughout the world. It is now based on modern mathematical
methods.
Unlike the on-line help in the programme, this manual is intended to be read like a book from
end to end. Programme use is separated from the discussion of background information,
theory, references and appendices which are located at the end.
The author is grateful to all who have contributed to this project which would not be what it is
without their help, and especially to Rog Palmer of Cambridge, UK with whom more than
5000 e-mails were exchanged in testing and discussion of features as well as for editing this
text.
Irwin Scollar
Remagen, Germany, February 2010
2
Table of Contents
Preface...........................................................................................................2
Overview............................................................................................................6
Introduction....................................................................................................7
Quick Start.........................................................................................................9
by Rog Palmer.............................................................................................10
Data Input.........................................................................................................19
Image Files..................................................................................................20
Opening Files...............................................................................................22
Image Collections........................................................................................25
Frequently used image file types.................................................................27
RAW files from digital cameras...................................................................28
Rarely used file types:.................................................................................30
Vector files - Auto Cad ................................................................................32
Scanner Input..............................................................................................37
Working with very large images..................................................................41
Making blank fixed size images...................................................................43
User Interaction................................................................................................46
The main menu and toolbar.........................................................................47
Window controls..........................................................................................50
Image menu and toolbars............................................................................52
Navigating in images...................................................................................55
Keyboard.....................................................................................................57
Mouse..........................................................................................................58
Image Modification...........................................................................................60
Introduction..................................................................................................61
Colour balance, contrast, brightness, equalization.....................................62
Extended colour correction..........................................................................64
Colour correction, special operations..........................................................67
Converting an image to a black and white drawing.....................................70
Scaling, re-sampling, resizing......................................................................71
Rotation.......................................................................................................72
Filtering........................................................................................................73
Image enhancement....................................................................................74
Median filtering, scratch removal, sharpening ............................................78
Edge extraction............................................................................................80
"Bump" mapping..........................................................................................86
Morphology operations................................................................................87
Maps and Calibration.......................................................................................88
Grid / calibration menu and toolbar ............................................................89
Entering calibration points...........................................................................93
Adding grid or fiducial marks to calibrated images......................................98
Grid zones.................................................................................................100
Transforming between grid systems.........................................................101
Transformation & Rectification.......................................................................102
Control points: menu and toolbar.............................................................103
3
Entering control points...............................................................................105
Editing Control or Calibration Points.........................................................113
Transformation...........................................................................................118
Creating blank scaled and cropped images..............................................131
Scale and transform..................................................................................133
Mixing source and target in a transformed image.....................................135
Digital terrain models and heights.............................................................136
DTM - making a model..............................................................................141
Local stretch..............................................................................................149
Measuring features in transformed images...............................................152
Mosaics, overlays & joining maps.............................................................153
Projects and project files...........................................................................157
Layers........................................................................................................165
Additional Image Sources..............................................................................172
Satellite Imagery........................................................................................173
GeoPortal Data..........................................................................................180
Calibrating GeoPortal Variants..................................................................191
Special Capture Window...........................................................................197
Geophysical Data – Import........................................................................202
Geophysical Data - Treatment..............................................................206
Data Output....................................................................................................208
Supported file types...................................................................................209
Saving files................................................................................................210
BMP Windows Bitmaps.........................................................................213
JPEG Joint Photographic Experts Group.............................................214
TIFF: Tagged Image File Format..........................................................215
JPEG 2000............................................................................................219
PNG: Portable Network Graphic...........................................................220
TGA: Targa bitmap................................................................................221
GIF: CompuServe GIF..........................................................................222
PCX: Zsoft Paintbrush...........................................................................223
Other directly supported formats..........................................................224
PXM: Portable Pixel map Format (PPM, PBM,PGM)...........................224
EMF: Windows Enhanced Metafile format............................................224
WMF: Windows Metafile format............................................................224
ECW: ERMapper compressed format..................................................224
Rarely used file types:...........................................................................225
Printing.......................................................................................................226
Setup..............................................................................................................229
Options......................................................................................................230
Other Programmes........................................................................................238
Spawn and run other programs from AirPhoto..........................................239
RadCor: radial lens distortion correction...................................................243
LuminCor: correct luminance in dark / bright areas..................................248
PerCor: perspective correction for very large images...............................249
AirPhoto3D: 3D display for AirPhoto.........................................................252
GIS programmes and AirPhoto.................................................................257
Import / export / edit RDA control points...................................................261
4
Appendix 1.....................................................................................................265
Installation......................................................................................................265
Installation notes........................................................................................266
Registering and reactivating AirPhoto.......................................................273
Updating or Upgrading AirPhoto...............................................................274
Test Data for AirPhoto3 and AirPhoto 3D.................................................275
Appendix 2.....................................................................................................276
Hardware & Operating Systems....................................................................276
Hard- and software optimisation................................................................277
Appendix 3.....................................................................................................285
Reporting Problems.......................................................................................285
Diagnostics, internal and external.............................................................286
AirPhoto's internal structure and problem reporting..................................290
Appendix 4.....................................................................................................291
Theory &Technical Details.............................................................................291
Edge Extraction.........................................................................................292
Colour Cast ...............................................................................................293
Maps and coordinates...............................................................................300
Grid systems .............................................................................................313
Rectification...............................................................................................325
Local stretch, details..................................................................................326
Behind the scenes in DTM creation..........................................................330
Other data structures and algorithms........................................................335
Appendix 5.....................................................................................................338
Airphoto File Formats.....................................................................................338
Binary formats............................................................................................339
Appendix 6.....................................................................................................341
Bibliography & Acknowledgements...............................................................341
Appendix 7.....................................................................................................352
Mapping Library ............................................................................................352
The Map library interface ..........................................................................353
Datum Transformation:..............................................................................362
Maplib32.dll national & international conversions.....................................377
5
1
Overview
6
Introduction
AirPhoto is a programme for modifying the local geometry of an image with a set of
identifiable points here called the source, to fit a set with the same number of points in
another image, here called the target. It may be used for rectification of a single aerial
photograph and fitting it to a map or for multiple images. It may also be used for fitting maps
made in the past to modern maps. It provides support for dozens of map grid systems.
AirPhoto also contains routines for modifying aerial image appearance, size, colour and many
other properties. In addition, mosaics can be made from multiple rectified images or from
sets of maps to show large geographical areas. Satellite imagery and high resolution import
is also included.
A number of points (control points) must be identified in both the source and target image
which are observed or otherwise known to be identical. The number of points required is at
least four, but the fit will be improved if there are more.
After transformation the source image is superimposed upon the target.
7
AirPhoto reads a very large variety of image files or can get data directly from a scanner or
from the clipboard. It produces output files in most of the formats which it can read. Previews
for all reading and writing operations are shown. Two or more images may be loaded
simultaneously, and the user may scroll through a collection of loaded images, the number
being limited only by the machine's available virtual memory.
Navigation in any loaded image is simplified by the display of a small pilot image with a
coloured frame which may be used to drag to any area of the main displayed image.
Alternatively, a right mouse click brings up an overview of the whole image with a movable
frame which permits you to select any image area to display. The main image may be
zoomed interactively at any time using either a wheel mouse or the middle button of a
conventional three button mouse. Control point entry is interactive using a mouse-controlled
floating magnifying window or a conventional crossed cursor. No numerical values need be
entered. A selection of tools for the manipulation of control points are offered. A variety of
output options for combining the source and the target are offered as well.
8
2
Quick Start
9
by Rog Palmer
AirPhoto is specialist software that can be used to transform oblique and vertical photographs
on to maps, georectified images, or to co-ordinates input on a blank surface. The program
includes a range of image processing routines and also will allow users to join maps and
make georeferenced mosaics from multiple rectified images. Transformation methods include
algorithms for relatively flat ground, for more hilly areas, and another that can be used with a
Digital Terrain Model.
In simple terms, transformation algorithms work by matching known points on a photograph
(the source of information) to the same known points on a map (the target for your
transformation). These are called ‘control points’. Transformed photographs can be output to
precise scales and to accurate locations if the target maps have been calibrated and are
linked to known geographical locations. Some maps come already geolocated using
separate files from geographical information system (GIS) programmes, others can be
calibrated in AirPhoto by adding coordinate values to the map at the intersections of grid lines
(calibration points). These relate the map's grid system to the pixel coordinates of the map
image.
Quick Start summarises the procedure to calibrate a scanned map and transform a
photograph to match that map. Variations on this method can be found in AirPhoto's Help and
in the chapters that follow. We suggest that you read through the following nine pages first
before interactively following the step-by-step guide using AirPhoto.
The first time you open AirPhoto, click on Options (upper toolbar) to change the setup
parameters.
Initially we will leave almost everything at default settings, but… In Appearance, click on
'Maximise at startup' and 'Show all graphics'.
If you want output to be accurately scaled and correctly geolocated, you will need to click on
the grid system used on maps in your country.
10
Our example is from the UK so we chose the UK British National Grid.
Coordinate systems, maps and calibration are explained in detail later and some knowledge
of these is essential for users of AirPhoto.
At this stage, there is no need to change any other settings.
In AirPhoto, as in most programs, there are several ways of doing the same thing using either
drop-down menus, buttons in windows or key combinations. For the Quick Start
demonstrations we will be using the Lower Toolbar for almost everything. This will not be
seen on screen until at least one image has been opened.
You will need a scanned photograph or one from a digital camera and either a digital copy of
the relevant map, or a scan. Scanned photos and maps should be saved in bmp or tif format:
photos with 16 million colours (24 bits). Those from a digital camera may be in camera RAW
format, jpegs or tifs, or may have been converted to another format. Black and white maps
need only have 2 colours although other settings may be used.
Scanning can be activated from AirPhoto, or use made of other scanning software which can
be run directly or from within AirPhoto. Scanning resolution will need to be set appropriately to
retain the level of detail you require from the source photographs. Experimentation may be
needed to determine what is best for your own purpose and to see how this needs to be
changed as the size scale of source photographs changes. AirPhoto can also import digital
vector maps saved as dxf (12) files, or open georeferenced raster maps as may be provided
by national mapping agencies. These can be cropped and enlarged if necessary. For the
purposes of Quick Start we will be using scans of a printed photograph and part of a map.
11
When using AirPhoto, it may help to identify features on screen if you have paper copies of
maps and photos beside you. The map can be marked (if necessary) with calibration coordinates and numbered control points, and the air photograph (or a transparent overlay
taped to it) may indicate numbered control points.
With AirPhoto open, click File-Open. Select photograph. You will see a thumbnail view of it if
the option is checked when you highlight the file name. Click the Open button (not every
action in AirPhoto responds to double clicks).
The photograph will be visible in the working window at its scale size. Rough Navigation can
be by moving the red box in the lower right corner of the screen
12
or by use of the mouse’s right click. This displayed the whole image and the red box can be
moved over the area you wish to see in the main window.
You can zoom in the main image by using the mouse scroll, the + and - keys on the numeric
keyboard or the slider under the overview in the Lower Toolbar. The zoom scale is visible in
the lower left of the screen. Use this if you must to see the whole photograph (although rightclick shows you this) but it is important that the zoom is set to 1.0 so as to obtain good
accuracy when you add control points.
If you want to enhance the photo before further processing, use the array of icons in the top
band of the lower toolbar. More icons will be displayed if you click the arrow on the right side
of the icons. I suggest using 'Enhance image' at its default setting before playing around with
others (e.g. you can sharpen an image or change colour, contrast and brightness). Your aim
is not to make a perfect print, but to ensure that the information you want to see (control
points and archaeological features) are distinct. After editing or enhancing, use SaveAs to
save the file with a different name and Close it.
Click File-Open again, select and open map. Navigation is done in exactly the same way as
for the print.
If the map is not calibrated to a known grid system, this can be done by inputting co-ordinate
values at four or more known points. To calibrate your own scanned maps you will need to
identify and correctly number at least four coordinate intersections (calibration points) that,
ideally, will surround the area of interest. If you use more than four points, some correction for
possible distortion due to paper shrinkage or stretch is automatically used.
Clicking the arrow on the bottom bar in the Lower Toolbar will switch the icons between
Control and Calibration. Clicking the blue disc button gives a magnified circle with cross hairs.
Use right-click initially to position this over a known co-ordinate intersection on the map. Then
position the cursor as accurately as possible over the grid intersection. Left click and type in
grid numbers as requested.
13
An inaccurately-placed calibration point can be removed by positioning the cross hairs over it
and left-clicking.
Repeat this for the remaining three (or more) intersections. Click the blue button again to
switch off the calibration cursor. Move the active cursor to check that calibration is correct by
putting it on another intersection or at about mid point between two and read the coordinate
values in the lower left of the Lower Toolbar. If it seems wrong, check carefully and redo the
calibration if necessary.
If the map is to be input to a GIS it must be Aligned to Grid
This will rotate and shift the map so that its grid will be aligned with the sides of the image.
Save that file (using SaveAs) with a new name and close it.
We now have a photograph, perhaps suitably enhanced, and a calibrated map on which to
transform it. Reopen the enhanced air photograph and aligned map and if necessary zoom
both to 1:0.
Control points are points (such as intersections of field boundaries or house corners or roads)
that can be matched on photograph and map. If possible, they should be positioned to
surround a field of interest and should be at roughly equal spacing. If five or more are used
AirPhoto will compute the mismatches of their positions.
Adding control points to photo and map is best done by adding the same point alternately to
each image (e.g. photo 1, map 1; photo 2, map 2, etc.). Use right click or move the red box in
the overview window to position both images to show your first control point. It may help to
refer to the marked paper copies. Click the green disc button from the Lower Toolbar. This
opens a magnified circle with cross hairs. Place cross hairs as accurately as possible on
photo control point 1. Left click to add control. A small symbol with number will appear at the
point selected. To remove a poorly-placed control point, position the cross hairs over it and
click again. Move to the map window and repeat the action to put control point 1 on map.
14
Control points can also be added by use of intersecting lines when, for example, your have a
curved road junction or want to extend a boundary to meet another one. To open Intersection,
click on the Intersection for control point icon
.
This changes the cursor to an arrow with a rectangle attached. Position the arrow point
accurately on one feature, this will mark the beginning of a line that will be drawn. Hold down
the left mouse button and swing the line round until it lies along the line you are marking.
Make this line sufficiently long to be intersected by the other one. Releasing the mouse button
will leave the line on the image. Repeat this process with the other line and you should then
have two intersecting lines that mark your chosen control point
15
To cancel the operation and try again, hold down Shift and right click the mouse button
anywhere in the image. If everything is OK then a left click on the mouse fixes the control
point position by adding a symbol and number. Continue until all control points are correctly
positioned. The headers at the top of each window should show the same number of control
points. Click on the green button to switch off the control point cursor.
The accuracy of any transformation depends on the accuracy of the positions of
corresponding control points. Good positioning is helped by acquiring knowledge of how
surveyors work and which features on a map will equate with which on a photograph. Web
sites of mapping organisations may include useful information.
Use the Lower Toolbar to set the photo as Source, map as Target. When both are selected,
the word 'Transform' on the upper menu or the blue camera icon in the upper row of icons
become 'live'. Setup-Output can be used to change the appearance of the transformed image,
with the map overlain in either black or white (default) lines or on a plain background. The
default setting is retained for the Quick Start transformation.
Click on Transform or the camera icon. A small progress bar, or bars, will be seen that shows
you when transformation is complete (and the time taken to do it).
After transformation the menu changes to read 'Done' and 'Control Pts'. Click on Control Pts.
This gives a drop-down table showing your control points and the mismatch of each if there
are more than four. If the map is calibrated, these are in metres. If uncalibrated, in pixels.
Let's assume that your 1:10000 maps are surveyed to an accuracy of less than ±4.0m. This is
the order of mismatch values that you should try to achieve with your control points.
.
16
If one or more control points have unacceptably-large mismatch values they can be tweaked
to lower their mismatch values (see Chapter 8, Transformation: Tweaking). But when doing
this always check that they are not moved to positions that are obviously inaccurate. The
mismatch values show the accuracy of the fit of control points on a map and photograph and
provide a useful first step in assessing the accuracy of the transformation. After examining
the mismatch values it is essential to visually inspect the matching of all boundaries within the
control point box as this will show you that the transformation has been good (or bad) for
parts of the photograph between the control points. In the Quick Start example, we can see
that the field boundaries on the map overlay those on the photograph, therefore we can be
sure that the transformation has been well done. If the ground is uneven there may be misfits
that will only be improved by using a DTM.
When a satisfactory transformation with the required background or map-overwriting has
been achieved you may want to save a copy. If you've transformed on to a calibrated map for
use in a GIS or CAD (Computer Aided Design) program, check that the Header for GIS is
correctly set (see Chapter 10, GIS Programs and AirPhoto, below)
17
and use Options to change the Output to the appropriate file type if this has not been done
automatically. Save the transformed file with a new name.
This Quick Start has shown how simple it can be to transform a photograph to match a map.
It has, however, only scratched the surface and has deliberately omitted some refinements.
These, and many other options, can be found in the Chapters that follow and in AirPhoto’s
Help file.
18
3
Data Input
19
Image Files
AirPhoto uses aerial images and maps which are stored in files on disk. There are hundreds
of image file types, but not all are supported in AirPhoto. The following types of image files
may be previewed and opened directly for input in AirPhoto using the Open dialogue window:
Adobe PDF
PDF
Apple PICT
PICT
AVS
AVS
Camera RAW
CRW;CR2;DNG;NEF;RAW;RAF;X3F;ORF;SRF;MRW;DCR;BAY;PEF;TIFF;TIF;SR2;ARW
CompuServe Bitmap
GIF
DICOM
DCM;DICOM
DICOM Bitmap
DCM;DIC;DICOM
DR HALO CUT
CUT
Enhanced Windows Metafile
EMF
ERmapper ECW
ECW
FITS
FITS
FlashPIX
FPX
Graphviz DOT
DOT
GUMP XCF
XCF
HDF
HDF
HP PCL Printer
PCL
Irix RGB
SGI
JBig
JBG;JBIG;BIE
JPEG Bitmap
JPG;JPEG;JPE;JIF
JPEG2000
JP2
JPEG2000 Code Stream
J2K;JPC;J2C
Khoros VIFF
VIFF
Kodak Cineon
CIN
Kodak PCD
PCD
Layers
LYR
Layers and objects
ALL
Matlab
MAT
MIFF ImageMagick
MIFF
MTV Raytracer
MTV
Multipage PCX
DCX
PaintBrush
PCX
Palm Pixmap
PALM
Photoshop PSD
PSD
PIX
PIX
Portable Network Graphics
PNG
Portable Pixmap, GrayMap, BitMap
PXM;PPM;PGM;PBM
PostScript Level 2
PS;EPS
PWP
PWP
RLA
RLA
Scalable Vector Graphic
SVG
SMTPE DPX
DPX
SUN Rasterfile
SUN
Targa Bitmap
TGA;TARGA;VDA;ICB;VST;PIX
TIFF Bitmap
TIF;TIFF;FAX;G3N;G3F;XIF
TrueType/Postscript font
TTF
Vectorial objects
IEV
VICAR
VICAR
Windows Bitmap
BMP;DIB;RLE
Windows Metafile
WMF
Wireless Bitmap
WBMP
XBM
XBM
20
XPM
XPM
Nearly a hundred more other types of files which are rarely used can be imported from the
import option on the File menu.
21
Opening Files
From the main menu
select either Open to open an image with previously entered control points for addition or
modification or Open, no control for an image to which you wish to add control. Alternatively
you may click on one of the main toolbar buttons
or
which have the same effect. If you prefer, you may use the keyboard option Ctrl-O.
22
The file selection window appears:
You may select any directory or drive and click on an appropriate file name. A sample image
is shown to aid in selection. The choice of file types visible by default in the 'files of type' box
depends on a choice which you may make in the Options dialogue box.
You may wish to turn off the little preview window using the check box provided if you have a
machine with a modest amount of memory and leave it turned off if you are loading very large
images. If you click on the magnifying glass icon, you can preview the image at full screen
size.
You may select a number of different options for image selection including a series of
thumbnail images or icons by clicking on the little "view menu" icon.
You may also create a new folder or directory, and if you are running Windows ME/2000/XP,
you may also select image files from the Internet or from a network by clicking on the
appropriate icon to the left of the dialogue box. You may select the scale of the preview by
clicking on .
In
Options under the topic Appearance you may choose several alternate styles for the file
opening dialogue boxes.
For control point files, in Options you may either choose the default , or No Control File or
AirPhoto Classic. The default option will search for control, calibration and height files having
23
the same name as the file you open, but with the extensions .ctl, .cal and .hgt. If you choose
No Control File, you can open control and calibration files by clicking on either the menu or
the File cabinet toolbit
which then opens a standard file opening dialogue box . A different height file may be
selected using the Load option on the DTM-Heights menu.
If you choose the option AirPhoto Classic in the Options Appearance dialogue, you may
choose both your input and control files simultaneously. Calibration and height files will be
opened with the name of the image file as above.
24
Image Collections
Clicking on a directory containing images which AirPhoto can process with
from the main toolbar will create and show a collection of 'thumbnail' images of all those in the
chosen directory along with their names written above the thumbnail. Only short names only
can be displayed in the limited available space and still retain visibility. The thumbnail images
are kept in an index directory one level below the directory containing the files.
A red selection square may be moved with the arrow keys, Home, End or PgUp and PgDn on
the numeric keypad, or a mouse click on a desired image will show it after dragging it into
view with the scroll bar if there are many thumbnails.
A double click in the selection square or pressing Enter will then load it in AirPhoto.
This feature permits rapid selection among a large set of images on the same or different
directories without having to memorise file names. If control, calibration or height files are
associated with the image chosen, these are automatically loaded when an image is selected.
You may select different directories and view and select from the thumbnails in all selected
directories at once. However, if the number of thumbnails becomes large, it may take some
time to created the index or to reload it.
A selected image, may also be deleted it by pressing the Del button. You will be asked for
confirmation. This deletes not only the thumbnail but also its source.
You may also choose to maximise the thumbnail browse window if you have a large number
25
of files to examine. Click on:
on the top bar of the thumbnail window.
The feature is similar in appearance and operation to that available under the Browse option
in image treatment programmes like Paintshop Pro or the Catalogue option in Lview, and
related functions in XnView and IrfanView.
Careful attention has been paid to make sure that the visible thumbnails always track the
dates and state of their sources. But if you make changes in a source while the Browse option
is active and has loaded its index, the change will only become effective if you change the
chosen directory to something else and then force it to reload by reselecting the directory, or
by clicking on the Clear button or by clicking the Reload button.
26
Frequently used image file types
In the Setup dialogue window, you can preset your preferences for common input and output
types of file if you wish:
When a file type is selected here, only files of the selected type will be shown when opening
or saving them. Only major image file types are shown in this dialogue box. For importing or
exporting rarely used files, use the special import and export facilities offered via File, Import
on the main file menu or search for the type required on the drop-down menu in the file
opening or saving dialogue window.
27
RAW files from digital cameras
High-end digital cameras offer an manufacturer – dependent output file format which contains
the data from the camera's sensor in unaltered form.
The silicon digital sensor used in most digital cameras contains a uniform array of CCD or
CMOS pixel sensors covered with a filter invented by Bayer at Kodak in the 1970's and which
bears his name. These filters limit the spectral response of each diode to either the red,
green or blue region. Exceptions are the Foveon sensor used in Sigma cameras which has
the elements stacked vertically, or in the Fujifilm S5 Pro which has sensors of two different
sizes and sensitivity in order to increase the dynamic range. The Bayer pattern may differ
slightly between various sensor manufacturers, but there are usually more green than red and
blue sensors.
Each sensor element is covered by a micro-lens which concentrates the light coming from the
camera lens. The colour of a pixel of the output image in consumer grade cameras is a
weighted combination of the response of all the sensors in a small area and transformed by
the camera's internal processor into JPEG output. So-called RAW output from professional
cameras contains the values of the individual sensor response to the colour of the filter above
it and processing is done by external software usually to make a file with Tiff format.
At high light levels, sensors saturate and produce no further output. At low levels, statistical
fluctuations in the number of photons intercepted by the sensor limit the accuracy of the
necessary conversion to digital form. The larger the physical area of the sensors at each
pixel, the more photons can be intercepted and the effect of fluctuation is reduced. Hence the
ratio of output signal to photon fluctuation noise and the resulting dynamic range of the sensor
between high and lowest light levels depends on the physical area of the CCD or CMOS array
28
divided by the total number of pixels. For constant physical sensor size, larger numbers of
pixels (the mega-pixel number) reduce the dynamic range available. Smaller sensors are
cheaper to produce so consumer grade cameras have much smaller sensors than do
professional cameras. Hence their dynamic ranges are lower, and in dark areas, information
is not recorded.
AirPhoto's RAW converter accepts the input from most camera manufacturer's data files and
converts it for further processing. Detection of the camera used to make the file is based on
the file name extension. The following manufacturer's cameras which produce RAW format
files are supported:
AVT
Canon
CASIO
Creative
Foculus
Kodak
Micron
Minolta
NIKON
OLYMPUS
PENTAX
PENTAX
Pixelink
RoverShot
SAMSUNG
Sinar
Sony
ST Micro
29
Rarely used file types:
Rarely used file types such as Adobe Portable Document Format (PDF) and Postscript (PS)
files may be imported directly from the file opene dialogue window if you first check the Show
All Graphics box in Setup-Appearance. This will also enable you to load some of the lesser
used file types directly without going through the import option below. If Show All graphics is
checked, then the file opening option defaults to Tiff, but the other options can be viewed and
selected using the file type drop-down menu.
30
Importing exotic files:
A large collection of rarely encountered files can be imported using the File Import option on
the main menu. Clicking on this brings up a small blank evaluation screen. When you then
click Open, you are presented with a list of all file types which the programme recognizes.
You may then select one. A list of all recognized rare types may be displayed by clicking on
the File Formats option in the evaluation screen.
When you open a file, it will first be displayed on the evaluation screen. Then, clicking on
Save will open it as a new window in the programme. This import facility will open control,
height and calibration files having the same name as the file chosen.
Very Exotic file types:
If these are still not sufficient, the free programme XnView offers the largest variety of file
formats for both reading, writing and converting images. A subset of these choices is offered
in the Import (files) option of the File menu shown above.
You may also find that IrfanView has a number of helpful features which are not available in
XnView, although it does not support quite so many file formats..
31
Vector files - Auto Cad
DXF files:
You can import Auto Cad DXF Version 12 or compatible files by choosing the Load-Import
then the DXF entry from the File menu. Such files may come from excavation plans or in the
case of the United Kingdom, may be supplied as 1km Super-plan map squares. AirPhoto will
read a limited number of commands from such a file and convert the result to a bitmap which
will be displayed as an image.
The following Auto Cad commands are recognised by the DXF processor:
POINT
LINE
INSERT (with ATTRIB(s) + BLOCK)
ATTDEF (in BLOCKS section)
TEXT
CIRCLE
ARC
POLYLINE (normal 2D & 3D variety)
POLYLINE (Polygon mesh variety)
POLYLINE (Poly-face mesh variety)
3DFACE (renamed to FACE3D in the code)
SOLID
+ support for Arbitrary axis alignment of 2D objects in 3-space
All of the many other Auto Cad commands will be ignored.
32
Click on New-dxf to open a file dialogue box and choose a valid Auto Cad DXF Version 12 file
or earlier. Later versions may not load correctly depending on their content.
Click on OK when you are satisfied with a zoom, if any.
Click on Cancel to return to AirPhoto without conversion.
Click on Help to show this help page.
You can influence the appearance of the image before you open it by choosing options from
the following:
You can modify the thickness of the drawn lines, choose colour or black and white output and
scale the output bitmap. The other options affect only the statistics shown on the screen.
Normally, you will want to use the defaults. The screen image is expanded by a factor of 2 by
default. If you want a greater degree of expansion giving finer detail in the output, drag the
slider to an appropriate position.
Warning:
Occasionally DXF files exported from some GIS programmes are scaled in centimetres rather
than meters. When a DXF file is loaded using the New File button, the scale may appear to
be 100 times higher than normal. Should this be the case, an error message may be shown
when you click OK to return to the main AirPhoto window. When that happens, close the
image, reopen the DXF import window and check the Centimetre box. The output will now be
scaled in meters automatically, but centimetres will be shown in the import window coordinate
fields.
File Loading Order and Setup Output Options:
If the image to be transformed to a DXF map is in greyscale, then the loading order doesn't
matter. You may load a DXF file with or without colours before or after your image.
If you have a coloured image, then you should always load it first, then load DXF file if you
want to keep the colours in the image after transformation. This is due to the fact that when
an image file in either Grayson or colour is chosen first, its palette is available for modification
for use with the DXF colour output and the colours can be seen when the dxf file is displayed.
33
If you load a DXF file with or without colours first, followed by a coloured image, the colours in
the image will be removed because the DXF file will use a Grayson palette and modify it to
show its colours if present, and this will be applied to the coloured image, thus removing the
colours.
If you load a DXF file which was created by leaving the 'use colour check box unchecked after
a colour image has been loaded, then the colour will be removed from the image. You can
avoid this by checking the 'use colour box before loading the dxf image, even if the DXF files
contains no colour. If you don't want the colours from a DXF file with colours to appear after
transformation, select Overlay Source + Target Black (or White) in Setup.
After you leave the DXF processing box with OK, a file given the name of the DXF file plus
the extension chosen in Setup file preferences is created automatically. You can reload this
file for further normal use without going through the DXF processing procedure. If you do this,
loading order vs. coloured images to be transformed doesn't matter, however the colours in
the DXF file will not have their full range if these are not present in the coloured image.
If you want the colours to appear in the target file after a transformation, be sure to set the
Output option in Setup to Merge Source w. Target.
It is suggested that you experiment with various combinations of coloured and black and
white images and coloured and black and white DXF files so that you become familiar with
the various possibilities and how they affect the appearance of results.
Warning:
If your DXF file contains maximum and minimum extent values, the mouse coordinates
relative to these values will be shown at the bottom of the screen.
You can also perform the following operations on the image visible in the working area:
De-zoom (-), Zoom(+), Return to Previous Image(<-) , Return to Original Image(Paint Roller)
You can also drag a zoom box by holding down the mouse anywhere in the working space
and then releasing it. The image will expand to show the zoomed area.
If your extents are in a national grid coordinate system, these will be transferred to the image
when DXF processing terminates. The coordinates in the result will reflect the zoomed area if
you have used the zoom feature. However, you must enter calibration for at least four points
in a chosen grid for these values to take effect after you close the image. See note below.
The processor shows some statistics which reflect the content of the DXF file as far as it can
be processed:
34
This window shows the commands which have been processed.
This window shows the commands which could not be processed.
Any control files associated with the file name will not be loaded, unlike the options in the
35
normal image file opening dialogue box. You must select such files manually from the Control
Point, Height or Calibration menu. This is because you can change the size and content of
the viewed area in the DXF dialogue box, and existing data files might not be applicable to the
imported image.
Notes:
There is no single standard for DXF files, there are nearly 20 or more. Version 12 used as the
standard in AirPhoto, has no provision for country grid systems or coordinates. It simply
shows numbers for the X/Y coordinates which may be in the local grid system or maybe not. If
the local grid system has more than one zone, these numbers don't mean the same thing in
different zones, and since there is no way to detect the zone number from the internal data in
Auto Cad 12, the user has to calibrate so that the AirPhoto calibration process forces entry of
the correct zone. This problem applies to the grids available in AirPhoto which have offsets or
zones. There is a still greater problem if the data straddles two or more zones. AirPhoto can
deal with this, but none of the GIS systems have provisions for such a worst case.
If you don't have AutoCad or a clone product, you can convert any AutoCad dxf or dwg vector
format to the AutoCad 12 format required by AirPhoto using the free converter software
EasyDWG. It offers batch conversion of a collection of dxf or dwg files on a directory.
It is strongly recommended always to scan maps to which images are to be rectified at higher
resolution than the images. Otherwise the result of an image transformation may appear to be
coarser than the original image. It is suggested that you use at least 600 dpi or more.
Although a printed map will usually not offer detail much above 300 dpi, this enlarges the
output image easily. Scanned maps of up to 10,000 x 10,000 pixels are handled by AirPhoto
without significant loss of speed. You can also simply use the resize button when the map
image is loaded and scale the image at from 2 to 4 times it's original size. The expansion will
usually be quite good if you choose the Lancoz3 re-sampling filter. Increasing the resolution
at the scanner is usually better because diagonal lines will not be jagged. If you have a map
in a vector format like DXF, then resizing is best done in a programme like AutoCad or if not
available, then do this in the DXF import option on the AirPhoto File menu.
36
Scanner Input
AirPhoto supports the use of any number of scanners connected to the machine. From the file
menu, you can select a scanner directly using the Select Scanner item and then click on
Acquire to open the scanning software's dialogue box for the chosen scanner. When you
have completed your scan, the image will appear directly in an AirPhoto window, ready for
further processing.
Many scanners come with two or more varieties of software. When you install them, each
appears as a separate scanner. If the scanner is turned off or not physically connected to the
machine (USB plug pulled out perhaps), the software itself is still resident, and AirPhoto will
try to address the scanner when you try to select one. You then get a harmless error
message informing you of the problem.
37
You will usually have a series of images to be scanned. Perhaps some are paper maps and
others are on film strips. These usually require different scanners. Scanning with a
conventional picture processing programme or using the Acquire method on the file menu
permits the use of only one scanner at a time. However, you can also select the Batch Scan
option on the File menu. This will open a new window which permits you to change scanners
while obtaining data from multiple sources. A selection box appears when clicked showing all
the scanners in the system, and a double click selects any of them, provided that they are
running and actually connected to the machine.
You may choose to use the scanner manufacturer's software dialogue box as above for single
scans by clicking on the check box shown. With many scanner software dialogues, you may
also choose to keep the dialogue box active for multiple scans and then close it using its own
close or quit buttons by selection Persistent. This persistent mode may not work with all
scanner software. If the scanner's software permits setting an option to close the dialogue
after scanning, then enable this first while running the scanner outside of AirPhoto. Otherwise
in persistent mode, you may not be able to close the scanning dialogue and AirPhoto will
have to be terminated using Ctrl-Alt-Del to display the Task Manger.
38
Depending on the way the scanner software is programmed, you may also be able to activate
and run the scanner directly from AirPhoto without using the native scanner dialogue at all
(raw scanning). If so, uncheck the use scanner dialogue box, but you have only a choice of
resolution and colour depth with all the other features offered by the scan software dialogue
left at their default values. This mode does not work with all scanner software, and in some
cases the scanner dialogue will appear anyway. In extreme cases AirPhoto may hang and
have to be terminated from the Task Manager. Try this mode with your scanner to see if it
works. It is turned off by default for safety.
When it does work, you can scan a large number of images almost as quickly as you can
place them in the scanner. It may also be used with some digital cameras, but it is advisable
to use the manufacturer's camera software for this instead. The camera will also be seen as a
scanner if it has the appropriate connection to the computer and the appropriate software has
been installed.
Click on the Acquire button to start the scan process using the chosen scanner and the
chosen option of scanner dialogue or raw scanning.
The results of each scan appear as a small numbered thumbnail image in the batch scan
dialogue box. Any of these may be selected with a single click which then causes a red frame
to be drawn around the image. You can delete the selection by clicking again or using the
Select None button to turn off all selections just as you can use the Select All button to select
all of the thumbnails. You can delete a selected thumbnail which removes it from further
processing with the Delete keyboard button.
39
When you have selected the scans of interest, you can transfer all the images at once to
AirPhoto by clicking the Transfer button. They will appear stacked on the screen in parallel
rows and columns for further processing or saving. Any files not selected will automatically be
deleted when the Transfer button is clicked. You can change scanners or switch between
scanner dialogue and raw mode (if supported) at any time before clicking on Transfer. Click
on Acquire to get the next scan using the desired method and scanner.
Scanning software problems:
Unfortunately, the norms for scanner software (TWAIN) are very loose, so that it is not
possible to anticipate all possible problems which may arise when used via AirPhoto. The
programme has been tested with a number of scanners and different versions of their
accompanying software. This software is usually not written by the manufacturer of the
scanner, and it may even differ between scanners of different models from the same
manufacturer or have earlier or later versions for the same scanner. Always check the web
site of the manufacturer of your scanner and download and install the latest version if one is
available. The following behaviour has been observed on some scanners which were
available for these tests at the time of writing:
Canon's ScanGear software in Advanced mode requires setting the option to close the
scanning window after the scan terminates. This should be done while running Canon's
PhotoStudio software supplied with the scanner. Simple mode does not require this.
Microtek's ScanWizard should be run first in Simple mode in order to set the scanning type
options. When switched to Advanced mode, this and some other options may not be
modifiable.
Lasertech's SilverFast may open even though raw scanning has been selected. It may not be
possible use raw scanning with this software with some scanners. SilverFast is supplied with
a large number of film strip scanners which can scan a number of images in batch mode.
Differences occur in single and persistent mode in the ways that images can be manipulated.
This option may not work with some scanners when AirPhoto has not been set to persistent
mode as well. SilverFast version 6 behaves differently from version 5. SilverFast's optional
IT8 colour correction version may produce a slight blurring of the scanned image compared
with using the programme without IT8. This may be compensated by selecting a higher
resolution. The range of colours and their compatibility with an original are better when using
IT8, and for accurate display on a calibrated screen along with a calibrated photo printer, IT8
calibration is very helpful.
NikonScan Ver. 2.5 software for the CoolScan freezes in any mode. The same scanner used
with SilverFast 5.2.1.6 functions normally in non-persistent mode with AirPhoto. Choosing
persistent mode somehow inhibits the SilverFast aperture correction option, but other
functions continue to work normally.
40
Working with very large images
The Windows operating system imposes limits on the maximum size of images which can be
displayed and processed in AirPhoto. The limits depend on the version of the operating
system, the amount of physical memory present, and the amount of operating system
memory in what is called the paged pool which is in use by other processes which are
currently loaded. When you attempt to open a file containing an image which when loaded is
larger than 3/4 of available memory, AirPhoto will show a dialogue with a warning message:
If you receive such a warning and continue, you may receive the following warning shown in
the dialogue caption when you click on the Advanced button in the Save dialogue:
This warning merely means that the preview window showing the result of the operation can
not be loaded with the image, but nonetheless, the special parameters needed may be
changed and used for saving.
41
However, if you attempt an operation which may require making a full copy of a very large
image, the operating system itself will issue an error message:
If you receive such a message, you may also receive additional error messages depending
upon the kind of operation which has been chosen. Should this happen, simply close the
image.
If you try to open an image which is much larger than the 3/4 available memory warning limit,
it may take a very long time to load, because the operating system will page the operation out
to disk rather than carrying it out in memory.
It is not possible to give precise figures on the maximum sizes which AirPhoto can handle,
since this is hardware, operating system and operating system state dependent. As a rough
rule, if the product of the side lengths of the image as seen when clicking on Info on the File
menu multiplied by 4 to allow for full colour is less than 1/2 of the available physical memory
as shown on the status bar, it should be possible to perform nearly all operations on it.
Increasing the size of physical memory is helpful, but here too, 32 bit Windows limits the
virtual space used by any programme to 2 GB regardless of how much physical memory is
available. Unfortunately, the space available in the operating system for the creation of the
image in memory is considerably less than this:
Windows XP 2003 Server: 650 MB
Windows 2000, XP Home/Personal: 492 MB
Windows NT4: 128 MB
Older 16 bit Windows versions which are not supported have far less. These were supported
in earlier versions of AirPhoto, but this is no longer the case.
64 bit Windows has 128GB which does not impose a limit on image size, however the ability
to work with a very large image will still depend on the processor(s) speed. When a
compatible 64 bit compiler for AirPhoto becomes available, this will be implemented.
42
Making blank fixed size images
Click on Make Bitmap to create a fixed sized blank image file with or without a grid or fiducial
markers (crosses) with all available colour depths and any desired background colour.
First choose the desired colour depth in the box to the left. Then choose the size in pixels in
the Width X and Height Y boxes. Check the Grid checkbox if you want a grid, leave it
unchecked otherwise. If you want fiducial crosses, set their spacing in the X and Y Fiducial
boxes in pixels. If you want a grid, set the number of grid lines in the Grid Count boxes and
they will be equally spaced across the chosen widths and heights. If you want the image to
have a background colour other than white, click on the Fill-Background button, which offers a
set of standard colours.
43
Or you can define your own colour with the Define Custom Colors button.
When you click on OK and return to the Create Fixed Size Bitmap dialog and click OK there,
you will be asked for a file name for saving, and if you have checked the control point option,
then control points will be placed automatically at all grid intersections.
44
A typical result may look like:
45
4
User Interaction
46
The main menu and toolbar
There are four sub-menus which are always visible on the main menu:
This is the File menu:
This is the Edit menu:
This is the Window menu which controls the arrangement of the windows on the screen.
The Srce/Targ/Unsel F3 entry is useful when the lower toolbar (see below) is hidden.
47
This is the Help menu which offers a number of options enabling you to explore all the details
of AirPhoto.
Other options only become visible when one or more images are loaded.
This is the main toolbar. Its buttons duplicate many of the functions of the main and submenus. Some items are enabled only if one or more images are displayed.
Click here to display a dialogue permitting you to select a file to open. The file may already
have control points which have been previously entered. If so, they will be loaded and
displayed along with the image.
Click here to display a collection of thumbnail images showing the contents of all the files
available on a directory and drive which you can select. Double clicking on any one of the
images will open it.
Click here to close the currently displayed image having the focus without saving anything.
The keyboard combination Cntl-F4 does the same.
Click here to save the currently displayed image having the focus including any attached
control, calibration and height points with the same name.
Click here to save the currently displayed image having the focus including any attached
control, calibration and height points with a new name.
Cut or
copy the current image to the clipboard.
Paste a new image from the clipboard.
If three or more images have been loaded, only two are shown. Click here to cycle through
48
the hidden images on the left leaving the image on the right unchanged.
If three or more images have been loaded, only two are shown. Click here to cycle through
the hidden images on the left and on the right so that the right hand image can be changed.
Cascade all images, including any hidden images if more than two have been loaded.
Tile all images, including any hidden images if more than two have been loaded.
Toggle between a full view of all images and a 1:1 pixel display of the area of the main
window for each image.
Transform a source image to a target image whenf these have been selected.
Transform source to target while cropping target to the area of the source and scaling.
Undo any of the previous operations on the window which has the focus.
Setup output appearance, interpolation, transformation and input/output file type defaults.
Help. The main help contents dialogue is shown.
Exit. Close the programme and save anything which has been changed.
Emergency exit. Click here in the upper right corner of the screen to close the programme
without saving anything. The keyboard combination Alt-F4 does the same.
If you have selected UK BNG
or Irish coordinates,
one of the two buttons shown here will be visible on the toolbar which permits switching
between the long and short form of the coordinate systems in each country.
49
Window controls
When you load an image and have chosen to show a lower toolbar in it's window in Setup
(see chapter 11), you will see:
The small overview at the right shows the entire image. You may drag the visible image in the
main window to any point by holding down the left mouse button anywhere in the red and
white frame and dragging it to an area of interest.
If the image is a map and it has been calibrated as described in the chapter on maps, the
map coordinates for the current mouse position are shown below the selection buttons for
sources and targets.
You may also right-click on the main window to bring up a much larger overview with a
movable frame. Move the mouse to an area of interest and display this area in the main
window with a single click.
The toolbar at the top of the lower toolbar shows a selection of image processing operations.
Behind the first toolbar is a second toolbar with less frequently used operations.
You may switch between them using the red arrow buttons at the right. There is a third toolbar
below them for selecting control point operations and a fourth toolbar behind that for
calibration operations. These are described later in the chaptesr on Mapping and
Transformation.
If you have unchecked the Setup-Appearance option to hide 'the lower toolbar (see the next
section), the drag and zoom window will appear in the upper left corner of an image when it is
displayed. If you wish to hide this window, click on the main menu option Window:
and switch it on or off.
51
Image menu and toolbars
This is the Tools menu for image processing functions and cropping. It offers two sets of
options which are duplicated using the speed buttons on the upper toolbar for each image.
This toolbar repeats the upper half of the image processing menu. Access the next set to it by
clicking on the red arrow button at the right.
Toggle between a full view of the image and 1:1 pixel representation which may be dragged
to show any part of the image using the drag frame in the overview at the lower left.
Change the colour or colour balance of the image, modify contrast or brightness or increase
the contrast range using histogram equalization. An interactive preview dialogue permits
testing effects before applying them.
Extended colour correction of an image. Options are offered for setting the white point
automatically or manually, setting a grey value or adjusting contrast automatically,
sharpening, automatic colour equalization for colour cast reduction, and increasing detail in
very dark or very light parts of an image using a modified Retinex method. See the Colour
Correction topic in the Image Modification section for more information.
52
Crop a selected area to a new image.
Cancel a selection.
Selects a rectangular area by dragging with the mouse.
Select a polygonal area. See Measurement for further details.
Select a circular or ellipse - shaped area with the mouse.
Select an irregular area with the mouse by dragging it.
Select an area or areas with a given brightness level.
Set the desired brightness level for selection.
Undo previous operations.
Switch to the next toolbar.
This toolbar repeats the lower half of the image processing menu. Access the previous set by
clicking on the red arrow button at the right.
Convert a coloured to a greyscale image.
hreshold an image to turn it into a black and white drawing. The threshold may be set
interactively.
Convert a positive to a negative image.
Extract edges in the image and display in black and white.
Enhance the image using the Wallis algorithm.
53
Remove image noise and scratches with median filtering, also sharpen and extract edges.
Resize (re-sample) the image. The re-sampling dialogue permits setting sizes interactively.
Rotate the image to the left or to the right by an arbitrary amount. The rotation dialogue
offers a preview of the rotated image and permits setting the degree value of the rotation.
Flip the image about its vertical axis.
Flip the image about its horizontal axis.
Select special effects window: Filtering, " Bump Mapping", Morphology operations
Undo any of the previous operations.
Click here to return to the previous toolbar.
54
Navigating in images
AirPhoto includes many tools and modes for navigating around an image which is larger than
the display area. Availability depends on the choice of appearance in Setup.
Zooming:
Always click first with the left mouse button to establish a zoom point. Otherwise the upper left
corner of the image will be used.
With the lower toolbar enabled:
Drag on the slider on the drag window:
With the lower toolbar hidden and the navigation palette visible:
Drag on the slider on the drag window of the navigation palette.
With the lower toolbar hidden and the navigation palette hidden and with scroll bars visible:
Use the mouse or keypad as described below.
In all states, with a wheel mouse roll the wheel up to zoom in, down to zoom out.
In all states, with a non-wheel mouse having a middle button. Click the middle button to zoom
in, hold Shift and click to zoom out.
Panning:
With the lower toolbar enabled:
Drag on the outline box in the drag window.
With the lower toolbar hidden:
Drag on the outline box in the navigation palette.
With the lower toolbar hidden and the navigation palette hidden:
Drag on the horizontal or vertical scroll bars.
With the numeric Keypad in all appearance states:
+ key
- key
Zoom into active window
Zoom out in active window
55
Left arrow
Right arrow
Up arrow
Down arrow
Move image to the left.
Move image to the right.
Move image up.
Move image down.
In all states, with a right click display an overview window. There, move the frame to an area
of interest to shift the display to that area:
56
Keyboard
Keyboard Short-cuts :
General:
Alt+F4:
Ctrl+F4:
Close the programme without saving anything. "Panic Exit"
Close a window without saving anything.
F1:
F2:
F3:
F4:
F5:
F6:
F7:
F8:
F9:
F10:
Help, in any dialogue box or at any time in the programme.
Full view toggle, all loaded images.
Toggle Source, Target, Unselected in focused window
Hide/Show control points.
Hide/Show calibration points.
Enter control points by coordinates.
Add/Delete height points;
Hide/Show height points
Toggle moving of control points on or off in the currently selected window.
Toggle the cursor from a magnifier to a cross-circle when in control entry
mode.
Tab:
Shift-Tab:
Ins:
Shift+Ins:
Move focus to the next window.
Move focus to the previous window.
Toggle control point entry mode on or off.
Enter a control point via the intersection of two lines drawn with the mouse.
Keypad:
+
Intended for notebook/laptop computers, but may be used generally
Zoom into active window (equivalent to mouse wheel away from hand or
middle button click)
Zoom out in active window (equivalent to mouse wheel towards hand or Shiftmiddle button click)
Left arrow
Right arrow
Up arrow
Down arrow
If moving control points (F9, Shift-left click), move it to the left.
", towards the right of the image
", towards the top of the image
", towards the bottom of the image
Ctrl+A:
Ctrl+C:
Ctrl+O:
Ctrl+P:
Ctrl+S:
Ctrl+V:
Ctrl+X:
Ctrl+Z:
Save the active window and its control points with a new name.
Copy image data to the clipboard
Open a file with attached control points, if any.
Print the active window.
Save the active window and its control points.
Paste image data from the clipboard into a blank bitmap.
Cut image data to the clipboard.
Undo the previous operation
Note:
Please note that zooming and panning are also available via the drag view window on the
lower toolbar, or if this toolbar has been hidden in Setup, on the navigation palette window
which then appears at the upper left corner of an image when it is loaded. For those who
prefer to use the numeric keypad, zooming is always possible using the + and - keys, and
panning is possible in all modes except moving of control points using the arrow keys where
they are used for single pixel movement.
57
Mouse
General:
Although AirPhoto will use any mouse, it is strongly recommended that you attach a wheel
mouse to your machine. This is especially important for zooming into and out of an image
which is most conveniently done with the wheel. If you are using a laptop or notebook
computer, you will find it helpful to plug a wheel mouse into the USB or PS/2 port available on
nearly all machines of this type and disable the touch pad if possible. When the programme
starts, it tries to determine the type of mouse attached to the system and warns if it can not
find a wheel mouse or at least a three button mouse. On laptops this warning may be
erroneous when a wheel mouse is attached to the PS/2 port and may be ignored.
Mouse, Special Usage:
Ctrl + Left button:
Shift + Left button:
Toggle enabling / disabling of control points when entering control.
Edit id values in control points under the cursor.
After F9 was pressed
or Move selected
from menu:
Left click on control point to turn on keypad arrow movement of point.
Middle button mice (no wheel):
Clicking on the middle button of a three button mouse centres the point at the cursor in the
middle of the screen and enlarges the image by 10% with each click up to a maximum limited
only by available physical memory and the original size of the image.
Shift + Middle button:
If the Shift key is held down while clicking on the point, the magnification is decreased by 10%
with each click.
Logitech wheel mouse, settings:
If a Logitech wheel mouse is detected, the 'Logitech Mouseware' mouse icon in the System
Tray should be double clicked to set the mouse parameters. In the mouse setup tabbed
dialogue, the middle button option must be set to 'Middle Button' to obtain behaviour as
described above for three button mice. Turning the mouse wheel will zoom in or out quite
smoothly. This is easier to control than pressing the middle button with or without Shift on
such mice. It is strongly recommended to acquire such a mouse if possible. The option for the
right button must be set to Context Menu/Alternate Select to enable showing an overview of
the whole image.
Microsoft Intellimouse:
This mouse is automatically supported under Windows XP, all versions. It's behaviour should
be similar to that of the Logitech mouse.
Notes:
The wheel mouse features have been tested with a Logitech wheel mouse using the
Mouseware drivers of 15 June 1999 (Version 8) or later. They have also been tested with a
Microsoft Intellimouse using the default Windows XP driver. They may not work with other
wheel mice. Please install the latest version of Mouseware if you have a Logitech wheel
mouse and you want to use the new wheel features under Win2000/XP. You can download
from http://www.logitech.com You do not have to take any special precautions with the
58
Microsoft mouse if you are using Windows XP.
If the lower toolbar has been disabled in Setup to show the maximum image area and the
navigation window has been hidden using the Window menu entry, then the Logitech wheel
mouse zoom used with the Logitech driver requires holding down the Shift key while zooming
in or out. A little + sign appears next to the standard cross cursor as long as the shift key is
held. This does not apply to other drivers.
59
5
Image Modification
60
Introduction
There are many operations which can be performed on aerial images before or after the main
functions of AirPhoto for transforming them to maps are carried out. However, it is usually
best to carry out any of the processing steps described in the following sections before any
image transformation operations are performed.................
These functions can be roughly classified into two groups: those which affect only a single
pixel at a time without regard to its surrounding pixels and those which modify a single pixel
depending on the values of the surrounding pixels. Both are local operations, but they affect
the appearance of the whole image and may change its geometry.
The first group contains the following functions:
•
•
•
•
•
•
•
Colour Balance, Contrast, Brightness, Equalization
Colour Correction
Colour Cast reduction
The Colour Panel
Converting to Black and White
Scaling, Re-sampling, Resizing
Rotation
The second group contains the following functions:
•
•
•
•
•
•
Filtering
Image Enhancement
Median Filtering-Scratch Removal, Sharpening
Edge Extraction
"Bump" Mapping
Morphology Operations
Each will be described in the following sections in greater detail. All can be selected from the
Tools menu:
and many can be selected with the equivalent icon on the lower toolbar as shown in the
following examples.
61
Colour balance, contrast, brightness, equalization
You can vary the contrast and brightness of the active image when you click on
or it's equivalent menu entry. The dialogue box above pops up. Drag the sliders and click
preview to see what the result will look like before clicking OK. If you click on the lock
preview, you will see what any change does immediately in the preview window. You may
also vary the hue, saturation and value (HSV) or the hue, saturation and lightness (HSL) or
work directly on the red, green and blue (RGB) image components. Depending on image
content, one or the other may be more satisfactory, and experimentation is required.
62
If you click on equalization, a dialogue box will pop up permitting you to stretch or compress
image contrast in all three colour components independently:
Click the check boxes to select the colour component to be equalized, then drag the markers
at the top of the histogram to define the range of equalization (the closer together, the higher
the contrast) and set thresholds which define the limits of the operation in pixel values with
the lower markers to confine the effect to a given range.
63
Extended colour correction
On the Tools menu, select Ext. Col. Correction or click
on the lower toolbar to display the Extended Colour Correction Panel The central control
panel for manual, semi-automatic and fully automatic operations is displayed after an image
has been loaded.
It shows histograms of the counts of red, green and blue pixels from the original image and a
number of trackbars, option buttons and a check box.
With no correction applied, the left and right images will be identical, and all trackbars will be
at their default positions. You can modify the brightness and contrast of each colour
component separately. For example, with the Brightness button (default), the colours may be
shifted independently:
64
The change will be applied immediately to the right image and you can see the histograms
change appropriately.
You may also change the contrast of each colour separately either prior to or after a
brightness change:
Gaps may appear in the histogram of the modified colour, since the bins of the histogram
have discrete values, but contrast modification is a decimal multiplier.
It may sometimes be necessary to reduce the brightness of a colour after increasing its
contrast.
If you wish, you may modify all three colours simultaneously by checking the RGB box and
dragging the trackbar below the blue histogram in the desired direction:
If you wish to reduce yellow stain manually, you may drag on the Semi-automatic trackbar at
65
the bottom of the colour panel:
If you apply any of the automatic options from the main toolbar, the effect on the histograms
will be shown when the operation completes. Here for example, you can see what the
Automatic Colour Equalization (ACE) option has done to the image and to its histograms.
If you apply any of the automatic treatment options from the toolbar or the menu, e.g. an
automatic setting of the grey point, the result will also be shown immediately:
The purpose of all icon buttons is shown in a little pop-up window when you pass your mouse
cursor over it.
66
Colour correction, special operations
This is the toolbar of the colour correction pane when opened from either the Tools menu or
with the icon on the lower toolbar:
All the features and functions can be accessed from the main toolbar buttons or from the main
menu:
Warning:
All operations are applied only to the small right-hand image, but not to the original input
image. If you have carried out a number of treatment steps in sequence, the green gauge at
the bottom of the programme's dialogue will display the progress of treatment on the full-sized
image when you select OK for each operation until all are completed.
When you click on the Zoom button, a window into the original image will be opened there.
Since the statistics of this window differ from those of the normal full-view window, it is
strongly advised to use the zoom first before carrying out any operations, so that when the
image is finally saved, all the changes will be consistent. Changes to an original image are
made only when it is saved.
The buttons and menus control a number of very effective functions which are applied to a
whole image. For example,
sets the white point of an image automatically to that of the lightest area of the image.
Choosing this option shifts all the colours of the image so that a colour cast which is usually
caused by an incompatibility between film or digital camera setting and the illuminating light is
reduced.
permits choosing the white point manually from the original image.
Click on the left image after clicking on the button or choosing Manual White Point from the
Tools menu. This will display a portion of the image at full size. You can zoom into or out of
the image with the left and right mouse buttons or with the mouse wheel if there is one. You
can move to different parts of the image either by dragging on it with the left mouse button
held down, or with the scroll bars on the right and bottoms sides. When you have reached a
point which you want to be displayed as white, hold down the Shift key, and a little + marker
will appear above and to the right of the cross-cursor. Then, click on the point of interest.
67
The program will search for the lightest point within ± 2 pixels of the mouse position and use
this as the white point for the image.
sets the average grey point of an image automatically. This correction is similar to the white
point correction, but it corrects for casts which are caused by factors other than the colour of
the illuminating light.
sets the contrast range of an image to the full range available. It may increase or decrease
the contrast as required.
displays the default colour sliders and check boxes. Use this after illumination or adaptive
equalization to make final adjustments of brightness, contrast and colour balance.
starts the Automatic Colour Equalization algorithm of Rizzi et. al. This takes some time.
Progress is shown with a moving green bar on the little gauge at the bottom of the main
dialogue
greatly enhances detail in the highlight and shadow regions of the picture using a modified
Retinex algorithm due to E.H. Land,, leaving the middle tone range unaffected. It can work on
the luminance only or on all colours. Uncheck the Retinex Luminance box to enable this.
offers luminance enhancement for problems in dark parts of an image without affecting the
middle tone range or causing artefacts at sharp edge transitions like the Retinex method. It
uses an algorithm due to Meylan.
When an image is loaded, and the button clicked, the appearance of the central panel will
change to:
68
You can modify the intensity of the process with the upper (Intensity) slider and change the
colour saturation using the lower (Saturation) slider. Drag these to new positions. Dragging
the intensity slider will change the image immediately. Undo, then re-click the Luminance
button to experiment with the Saturation option.
Click on the Reset button to return to the default settings. It returns the image to its initial state
and resets all sliders and undo's.
sharpens a blurred image without introducing computational artefacts into large areas of
constant colour.
converts a coloured image to greyscale. This may be used if all else fails.
is the Zoom button, corresponding to Zoom on the main menu. It displays a little magnifying
glass as a cursor in the left window. Moving this shows the full scale image in the right
window. Movement of the magnifying cursor moves the image in the right window. Clicking on
a point in an area of interest updates the right window. All operations may now be tried on this
area to observe their effects as full scale. You can restore the image prior to the zoom
operation without losing previous changes by right-clicking on the right image when it is
zoomed, but see the warning below.
is the Undo button, corresponding to Undo on the main menu. It restores the previous state of
the right image and the settings of all the parameter trackbars to their previous values. An
unlimited number of undo operations is available.
displays help.
69
Converting an image to a black and white drawing
You can convert a greyscale or coloured image to a black and white drawing by clicking on
or on its equivalent on the Tools menu. The dialogue box:
appears. Thresholding sets all values above a certain brightness to white and those below it
to black. You can choose the value of the threshold (between 0 and 255) or let the
programme determine an optimal global value for the image by clicking the Auto button.
Ordered dithering attempts to convert the image to a half-tone picture which may be useful
when making copies of a image on a black and white printer or photocopier.
70
Scaling, re-sampling, resizing
Images may be re-sized by an arbitrary amount. When you click on
on the second toolbar or the equivalent Scale/Resize/Re-sample on the Tools menu, the
dialogue box below appears:
It is shown initially with the side lengths of the image in pixels. If the image is calibrated, the
calibration scale in meters per pixel is also shown. Otherwise, a decimal multiplier is visible.
Change any of these to any desired value to reduce or enlarge the image. Any control or
calibration points present will be rescaled so that they are properly placed in the result. Save
the image under a new name if you want to preserve the original and its attached control and
calibration point data.
Note:
The quality of an enlargment or a reduction depends on both the amount chosen and the
algorithm used. The dialogue box offers a series of filters which affect the appearance of the
result. For small changes of scale, no filter need be used. For larger amounts, one of the
other filter types should be tried and the one which gives the most satisfactory result saved.
The filters differ considerably in speed. Usually the Triangle, Nearest or the Bell filter will be
adequate for modest size changes and will be the fastest of those offered. For accurate
reproduction of fine lines with degrees of reduction or enlargement greater than 2, try B
spline, Lanczos3 or Mitchell. The last of these is especially useful if fine lines on black and
white maps are to be preserved.
See also Scale, Crop and Transform Blank Scaled Images
71
Rotation
You can rotate any image through an arbitrary number of degrees. Click on
to start rotation from the second toolbar or click the equivalent Rotate on the Tools menu.
The rotation is previewed immediately in this window. You may enter the degree value as a
decimal amount with up to three places of precision, permitting rotation by very small amounts
down to one thousandth of a degree. The "anti-aliasing" check box should be left checked in
order to preserve fine lines and the edges of images which otherwise may be jagged.
Rotation always changes the size of the image.
Note:
Control points (see the Transformation chapter), if present, will be rotated along with the
image. If you wish to preserve the original data, you should save the rotated image under a
new name. This will also save the rotated control points if any.
72
Filtering
Clicking on
or the equivalent Tools menu entry for the second toolbar made visible by clicking on
when the first toolbar is visible brings up the filter dialogue box.
If you click on the lock preview box, you can see the immediate effect of any of the pre-set
filters chosen on the right. If you wish, you can change the numerical values of the filter
coefficients and view the result in the preview box. When you are satisfied with what you have
done, apply the filter to the main image by clicking OK If you wish, you can apply multiple
filters by clicking this
button which will transfer the result of a filter operation to the original box, and then additional
filters may be applied to the result in sequence. Try the presets on an image to see what they
do and which filter values appear when they are chosen. In these filters, a 3 x 3 pixel window
is passed over an image and the pixel values at each point are multiplied by the numbers
shown, then divided by the value in the divisor field. You can load and save combinations not
in the preset values with the load and save buttons.
See the reference to Pratt in the bibliography appendix for details on image filtering if you
wish to know more, or simply try each in turn to see what will happen in the preview window.
73
Image enhancement
Image enhancement is a special technique which processes a moving window of very large
size passing through an image.
Start enhancement from the Tools menu or click on
tp bring up a dialogue box:
with a choice of many parameters with which to improve the appearance of an image or the
visibility of any faint features it may contain. It is especially valuable when continuous features
are hard to see in different backgrounds, and where a global contrast change as offered in
the first menu item produces an unpleasant appearance in the other parts of the image.
The method used works only on the luminance component of an image and leaves the
colours nearly unchanged when you have loaded a colour image. The brightness is used for a
greyscale image. The technique is as follows: a large moving processing window whose size
as a percentage of the width and height of the image in pixels moves through the image
continuously computing the mean and standard deviation of the luminance in the window's
area.
The mean is roughly equivalent to the brightness, and the standard deviation is roughly the
local contrast in an area. Each pixel is modified so that it tends toward new desirable values
as given by the Contrast and the Brightness sliders. The degree of contrast multiplication can
be set by the Contrast Multiplier slider and a maximum limit set on this multiplication with the
Contrast Limit slider. In addition simultaneous edge enhancement is also offered using the
Edge Enhancement slider.
Progress in computation is shown with a gauge control. You can reset defaults with the
Defaults button. You may also change the size of the moving window in height and width
independently. Usually the default will be adequate however. A band of untreated data equal
in size to half the size of the chosen window must be left around the treated data, since the
window contents are undefined in this external region.
First, try the default values which have been selected to work well with a number of typical
colour images. They are also usually satisfactory for greyscale images. If you are not satisfied
with the result, use the Undo menu option and start again, modifying one option at a time until
74
you get an acceptable image. Do not try to change more than one option at a time. Usually,
half a dozen experimental runs will be needed to obtain an optimum image.
Contrast is locally enhanced and details may be seen more readily without affecting the
overall properties of the image:
Before:
After:
75
You may also convert a greyscale image to a black and white drawing by checking the
Thresholding box which appears when a greyscale image is loaded. It is not visible when a
colour image is being processed. If you wish to convert a colour image to a drawing, use the
greyscale option described above first to convert the image to greyscale. You can then
threshold the new greyscale image. If the original image was rather dark or especially light,
you may find that changing the brightness using the Brightness,Contrast, Gamma option
above may improve the appearance image after thresholding.
For example, starting with the image:
(c) Rog Palmer, Cambridge
you can produce the image:
The thresholding operation assigns a pixel to black or white depending on whether its
brightness value is above or below a threshold. However, if this were done using the same
threshold for the whole image, as is common in many picture processing programs, the result
would be unsatisfactory. Instead, the program computes the average brightness in a area
around each pixel as well as the standard deviation in brightness in that area and selects a
local threshold which is appropriate for the best separation of the pixel from the background.
Thus, thresholding works equally well in dark and light areas of the image.
Notes:
For both colour and greyscale images, a temporary copy of the image is required. For very
large images, this additional copy may cause a machine with modest physical memory to use
76
virtual memory which is paged out to hard disk. If that happens, the computations may slow
down considerably. The only remedy for this is more physical memory.
The mathematics of the algorithm are described in Pratt, (see appendix 6), p. 307 ff. based on
an obscurely published method due to R.W. Wallis, An approach for the space variant
restoration and enhancement of images, Proceedings of the Symposium on Current
Mathematical Problems in Image Science, Monterey, California, November 1976. The
technique has been modified here to deal with colour as well as greyscale imagery. The
computation has been highly optimized so that only the values of the corner pixels of the large
moving window are added and subtracted from two accumulator registers of image width to
update the mean and standard deviations. There are thus no computational limits on window
size. See Appendix 3 for further details of the algorithm.
77
Median filtering, scratch removal, sharpening
From the Tools menu or click on:
to display the Median filtering dialogue box:
After sorting a set of numbers in increasing order, the median is the one "in the middle", i.e.
where half the rest of the numbers are less and the other half are greater in value. In a digital
image, when dirt or scratches have spoiled the appearance, these pixels have much higher or
lower values than their surroundings and differ considerably from the median value in that
area. Unlike averaging, computing a median is not affected by the presence of such an outlier
since only the ordering of the numbers is used. Replacing the outlier produced by a scratch or
dirt with the median value is a simple effective technique. The numbers here are the grey
values or the intensity values in a colour image. The count of the number of occurrences of
each value is stored in an array which runs from 0 to 255 (black to white). The index to the
value in this counter array which corresponds to half the total sum of the counts is the
median.
You can examine the statistical distribution of any displayed image by clicking on Histogram
78
on the Tools menu. It shows the number of pixels for each possible pixel value in the image
graphically.
The operation removes noise and scratches, but it does not blur the image:
Median filtering in AirPhoto has been modified to adapt to local image contrast.
79
Edge extraction
Five edge extraction methods are offered. Three of them can be initiated from the Tools
menu Edge Extraction item, one from the Enhancement dialogue by clicking the Thresholding
box, or the fifth from the Median Filtering dialogue by checking the edge extraction box.
Edge extraction is intended primarily for making black and white pictures from a satellite or
vertical image to show field boundaries as an alternative to a map or for overlaying on such
an image to intensify these. Although archaeological features may also be outlined if they
have suitably high contrast with their surroundings, this is not usually satisfactory.
Edge extraction is intended primarily for making black and white pictures from a satellite or
vertical image to show field boundaries as an alternative to a map or for overlaying on such
an image to intensify these. Archaeological features may also be outlined if they have
suitably high contrast with their surroundings, but this is not normally so.
A dialogue is displayed with two images. For reference, the left window shows a reduced
copy of the source image. The right window shows approximately the result which will be
obtained when an extraction method has been applied. A choice between three different
methods for extracting edges from images can be made by clicking on a button in the Type
box at the bottom left.
Canny's algorithm for edge extraction usually produces the cleanest lines for field boundaries.
It requires two parameters selected by the threshold sliders and one parameter for
smoothing.
Values for Canny's computation below the low threshold are not included in the output.
Values above the high threshold are always included in the output. Values between the two
thresholds are included if a value belongs to a line. Setting the low threshold higher will
reduce fine detail Setting the high threshold lower will increase it. Note that for the Canny
method, the visibility of the lines is usually better in the preview than in the processed full
image, so it may be advisable to use lower settings for both thresholds for the best results.
Setting the smoothing higher will eliminate undesirable finer detail like ploughing or tractor
marks.
80
Note:
Set thresholds and smoothing trackbars (sliders) by holding down and dragging the small
vertical bar with the mouse. When a trackbar has been given the the focus with a left click, it
can be moved a unit at a time with the left and right arrow keys on the numerical keypad. The
current values are shown and stored for future use.
Click the preview button
to get a better idea of the final result:
For very large images and large values of smoothing, Canny processing takes a considerable
amount of time.
Shen-Castan edge extraction gives a different result.
81
The method requires user choice of three parameters. It produces thin lines which follow the
outlines of fields, houses and roads precisely. However, it may be too sensitive and return
more small detail in the image than is desirable.
The parameter ratio sets the percentage of detected edge points to be used in tracking the
edges to be displayed. The parameter smoothing reduces the number of smaller features
retained. The window size sets the area considered for edge detection at each point. It
usually does not require adjustment except when considerable smoothing is needed as is the
case here:
Sobel edge extraction gives thicker lines and more background detail.
The method has been modified here by adding a thresholding and a line-thickness slider.
Less detail is obtained by reducing the line thickness and raising the threshold.
82
All methods:
Move all the sliders for each type in alternating small steps until you achieve an appearance
which you find satisfactory. The values chosen are recorded so that the next time the edge
extraction dialogue is displayed, the previously chosen values are available.
You can also use the Enhancement dialogue with Thresholding:
83
:The methods from the Tool menu are especially useful for extracting lines from medium
scale coloured maps:
Sobel Edge Extraction
84
Shen-Castan Edge Extraction gives finer lines:
The edge extraction method due to Sobel produces rather thick lines, but these can be
modified with the line thickness slider.
The Median filtering dialogue box also has an edge extraction option which may be useful for
images containing large local variations in intensity which may cause problems with the more
commonly used methods available from the Edge Extraction menu item:
Experiment with the methods using Undo to return to the original to see what the effects are
on the image and choose the one which looks best.
85
"Bump" mapping
"Bump Mapping" is the name given by graphic programmers to applying lighting effects to an
irregular surface. This option in AirPhoto simulates the effect of illuminating the image with a
single coloured light source.
Clicking on
or the equivalent menu entry for the second toolbar made visible by clicking on
when the first toolbar is visible brings up the Bump map dialogue box on tab 7.
Clicking the button which will transfer the result back to the box on the left permits applying
multiple effects. If you click on the lock preview box, you can see the immediate effect of any
parameter change.
You may choose the colour of the light by clicking on the spectrum-like bar at the right. Drag
the little square at the upper right corner to change the proportion of colour and greyscale
lighting. The position of the light source may be changed by increasing or decreasing the
numerical values marked height and width, and the area covered by the light changed by
increasing or decreasing the left and top parameters. The percentage of the original
superimposed on the lighted result is controlled by the "original image quantity %" control. A
considerable amount of experimentation is usually needed to obtain a useful result.
86
Morphology operations
Morphology operations are usually used on black and white maps to modify line thickness.
Thinning of lines without causing them to break may improve the appearance or localisation
of the corners of buildings or the intersections of field boundaries when maps are significantly
enlarged.
The operation called "Opening" will thicken black lines. "Closing will thin them. Each option
may be repeated a number of times to obtain the desired result. The "Maximum" operation
produces a high degree of thinning, but some line connectivity may be lost. The "Minimum"
operation can restore this without thickening the lines too much. In the image below, the
Maximum operation has been applied to the left image. The right image is the result.
87
6
Maps and Calibration
88
Grid / calibration menu and toolbar
Calibration associates the pixel coordinates of points in an image or a map with the
coordinates used on a map or another source such as field measurement.
Maps or any other image can be calibrated by identifying four or more points whose
coordinates are known precisely in any of more than 50 national or international grids
coordinate systems. Details of the grids supported by AirPhoto are given in Appendix 3.
This menu becomes visible if an image has been loaded. It offers a selection of operations on
calibration points. Most of its functions are duplicated in the lower toolbar except for Select
Grid which is on the upper toolbar.
The other operations are:
Align Image to Grid:
If the image is calibrated, it will be transformed to a new image which is aligned to the chosen
grid. This function is useful for correction of rotation of scanned paper maps. It is imperative to
use it if you are working with imported Google Earth imagery and want to use the Layering
option later.
Align Image to GPS -WGS84:
A calibrated image will be rotated so that it is aligned with GPS WGS-84 degree coordinates,
and the coordinate system of the image will be changed to decimal latitude/longitude in the
WGS84 Datum. A grid with the latitude and longitude may then be written to it for comparison
with satellite imagery such as SPOT 10m. which has this orientation and calibration.
GridToGPS-WGS84:
Transform the calibration of the image in a national or other grid to one suitable for the Global
Positioning System, WGS84.
GPS-WGS84ToGrid:
The inverse of GridToGPS-WGS84.
89
Show GPS Data
If the image contains GPS data recorded by the camera in the EXIF header, then an
additional menu item becomes visible:
Clicking on this will display the GPS time (UTC) of picture exposure, and the latitude,
longitude and altitude of the aircraft or camera in the WGS84 datum:
Write Grid or Fiducials:
Write a grid or a set if fiducial marks over the displayed calibrated image.
Principal Point:
The principal point is the intersection of a line from the lens centre to the film or sensor at the
back of the camera. For some operations, the calibration of the camera is needed. This option
permits interactive selection of the principal point of an image for use with various
transformation techniques when camera calibration is not available. A frame quadrilateral is
dragged by its corners so that it is parallel to all sides of the image. Although this operation is
not related to map calibration, it was included on the calibration-grid menu.
90
Select Grid:
Double click on the desired grid or press enter after using the arrow keys to navigate the
window. The function is the same as that available on the Options dialogue box.
The calibration toolbar, hidden behind the control point toolbar and activated by clicking on
Click here to toggle between the magnifying window and a cross-cursor with surrounding
circle, or click here to display a full-screen line crossing cursor which can be dragged to a
point of interest which is aligned with features on the image boundary, e.g. grid values.
These cursors can also be used to delete individual calibration points.
Click here to load calibration points from an existing calibration point file.
Click here to save the currently visible calibration points to a new file.
Click here to save the currently visible calibration points to a file with the same name as that
of the image and the extension 'cal'.
91
Click here to align a slightly rotated or skewed scanned map to the selected national or
international grid
Click here to enter a new calibration point by dragging two lines along features visible in the
image so that their intersection becomes the position of the new point.
Click here to copy all visible calibration points to a second image which must be selected as a
target and the first image must be selected as the source using:
Click here to hide or show all calibration points in the image which has the focus.
Click here to delete all calibration points in the image which has the focus.
Click here to return to the control point toolbar.
If you have selected the UK BNG grid, you are offered a choice of using the long coordinate
form (7x6 digits for easting and northing) or the short form with the first digit dropped and the
100km map square name shown. You can toggle between both forms by clicking on
A similar feature is available for the Irish grid
92
Entering calibration points
If the source of the map is an image scanned from a paper map, it is strongly recommended
to identify and enter as many points at possible at visible intersections of grid lines so that
AirPhoto can compensate for paper stretch, rotation, skew and perspective distortion. This is
not needed for digital maps which have no distorition.
After a map has been loaded, click on the
button on the lower tool bar to cause the calibration toolbar to appear.
Then click on Calibrate on the Grid menu
or click on
or just press Ctrl-Ins on the keyboard .
A magnifier with a double circle appears which can be moved to a known point:
93
Entering a single calibration point:
Click, and a dialogue box permitting coordinate entry pops up.
Enter the values appropriate to the map and close. A calibration point marker records the
position of the calibration point.
If you have made a mistake you may either click on the point again to delete it, or you may
correct coordinate values by holding down Shift while clicking. This causes the coordinate
dialogue box to reappear, and the values it contains may be modified. You may also disable
a calibration point by holding down Ctrl while clicking on the point, in which case its marker
colour changes from aquamarine to blue.
As soon as you have entered four points, the calibration for the map will be computed and the
coordinates of the mouse position displayed continuously between the two lower toolbars:
If you wish to enter a calibration point at one of the corners of the image, move the cursor to
the neighbourhood of the corner and hold down the Alt key before clicking. After you have
entered the coordinate values, the calibration point will be placed exactly at the nearest
corner.
If you are using UK or Irish coordinates, you may choose between displaying the 100km map
square name or the long coordinate form using the little check box on the form:
94
and either the map name with the 100km digit numbers removed will be shown:
or just the decimal digits will be visible. The change will be recorded for future use. You may
also change this at any time by clicking on the UK
or Irish
flag buttons on the main toolbar.
Modifying an extant calibration point:
When in calibration point entry mode, hold down a Shift button on the keyboard, carefully
centre the calibration cursor or magnifier over a point and left click. This will bring up the
dialogue box used at entry, and you can change various parameters. Make sure that the Shift
is held down firmly, or the calibration point will be erased!
Enter a calibration point at the intersection of two lines:
The lines may intersect outside the visible area of the image to produce an invisible
calibration point which is displayed using a square marker instead of the conventional round
one. This permits deletion by clicking on it in entry mode if desired. If you make a mistake,
hold down a Shift key and right click the mouse. The line or lines on the screen will be erased
and you can enter them again. Click on the left mouse button when you finish to record the
new point.
Editing all calibration points for a map:
After a map has been loaded, click on the
button on the lower tool bar to cause the calibration toolbar to appear. There, click on
to open the calibration point editing dialogue box.
95
Please note that the identification numbers for these always begin with the number 9 and
must never have more than 4 digits, so that the maximum number of calibration points is 999.
For calibration points, you may add or change both coordinates and height values if you
wish.and disable selected points.
Save the results of any changes using the File menu of the dialogue box.
Making maps across strip, zone or national boundaries:
Occasionally it may be necessary to join maps from two different coordinate systems. The
following method allows you to do that.
0) Select the grid system of the first map in Setup or from the Grid menu after the map has
been loaded.
1) Calibrate the map normally, selecting the correct zone if the grid uses one and if the zone
is not determined automatically by AirPhoto.
2) Align the map to the grid using the menu choice.
You can add a coloured grid to the aligned map using the grid menu if desired, and you are
using the maps from one country only.
3) Close all images (very important) so that the zone value is reset.
4) Repeat steps 1 to 3 for the second map.
96
5) Open the first map again. Click on Menu/Grid/ GridtoGPS-WGS84
6) Save the resulting calibration file with a new name when asked
7) Save the resulting map file with the same name when asked, then close it.
8) Repeat steps 5 to 7 for the second map.
9) Reopen the first map.
10) Place four **control** points (not calibration points) precisely at the corners of the map
data so that the Join operation will crop the images at these control points and exclude
border information.
11) Save the file and close it.
12) Repeat for the second map.
13) Open Join from the main menu.
14) Proceed to the directory where the above maps were saved.
15) Select the two maps by name using either the arrow buttons or by dragging the names to
the box on the right.
16) Press OK. Select a scale when asked or keep the scale shown.
17) The join should proceed normally. Save the result under a new name. It is now
calibrated in the world-wide WGS84 UTM system.
Do not attempt to re-calibrate the result with the original grid system if the maps overlap only
by a small amount, but you can do this when the overlap is as large.
You can join any number of adjacent maps across boundaries with the above method even at
places where three or four zones or countries meet if you have enough patience.
97
Adding grid or fiducial marks to calibrated images
You can write a grid or a set of fiducial marks to a calibrated map or image in a variety of line
styles and colours and fonts. The coordinates for the grid will be written at the borders of the
image. You may choose to display the coordinates of the horizontal lines either slightly above
each line or vertically at the left and right sides of the image. If the image straddles two or
more meridian strips, the grids of each of these will be shown correctly in the relevant part of
the image. Usually, you will want to align your image to the grid before applying the lines.
You can choose the colour of the lines or fiducial marks and the colour, size and kind of font
used for printing the numerical values of the grid around the borders separately or together.
You can also write a frame around the boundaries of the image indented by an amount
ranging from 0.001 to 0.1 of the side lengths of the image.
When the OK button has been pressed and the image is displayed with the grid, you may
98
save it without control and calibration points but with the grid showing permanently. Click
Undo to erase the grid.
The programme can choose an optimal grid interval automatically with 4 to 10 grid lines
horizontally and vertically at intervals set at 1, 2 or 5 times the scale units in tens, hundreds or
thousands whichever looks best, or you may set any grid interval manually by choosing a
non-zero value in the Manual Interval field within a range of 0.01 to 1000. Set the interval to
0.0 to use the automatic interval feature.
You may change the displayed grid if the image already has a UTM-WGS84 grid, or you may
first convert it to that format and from there to any of the other formats supported by AirPhoto
on the Grid menu.
All settings in the dialogue box are retained only during the current run of AirPhoto.
Note:
If you are using an image which has been georeferenced from a source external to AirPhoto,
e.g. a GeoTiff, ArcView world file, MapInfo tab file etc., the georeferencing in that file contains
only the coordinates of the upper left corner of the image in the grid system used when
creating the georeferencing file along with the pixel scales in the width and height (x, y)
directions. This implies that the referencing is only for the zone in which the upper right corner
lies. It is incorrectly extended across other visible zones. Such referencing causes a problem
when a grid zone boundary or boundaries occur further to the right in the image. AirPhoto
scans the top and bottom of all images looking for zone boundary transitions and treats and
writes the grid for each zone separately.
Scanning may produce a rotated grid even if the image has been ortho-rectified so that all
data lies in a true rectangle. Some of the satellite image viewers available on the Internet may
be used to produce a cropped version of an image lying in a single zone. This cropping does
not take the zone boundary into account, and coordinates shown in the viewer may be in error
if the cropped area is not in the zone attached to the upper right corner. The coordinates are
displayed correctly in AirPhoto. For large area satellite images or very large map regions, the
grid lines may show curvature, depending on the projection involved.
99
Grid zones
If you have chosen a GIS option, the programme will attempt to load coordinates from a
compatible "world", "tab" or "doc" file if one can be found when an image is loaded but an
AirPhoto calibration has not been carried out on it. Such files contain only the corner
coordinates of the image and are ambiguous if the grid system chosen also requires a zone
number. In this case the dialogue box:
will pop up for the chosen grid and you must enter the appropriate zone number manually.
However, if you are using Landsat 7 files derived from the NASA MrSID file server, then a file
with the extension .met should contain the zone number and this will be chosen automatically.
100
Transforming between grid systems
There are no direct methods available for translating from one national grid system to
another. However, one can be implemented via a series of intermediate steps when
appropriate constants are available.
1) Using the appropriate inverse transformation equations for the first grid system, the latitude
and longitude of a point is obtained in the local system.
2) This latitude and longitude is transformed into the latitude and longitude of the GPS
WGS84 system using either a Helmert, Molodensky or Bursa-Wolff transformation, depending
on available constants.
3) This GPS latitude and longitude is transformed into the latitude and longitude of the second
national grid system again using one of the three transformations with appropriate new
constants.
4) Finally, the new latitude and longitude is transformed back into the second grid system
using the formulae for the second grid.
The accuracy achievable depends on the precision of the constants available. The error
introduced by all these intermediate steps is usually a bit more than the uncertainty in the
available constants, but it is far better than simply using the raw latitudes and longitudes from
one system for the other.
In AirPhoto, all the latitudes and longitudes of the calibration points for a map are
transformed in a single operation to those of the GPS system. A new grid system is then
chosen, and the transformation from GPS to that system is made, from which point on, the
program then runs as if it were using the second system. The time required on a modern
machine is so small as to appear instantaneous.
Warning:
Be very sure to set your desired co-ordinate system in Setup before entering or changing any
co-ordinates. No check can be made on input data for the type of co-ordinate system used, so
you must do this very carefully yourself. The chosen co-ordinate system is retained in the
AirPhoto initialisation files which are written to the home directory when you close AirPhoto,
so that once you have made your choice it will be valid until you make a change.
101
7
Transformation & Rectification
102
Control points: menu and toolbar
The first step in transforming aerial images to maps is to choose corresponding points in
each. These points are required for computing the constants of the function which relate the
position of any pixel in an image to its corresponding position in a map or other image. These
points are called control points. Usually the relationship is a perspective transformation, but
other kinds of transformations may be required, depending upon the kind of images involved.
The number of control points needed depends on the type of transformation which will be
described in a later section.
Most available operations may be performed in three ways
•
From the control point menu
This menu becomes active if an image has been loaded. It offers a selection of operations on
control points.
•
From the lower toolbar
•
With a function key as shown on the menu
Click here to open the default magnifying cursor that can be used to add, delete or disable
control points.
Click here or here
to toggle between the magnifying window and a cross-cursor with surrounding circle.
Click here to load control points from an existing control point file.
103
Click here to save the currently visible control points to a new file. Control point files contain
the image coordinates of the point, its geographic or grid coordinates if the pixel comes from a
map or calibrated image and other important administrative data required for many
operations. Details of the content of such a file are given in Appendix 5.
Click here to save the currently visible control points to a file with the same name as that of
the image and the extension 'ctl'.
Click here to toggle control point colours to bright green for improved visibility on black and
white maps or to black and white for better visibility on colour images.
Click here to toggle between automatic and manual numbering of control points, overriding
the setting in the Setup options dialogue, see Appendix 4.
Click here to move a control point by dragging it with the mouse.
Click here to enter a new control point by dragging two lines along features visible in the
image so that their intersection becomes the position of the new point.
Click here to copy all control points in the image which has the focus selected as a source to
a second image selected as a target.
Click here to hide or show all control points in the image which has the focus.
Click here to delete all control points in the image which has the focu3s.
Click here to edit control points manually.
Switch to the calibration toolbar which is hidden behind the control point toolbar.
Each of these buttons and their menu or function key equivalents will be explained in the next
section.
104
Entering control points
Starting control point entry:
On the control point toolbar
click on:
to begin the process of entering control points. You may also press Ins on the numeric
keypad to start the process or the Control Point menu item Add/Del.
Display the image which is to be transformed and its target (usually a calibrated map or
orthophoto) simultaneously and enter control at corresponding points one at a time. Do not
attempt to enter all control points at once in an image and then switch to another image to
enter them there, since this easily introduces errors which will prevent or distort
transformation.
You may enter at least three corresponding control points in each image if you have height
data for the area of interest, but with four points or more height data is not usually needed.
Accuracy will improve if you enter as many corresponding points as you can identify precisely.
A magnifying window which aids in localisation will appear unless you have turned this off
click:
You can turn the magnifier back on again by clicking:
or use the equivalent operation from the Control Point menu or the hot key F10.
Enter a point with a mouse click. Delete a point entered in error by clicking again on it. A
tolerance of +/- 3 pixels makes the deletion operation less critical. Control points are recorded
only temporarily on the image. If it is zoomed, the control point markers will be enlarged or
reduced in size depending on the zoom factor.
Control points have unique identification numbers. Hold down the keyboard Shift button while
clicking on a point permits viewing its identity number and modify it if desired.
Control points also have a flag which determines whether they are enabled or disabled, and
they may be disabled without deleting them by holding down the keyboard Ctrl key while
clicking on a point. If multiple images are displayed, all control points having the same identity
number will be simultaneously disabled. Disabled control points are not used for
transformation calculations. They may be re-enabled at any time by clicking on them again
while the Ctrl key is held down.
If you find that the control points you enter are hard to see, try clicking on
which will change their colour temporarily to green which may be easier to see on some
backgrounds like black and white maps. Clicking on this button again will return the colour to
the default black and white.
105
Move the cursor to a well-defined point
When you left click, a control point with the next highest number
will be entered automatically if you have not changed to manual entry by clicking on or
selecting this option from the control point menu or using the global option described next.
Then move the cursor to the corresponding point in the target and click again. Each control
point you have entered will be attached to the respective image. If you are entering control for
more than two images, it may be helpful to use the global numbering option offered on the
control point menu:
106
When this option is selected, you can select a control point id number using the PgUp/PgDn
keys to whatever value you wish for all displayed images. The value chosen is shown in the
main upper toolbar as the next id and the background is shown in yellow so that you can
easily see that the global option is in force:
In the middle field, the number of control points in the image under the cursor is shown along
with the highest id which will be entered for this image when you left-click with either the
magnifier or the cross cursor.
If the global numbering option is not selected, then the background of these fields are shown
in grey The PgUp/PgDn keys are not active in this case.
Entering control points at the intersection of linear features:
Frequently, control points can not be identified precisely, but linear features which lead to
them are clearly visible in an image and on a map. In such cases, a control point can be
added by selecting Intersection from the control point menu or press Shift-Ins or simply click
on the lower toolbar button:
This allows entering a new control point by dragging two lines along features visible in the
image so that their intersection becomes the position of the new point. The lines may also
intersect outside the visible area of the image to produce an invisible control point which is
displayed using a square marker instead of the conventional round one. This permits deletion
by clicking on it in control point entry mode if desired. If you make a mistake, hold down a
Shift key and right click the mouse. The line or lines on the screen will be erased and you can
enter them again. Click on the left mouse button when you finish to record the new point.
Hold down the left mouse button at some point in one of the linear features (road or field
boundaries are typical choices) and drag it while aligning the flashing line so that it overlies
the feature exactly. Repeat this for another feature. The result should look like:
When you click the left mouse button after placing the second line, the new control point will
107
be placed at the intersection of the lines.
If the linear features intersect outside of the visible image, the square marker placed at the
nearest image border to remind you that an invisible control point is out there and to permit
you to delete, disable or modify its identity number as with a normal control point in the image
area.
If you wish to cancel the operation and try again, hold down a Shift key and right click the
mouse button anywhere in the image.
Note:
If you have more than one image on the screen and are using this option, but you click on
another image, nothing will happen, but a spurious line may remain on the image. Start the
intersection operation again to remove it.
Entering control point identity numbers manually:
You wish to enter the identification numbers of control points manually. You can do this by
clicking on:
or selecting Number Manually from the control point menu. If you have an extant control
point and want to change its identification number, delete and re-enter it with manual
numbering selected.
Here, you can change the identification number to any unused value. Be very careful when
you do this to make sure that corresponding points in the second image have the same
number or transformation will fail with an error message telling you that control point
identification numbers are inconsistent.
Moving or disabling extant control points:
You can move an existing control point by clicking on
108
or pressing F9 and holding down the 'finger' mouse cursor on the middle of the point while
dragging it to a new position. If you want to do this more accurately, hold down Shift when you
hold down the cursor on the point. Then, release the mouse button, and now you can move
the point a pixel at a time in four directions using the arrow keys on the numerical keypad.
Pressing Enter permits you to move more than one control points by selecting each in turn
with the mouse while holding down Shift. Pressing F9 again will terminate the operation of
moving control points..
This shows the 'finger cursor' placed over a control point prior to a move. After a move, the
old control point which was visible at the start will be shown in red, and the control point at the
new position shown normally:
Another control point coloured blue to the right has been disabled by pressing Ctrl on the
keyboard while clicking the control point entry magnifier over it. Sometimes it is useful to
disable a control point temporarily to see how this affects the accuracy of transformation. If
you have more than one image loaded, the programme will look for all control points having
the same number in other images and disable them too. Disabled control points remain visible
and stored, but they are not used for any transformation calculations. They may be reenabled at any time simply by holding down Ctrl and clicking on them again when in control
point entry mode. As before, when multiple images are loaded, all disabled points with the
same identification number are re-enabled when one of them is re-enabled.
109
Entering control points using known coordinates:
If control points are outside the limits of a calibrated map, but are known from an adjacent
map, or if there are features which are not mapped but which have been measured in the field
so that their coordinates are known, you can enter these points numerically by pressing F6
during control point entry. You can also click on
A dialogue box will pop up which looks like the one used for calibration, and coordinates,
height and an identity number can be entered here. By default, the dialogue will show the
coordinates of the last cursor position, so this must be changed appropriately.
Hiding and showing control points in printed or saved output:
By default, control points will not be shown in saved or printed output. However, if you want to
record them to an output file, use the SaveWithData option on the File menu. Should they
appear when not wanted, click first on the
Hide Control Points button or the equivalent on the control point menu before you carry out
any operation whose result you want to print or save. Hiding control points does not erase
them. They are merely not shown on the display. Their number is noted in the window
caption. Do not use the "delete control points" option for this purpose or subsequent
transformation will fail.
Obtaining control points for features not shown on a map:
It frequently happens that features visible in an image to be rectified are not recorded on the
map of the area. However, one may be able to find calibrated (geo-referenced) vertical
imagery which shows them. Such vertical images may be very useful in helping to enter
control for the visible but non-mapped points. The technique is as follows:
Calibrate the map. Enter control on map and on vertical with known points on both. Transform
the vertical to the map normally to make a new image with the result. Enter control points for
the features in the result which are also visible in the image to be rectified. Save the result.
Open the original map again and load the control points from the rectified vertical using the
load control point option. You now have a calibrated map with the control points it had
originally as well as those of the additional points. Delete those control points which are not
visible in the oblique image to be rectified. Now load the oblique image and enter control
using manual numbering so that the control points you enter have the same ID's as those on
the map. Rectify. This method has the advantage that no numerical control points need to be
entered.
Debugging a control point configuration:
Some control point arrangements may cause numerical problems with the computation of the
fit between source and target sets. This can arise when a significant fraction of the collection
of points in one or the other image lie near a straight line, or with some types of
transformation, when all points lie approximately on the circumference of a circle. If such
difficulties arise, it may be useful to see the rough area of transformation without actually
carrying it out.
110
Click on Debug on the control point menu:
to set a temporary debugging mode which will display the area and geometry of rectification
as a line diagram on the target after transformation:
111
Then, disable control points one by one to search for those which are causing the problem
and click Undo to repeat the transformation and view the resulting diagram after the change.
When the offending points have been found, turn off the debugging mode by clicking again on
the Debug menu entry and repeat the transformation normally.
You may also use this mode when tweaking (see below) very large images to save time. The
control points may be tweaked to minimise error without actually having to transform the
image. When you are satisfied with the residual error, turn off debugging and transform
normally.
Note:
Clicking on any of the buttons or the menu commands automatically disable the previous one
and locks any operations.
Copying control points from one image to another:
Click here to copy all visible control points to a second image which must be selected as a
target and the first image must be selected as the source using:
If both images are calibrated maps, then you will be offered the choice of merging the control
points from the source with the control points of the target or simply overwriting them as is the
case when both images are not calibrated.
The programme will ask for confirmation of this operation.
The programme will place merged control points at their correct grid coordinates, and if
outside the target map area make the usual rectangular marks to show that an off-image
control point is present. The identity numbers of the original target control points are retained,
but source points which are added to the target are renumbered. These new numbers start
with the highest value present in the original target point collection plus 1.
A check is made to ensure that control points with the coordinates of extant target control
points are not duplicated. The merge operation may be repeated with different sources. The
final target containing control points from all sources plus those originally present if any must
be saved under a new name to avoid overwriting the original target control points.
Warning:
Align all calibrated sources and targets to the chosen grid before attempting to merge control
points, or the check on duplicates will fail if misalignment exceeds 3 pixels.
112
Editing Control or Calibration Points
Calibration Editing:
You can display and edit all the calibration values in a table. The editing table is loaded from
the image by default, but you can also load from a disk file in one of several formats and save
them as well.
If the chosen grid is from the EPSG database, then you can see the EPSG number.
If UTM has been chosen, then you can see the UTM zone number.
Modifying an extant single point:
When in either control point or calibration point entry mode, hold down a Shift button on the
keyboard, carefully center the control or calibration cursor or magnifier over a point and left
click. This will bring up the dialog box used at entry, and you can change various parameters.
113
Using known coordinates:
Sometimes there are reasons for wanting to enter a control point at known geographic grid
coordinates in a calibrated image. One example might be from data obtained with distance
measuring equipment (DME) for points which are not visible on a map, but which are visible in
an air photo. Another reason might be for entering known points just outside the visible area
of the map. For a single control point when in control point entry mode, press F6, but there
are some circumstances where you may want to import a whole set of coordinates from an
external file made by some kind of DME device. Frequently, such sets of coordinates may
contain heights as well. Go to the control point menu and select Edit.
This will show any control information you may have.
You may modify any of the items in the editing box and then save the result to the extant
image to test the effect of what you have done. If you are dissatisfied, return to Edit and try
again. If you are sure that all is well, you may save directly to the control point file or to an
ascii file as well.
You may modify any field either by double clicking on it and entering new values or checking
or unchecking disabling, or you may use the menu Modify/F2 option if you prefer after moving
to a field with the arrow keys. Control and calibration points may also be inserted or deleted,
but you are responsible for using identity numbers which are not already in use.
114
Since you may also edit calibration points,. please note that the identification numbers for
these always begin with the number 9 and must never have more than 4 digits, so that the
maximum number of calibration points is 999. Control points are numbered from 0001 to
9999. For calibration, you may add or change height values if you wish. You may also alter
the pixel coordinates or the grid coordinates of any of these points.
For new data from other sources open the file menu and choose an ascii file with your x, y
and optional z coordinate data. The program accepts files in text format only, with carriage
return and line feed at the end of each line (Windows Notepad format, for example) and any
one of the following 5 delimiters used to separate data on each line:
tab or comma (,) or dollar($) or forward slash(/) or blank( )
You must use only one delimiter between items, but any number of blanks are permitted for
formatting purposes if you do not use one of the other delimiters.
Each line of data represents at an x and y coordinate pair, for example:
1) x, y
additionally:
2) x, y, z , where z is a height value in the same reference system used for x and y.
3) id, x, y, where id is the identity number
4) id, x, y, z
5) id, xpixel, ypixel, x, y, where xpixel and ypixel are the pixel coordinates of the point in the
image
6) id, xpixel, ypixel, x, y, z
7) id, xpixel, ypixel, x, y, z, zone, where zone is a UTM zone number
8) id, xpixel, ypixel, epsgcode, x, y, z, zone, where epsgcode is a valid number from the
EPSG database list
9) id, xpixel, ypixel, epsgcode, x, y, z, zone, enabled, where enabled is either 0 or 1, 1
representing an enabled calibration point.
You can edit any of the points by clicking on a point and typing or pressing F2 when the blue
115
background is present or using the Modify option on the Edit menu. You can also insert a
new blank line for entering more values or delete an existing line either with the Ins and Del
numeric keys or with the Insert or Delete options on the Edit menu:
When you have finished, you may press Save to Image on the File menu to save the values
to the normal calibration or control point storage trees. You can also enter new values which
have not been loaded from an external Ascii file, but see the note below before doing so.
You can also Load from image, the values from previously existing control points to examine
and edit them if you wish. You may Save to image to replace any added or edited points to
the image control point data structure. Please note that this will not be saved to a .ctl file if you
close the image using the emergency exit door toolbit, or use Alt-F4 or the upper left corner
tab. You can save to a new set of control points and to the image simultaneously if you use
SaveAs (new control). In that case you will be prompted for a new file name to which the
data can be saved in binary control point form. You may also Export Ascii a loaded or
imported control point set to a new ascii file. Finally, you may Import + Append to import
multiple sets of ascii control files and add them to any of the data already in the table.
Note:
The active field in the table has a blue background. When you switch to edit mode either by
pressing F2 or choosing Modify from the Edit menu or by starting to type in the field, its
background changes to gray. The editing only becomes effective when you leave the field
either by clicking on another with the mouse, or using any of the keypad movement
commands. If you close the table before doing so, the change you have made will not be
recorded.
When editing a numeric field:
Double click on the field or press F2 to change the active (blue background) field to edit mode
(gray background). Type in new values as required. Move back and forth in the field with the
arrow keys on the numeric keypad.
<CtrlY>Erase the field's content.
<CtrlZ>Restore the field's original content.
<Bksp>Erases one character to left of cursor in value.
Navigation in the Edit dialog box:
With the numeric keypad:
<Home>Move the active cell to the first column.
<Left>Move the active cell left to the previous cell.
<Right>Move the active cell right to the next cell.
<Down>Move the focus to the next row.
<Up>Move the active cell up to the previous row.
<End>Move the focus to the last column.
<PgDn>Move the active cell to the page following the current page.
<PgUp>Move the active cell to the previous page.
<CtrIHome>Move the focus to the first cell in the table.
<CtrIEnd>Move the active cell to the last cell in the table.
<CtrlUp>Move the active cell to the top left cell.
<CtrlDown>Move the focus to the cell at the bottom right of the table.
<CtrlPgUp>Move the active cell to the top of the page.
<CtrlPgDn>Move the active cell to the bottom of the page.
<F2>Enter exit table edit mode (or just start typing in the active cell)
With the Mouse:
Drag on the scroll bar to bring a row into the visible area if there are more rows than can fit in
116
the dialog box. Click on any cell to activate it and make it ready for editing. Click on any other
cell to confirm the edit.
Warning:
The program makes no checks on the validity of the data you have either imported or entered
by hand. It rejects duplicate id numbers and duplicate coordinate values. If you import with
four or more fields present, you must administer your id numbers carefully. Zero is not
permitted as an id number. You must enter an id number in every row, or the row will not be
exported or loaded.
You are strongly advised not to use this method for entering raw control information.
117
Transformation
After you have selected and marked corresponding control points on the aerial image and the
map, select the source image (the image to be transformed) in the working area below the
main image.
Select the target image (the image to which the source is to be transformed) in the working
area below the main image.
If you have chosen to hide the lower toolbar in Options then you can select source and target
either by opening the Window menu on the main menu bar:
or you can simply press F3.
Area Selection:
If you wish, you may transform a selected rectangular area in the source image. Click on the
selection button or on the Select entry on the Tools menu and drag a selection area.
118
When the transformation has terminated, click on or on Deselect on the tools menu to
cancel the selection.
Warning:
If the horizon is visible in an image, you must select an area which does not include it.
Ignoring this may cause transformation to fail, since a perspective transformation goes to a
vanishing line at the horizon, and the transformation constants are undefined. Left-Drag the
mouse cursor to define a selected area such that the upper boundary of the selection box is
below the horizon. The red-white box shows the area which is set when the left mouse button
is released. If you are not satisfied, simply repeat the mouse-down drag operation.
Click on Transform on the main menu or on the main toolbar to transform source to target if
you have previously selected at least four corresponding points in both images.
This progress box appears during the computation:
When finished, click either on Done and then save the result under a new name or on Ctrl pts
if you want to see how accurately the transformation has been performed.
Transformation types:
Automatic (Default):
Let AirPhoto choose a transformation optimised for the available number of control points.
Projective:
This may be used for photos made with a camera whose properties are not known. At least
four corresponding points in the source and the target must be known for the projective
transformation. More will improve the accuracy of the result.
Polynomial:
This is for satellite or high altitude scanner imagery. At least six control points are required for
the bivariate polynomial of order 2. If you wish, you may use a higher order polynomial (up to
degree 5), but still more control points will be required.
Multi-point:
This transformation may be used if you have seven or more control points for moderately hilly
terrain without a digital terrain model (regular grid of heights). This provides secondary
polynomial correction of a projective transformation. Here too, if you wish, you may use
polynomials of orders two to five, with increasing numbers of control points required. The
119
automatic option chooses Multipoint with second order polynomial secondary correction in
addition to projective correction if a sufficient number of control points are present.
Local Stretch:
This transformation makes no assumptions about the properties of the image. It does linear
local stretching on the internal triangles within a polygon drawn around each control point. It is
mainly useful for correcting old maps for which a very large number of points corresponding to
those in modern maps can be identified. When used, a projective transformation is first
applied to obtain an initially corrected intermediate image for further processing. If you are
curious, you can see the triangulation of the source and target images displayed on the target
after transformation by clicking on the menu item "Show Inc.Triangles" on the Control Point
Menu before transformation which then switches to "Show All Triangles".
You will see the target triangles in green overlaid on the source triangles in blue, with the
target triangles numbered in the order in which they were processed. Occasionally, the
triangulation in target and source may differ, leading to an erroneous result in some parts of
the image. You can prevent this by moving a control point or adding one so that the
triangulation is unambiguous. To do this, you must select one of the other transformation
options such as Automatic before trying the move, since local triangulation does not permit
moving a control point when it is active. The programme computes the ratio of the area to the
perimeter of each pair of source and target triangles as a measure of their similarity.
If these ratios differ by more than the percentage tolerance which can be chosen here, the
target triangle is used without modification. When processing completes, the number of
triangles which have been replaced by the target instead of using the source will be shown.
The higher the tolerance, the fewer the number of triangles which will need replacement, but
the image may be smeared in those triangles which are ambiguous in source and target. The
default value of 10% should be tried first. If too large a percentage of the triangles are
rejected, then you can reduce this by lowering the tolerance.
Fischler-Bolles with DTM:
A minimum of three control points is required, but more will improve the accuracy of the
transformation. A digital terrain model which may be constructed from a number of spot
heights or imported from previously constructed data from other sources is required. A
minimum of five heights are required to construct the model. Fischler-Bolles will usually give
120
results comparable with the Multi Point method, but it requires considerably more effort. It's
main use is for the extreme case of only three control points which can not be dealt with using
any of the other methods.
With this option, you may also need to know something about the camera with which the
pictures were taken:
Images from digital cameras in JPEG, TIFF or an AirPhoto supported RAW format files:
In Setup (see chapter 11), check camera constants if your image source is from a digital
camera:
Camera files of these types which have not been processed by any other programme contain
detailed meta-data in an EXIF (Exchangeable image file format for digital still cameras)
header as defined by the Standard of Japan Electronics and Information Technology
Industries Association.
See:
http://www.exif.org/Exif2-2.PDF
The EXIF header contains a wealth of data about the image and the camera with which it was
made.
You can examine the contents of this header with a number of free utility programmes.
121
Camera Parameters:
There are two EXIF tags which relate to focal length. One is called just Focal-length, the
other is called FocalLengthIn35mmFilm. The first is nearly always filled in by the camera
software, and it gives the actual focal length in millimetres of the lens at the moment of
exposure independently of the image sensor size. The second which is filled in only by highend Nikons and Konica-Minoltas as far as has been found until now recalculates the focal
length value to that which it would have been if the chip size was that of a 35mm film frame.
It's a calculated, not a physical value. Since most sensor chips are smaller than 24x36mm,
this focal length value is usually greater than that reported by Focal-length.
If AirPhoto finds an EXIF header in an opened image file, it attempts to read the tag Focallength which records the focal length of the lens at the moment of exposure. This is of vital
importance when a zoom lens was used. But if first tries to read the EXIF tag called
FocalLengthIn35mmFilm. If it finds this value, then the program sets the image frame
heights and width to 24 x 36 mm and uses the focal length it contains. Any values entered by
the user in Setup are overwritten, since these values are automatically correct.
If we have the FocalLengthIn35mmFilm value, we don't need to know anything about the
sensor chip size, since the camera parameters are defined as if a film and not a digital
camera was used. If the tag FocalLengthIn35mmFilm contains no data or is not present at
all, we need to know the chip (sensor) size in millimetres and we can use the Focal-length
field value for further calculation. In that case, you must get the physical sensor (chip) size of
the camera used either from the manufacturer's documentation or a Google advanced search
on "chip size" or "sensor size" plus the name of the camera make and model. You can also
122
look at the extensive listings in Digital Camera Reviews
http://www.dpreview.com/
which provide the needed values for a very large number of cameras and lenses.
The imaging sensor's width and height in millimetres must be entered manually into the
sensor width and height fields in Setup. These values are saved when AirPhoto closes and
restored when it is opened again. If you switch among images from different cameras, you
must reset them with appropriate constants for each one. Hence, it is advisable to process all
images from a given camera one after the other.
Image sensors are classified according to a standard established for television cameras in the
1950's. For a short review of the arcane world of digital sensor sizes see the article on
sensor sizes in Digital Camera Reviews
http://www.dpreview.com/news/0210/02100402sensorsizes.asp
Here are some typical dimensions for some common sensor types using the television
camera nomenclature under type:
Note:
Unfortunately, there is no way to compute the camera's sensor size from the data in the EXIF
header. It does not quite represent the true image size at the chip, since the chip also has
other processing elements on its surface which are not light sensors, but the value given on
the Internet or by the manufacturer is usually good enough for further calculation. The actual
dimensions vary slightly from one camera manufacturer and model to another. If no other
information is available but the nominal sensor size is mentioned somewhere in the
documentation, the values from the table above may be used.
When you have checked the Digital box in Setup, AirPhoto looks first to see if an EXIF
header is present in the image file you have loaded. If not, an error message is given and
transformation with the Fischler-Bolles algorithm can not continue with the Digital box
checked. It must be unchecked in that case and transformation restarted. If the header is
123
found, the program then looks for FocalLengthIn35mmFilm. If this is non-zero, then the
image frame size is set to 24 x 36 mm and calculations continue. If only Focal-length is
found, then the values you have entered manually in Setup for the sensor size are used and
calculation proceeds. If both Focal-length and FocalLengthIn35mmFilm are zero, then the
EXIF header can not be used and another error message is issued. In this case, you must
treat the camera as if it were a film camera and enter all three required values for focal length
and "film" height and width (of the image sensor) in Setup.
Warning:
Do not process the image with any image processing software unless you are certain that the
software copies all EXIF data to any results it may produce. Test this using one of the above
utilities before and after any operation to make sure that all entries concerning image sizes
and lens focal lengths remain unchanged.
Images from a camera, scanner or a digital camera file other than JPEG, TIFF or RAW:
Uncheck Digital in camera constants in Setup if you have a film image and previously used a
digital image:
You need to know the size of the film frame in millimetres, and if possible the focal length of
the lens. If the image was made with a photogrammetrically calibrated camera, you should
also include the point at which a ray from the centre of the lens falls on the image plane,
called the principal point. If this is not available, it may be computed interactively using an
option in the programme's Grid/Calibrate menu. These values, where known may be entered
in Setup, (see chapter 11).
Principal points:
The principal points are the x and y coordinates measured from the sides of the image where
a line drawn through the optical axis of the lens reaches the film plane. Photogrammetric
calibrated cameras have this determined by actual measurement and are included in the
camera documentation. For amateur cameras it can only be estimated as being in the
geometric centre of the image. This can in turn be estimated interactively from the sides of the
image if there is unexposed film material around the borders, or from the side lengths of the
film frame if this is not the case. An error in estimation is not as serious as an error in
estimation of the focal length of the lens, the second parameter of what photogrammetrists
call 'interior orientation'. For images from old cameras with de-centred lenses, setting the
124
principal point manually may reduce error somewhat.
If you are using vertical images made with a calibrated camera, the people who did the
photography ought to be able to supply it. If you can't get this information, use the interactive
principal point calibration scheme offered on the calibration menu. If you don't know the focal
length of the lens used, assume first that this is equal to the length of the diagonal of the film
sides. Then try a transformation and change the focal length entered in Setup in small steps
until you get the best match to your map.
The principal point is a specific property of the camera like the focal length of the lens. If all
photos are made with the same camera, then the values are constant.
If you don't know any of these values, the program will try to do the best it can by estimating
them from the scanned image itself. It will use the side lengths in pixels for the film frame
sizes, the diagonal length in pixels for the focal length, and the centre of the scan as the
principal point. This will seldom offer an optimum solution, but it may be better than nothing. If
you change the focal length, leaving the others at zero, you may be able to optimize the
goodness of fit to some extent.
You can help the program to estimate the principal point and the film frame sizes more
precisely. First, expand the image to be fitted to the map to a full screen window. Then click
on Grid/Calibrate and choose Principal Point:
This will draw a rectangular frame just inside the image borders. Go to each corner of the
image using the overview window and drag the corner so that it just fits the scanned area in
that corner.
When you have completed this on all four corners, click on Principal Point:once again to
save the values. The image centre and frame sizes will be estimated from this figure. It will be
saved in a file for later use and reloaded whenever you reload the image. If you know the true
value of the principal point and have entered this in Options, this will take priority over
anything which can be determined from the interactive method.
125
Warning:
You can not use the principal point option to crop an image. Either crop it after loading it or
use the Area option in transformation. Note that cropping a map which has an attached
digital terrain model will remove the DTM. Crop before creating a DTM.
Fischler-Bolles calculations:
When you use this transformation, there are up to four possible outcomes for the calculation.
For some, the position of the camera may be nearly identical or it may not be found. You will
be presented with a small dialogue box permitting you to chose those solutions which differ
and for which a camera position has been determined.
126
Use the Undo option, and try them in turn to see which gives the best fit. You may also try
modifying any of the camera parameters on the transformation page to see if you can improve
things. Usually, changing the focal length from the default value will be the most helpful
choice if the true focal length is not known. Changing the default film frame sizes or setting
them to zero so that the program can try to determine them may also be useful.
Before you attempt to transform the image, you must choose the DTM option to make a
surface from at least five known heights in the neighbourhood of the control points, preferably
more. See making a Digital Terrain Model for more information.
Notes on the Choice of Transformation:
Use the default Automatic transformation option if you have four or more control points unless
there is a clear reason for using one of the other options.
The Projective or so-called four-point transform (actually any number of points, four or more)
assumes a flat terrain. It solves the photogrammetric co-linearity equations. It is used by the
Automatic option if you have fewer than six control points. Turning it on if you have more than
six points disables the additional non-linear correction used in automatic mode.
If you must use Fischler-Bolles because you have only three control points, then a Digital
Terrain Model is required. Fischler and Bolles described a very clever scheme for solving the
equations published by Church in 1948 with optimization of flight altitude when the focal
length of the lens and the side lengths of the film or sensor are known. Here in AirPhoto,
optimization has been carried further, followed by a Thompson-Schutt method so that only
approximate knowledge of camera constants is required. Since most oblique air photos on
film have been made with unknown cameras, a bit of interactive experimentation with focal
length changes and interactive determination of the principal point is offered via Setup.
The Principal Point option on the Calibrate menu should be used when nothing is known
about the camera at all. For digital imagery which has EXIF information, the camera and its
properties except for chip size are known, so to repeat the above, principal points must not be
used. You must obtain the size of the digital sensor in millimetres either from the camera
manufacturer's data, or from the many reviews referenced above or with an Internet search.
The actual focal length at the moment of exposure is recorded in the EXIF header file. If you
don't have a file with valid EXIF data, you must treat a digital image as if it were from a film
source.
The so-called 'Multi-Point' transform due to Weidner does a high order correction to a four
point transform which compensates for moderately hilly terrain without knowledge of a DTM. It
is not as accurate as when one has a DTM unless a considerable number of control points
are available. It also has the advantage of compensating for radial lens distortion,
atmospheric refraction and other second order effects without requiring knowledge of the
camera properties or other effects. It requires from 7 to 16 control points depending on the
order of the correction polynomial chosen in Setup.
One should always start with a simple automatic transform unless the terrain is known to be
extremely mountainous. Alternatively, one may start with Fischler-Bolles if one has only three
points and one has height data for a DTM.
The polynomial transform is offered is mainly for satellite or scanner imagery where no
assumptions about the satellite optics can be made and the images are very small scale
anyway. It should never be used for images made with cameras.
Linear stretching should only be used for distorted maps or vertical imagery with unknown
properties.
127
Moving control points in transformed images for reduction of mismatch:
If a source and target image are displayed and the source has been transformed to the target,
a control point mismatch dialogue will be displayed and mismatches may be reduced by
judicious movement of the point. If the keyboard Shift button is held down while clicking on a
point, it may be moved a pixel at a time using the Up, Down, Left and Right arrow keys on the
numerical keypad for fine control.
Tweaking to reduce transformation error:
If you click the Ctrl Pts button after transformation, you will see:
which shows the “re-projection”error at each control point and the mean error in the
calculation. The re-projection error is the difference between the position of a point in a target
and it's position calculated if transforming from the source.
You can display the same result as a bar chart by clicking on
which may be easier than examining numbers.
128
The bar chart is normalised to the height of the largest error bar. If one or two points are
greatly in error, this will reduce the size of the other bars so that they are hard to distinguish. If
so, click on the Log button
which will display the logarithm of the errors:
You can return to the numerical display mode at any time by clicking on
You may improve the quality of the match between target and source interactively. You may
work on either the target or the source, but it is usually more advisable to work on the source,
since that is where control point identification is more difficult.
You can save the result of the mismatch calculation to an ASCII file of your choice by clicking
on SaveAs. If you click on Save, the file will be made with the name of the image or map file
and the extension e.g. "filename.mis". If you change something, perhaps by disabling a
control point and repeating the transformation with a different average mismatch result and
click on Save again, a new extension will be created with a revision number attached which
looks like "filename.mis;2". The revision number will be incremented each time you save after
a change in mismatch value. These files can be examined and printed with Notepad.
If you then press F9 or choose Move from the control point menu after a transformation
completes, you can 'tweak' the positions of a control point to improve the match. If you click
on the source window before pressing F9, you will then see the mismatch referred to the
source in pixels.
You may drag a point by holding down the left mouse button on it and moving the mouse, or
for finer control, hold down Shift while over a point with a high mismatch value. You can then
move the point one pixel at a time in any of four directions using the Arrow keys on the
numeric keypad.
You will see how the quality of the match changes with each move. Move in the direction
which improves the match for the point you have chosen. Since all matches are
interdependent (and you will see how the others change), a sensible tactic is to improve the
current match to roughly in the range of the mean match shown in the separate window at the
top of the mismatch dialogue box. Then go to the next high value and repeat this. You may
repeat the optimization until a very good match has been obtained for all control points and
129
the average mismatch is much lower. Don't reduce the mismatch at a working point to the
lowest possible value without watching the effect on the mean value. As soon as the mean
value starts to rise again, stop. Then go to another high mismatch point and repeat the
process.
A considerable improvement can usually be obtained.
To save time when working on very large images, you may enable the debugging mode on
the control point menu. See the discussion concerning this mode of operation on what this
does.
Output:
Your choice of output interpolation options
has no effect on the accuracy of the transformation, but it does affect the apparent sharpness
of the transformed result. Medium is usually a good compromise between computation time
and image sharpness in the transformed result.
If you have chosen to mix source and target as an output option, an additional dialogue box
will pop up to enable you to specify the proportions of each to display in the result.
130
Creating blank scaled and cropped images
Blank, scaled bitmaps are useful when one doesn't have a map but there is information
available for placement of control points.
Warning:
Be sure to choose your grid before using this option. If no grid has been chosen, you will
receive an error message. If you are using a scanned non-digital map, you **must** use the
Align to Grid option on the Grid menu at least once especially so if you are planning to use
your results with a GIS, or geometric accuracy will be reduced or in extreme cases be
useless.
With a source image window open, choose Make Scaled Bitmap from the Tools menu. You
will be asked to open a calibrated image to which you can transform the current image later. It
will be automatically labelled as a target.
131
You may then choose a desired scale for an output image. The size of the image which will
be created is shown in pixels. If your machine does not have abundant memory, it may not
always be possible to create the output, but if you do not enlarge the original scale by a factor
of more than two to four or so, this should usually work.
Click OK to create the blank calibrated image which will contain all the needed control points
for transformation from the source. You may also choose either a white or black background
for the result. If the output image you have chosen is not calibrated, an error message will be
issued and you can click the Retry button to select another one. The target image will just
contain the source. If you want to enlarge the border area around a transformed image,
change the default value to a larger one. You may find this useful if you are planning to write
a grid with a frame over the image in a subsequent step.
This option is especially useful if you do not have a large scale map and want to have an
image which retains as much detail as possible after transformation. You can use this image
as a target.
132
Scale and transform
You can scale, crop and transform in one operation. First, you must open a source and a
target image. The target image must be previously calibrated. You must enter control points in
source and target normally. If you have done so, you need only to open the source image in
Mode 1 below.
There are two modes of operation depending on the choice of output in Setup.
Mode 1: White or black background.
Choose either a white or black background in the output options in Setup. If you then click on
the Scale + Transform main menu item or on the little camera icon with a white lens on the
main toolbar, the program will open a file window which permits choice of target and its
control file independently. This allows you to use different control files for the same map.
When these preliminary operations have been completed, a single click on the Scale +
Transform or the white lens icon will created a new blank target file. You are then offered a
dialogue box from which you can choose the desired scale of the output in meters/pixel:
133
In the first mode, you can also choose the amount of white or black space as a percentage of
+output side lengths to border the output. After you choose OK, the new transformed image
will be made to the desired scale and fitting the new image exactly. This may be saved for
further use. This mode is usually used for making an image for import into a GIS or a drawing
program. It may also be used for inserting the rectified image into a georeferenced orthophoto
if a white background is chosen. Then, the orthophoto should be loaded as a target, the
former target selected as a source, and in the Setup Output Options, Insert should be
selected. A click on the Overlay option on the main menu or it's toolbar equivalent will place
the rectified image precisely in the orthophoto.
Mode 2: All other output options.
You must open both source and target before the Scale + Transform menu item or the white
lens camera icons are enabled. The source and target must have compatible sets of control
points which you have either chosen using the AirPhoto Classic dialogue option in Setup, or
the control files must have the same name as that of the source and targets, or you may have
chosen to load these separately using the options on the Control menu or their equivalents on
the lower toolbar.
If you want to retain the map as a background, a different scaling dialogue will be offered:
In the second mode, you can choose the filter which is used when re-sampling the target after
cropping to obtain the desired scale. Initially, both modes will show the current default scale
factor of the target. The first mode creates a new image with the desired scale and border.
Since the map is not visible when a white or black background has been chosen, there is no
need to choose a re-sampling filter. In the second mode, the re-sampling filter chosen will
affect the appearance of the map which is superimposed on the image after transformation. If
the chosen scaling factor is greater than 2, you may have to experiment to find the filter which
produces the best appearance. Usually, Mitchell or Bi-cubic Spline are the most satisfactory,
but for scale reduction, Fast Linear is adequate. In Mode 2, the initial target map will be
cropped to the area of the rectified image prior to scaling and transformation. If the rectified
image extends outside the area of the map, it will be cropped to fit the visible map. In Mode 1,
the whole rectified image is always shown.
134
Mixing source and target in a transformed image
If in Options, you have chosen Mix,
then this dialogue box
will appear at the start of transformation to enable you to set the percentage of source and
target which are to appear in the mixed output. This value should be determined by
experiment starting first with the default of 50% and examining the result. If it is not
satisfactory, click Undo
on the target image and re-transform in order to try another value by dragging the slider to it.
135
Digital terrain models and heights
Clicking on
on the main menu will show:
A digital terrain model is a grid of spot height points at known positions. The user of AirPhoto
can create one by entering heights interactively while examining the nearest contour lines on
a scanned map, or by entering the height belonging to a calibration point or when in manual
control point mode. AirPhoto can also import an existing DTM from an ASCII file and some
proprietary files available from some national mapping services.
AirPhoto takes either the heights you enter interactively along with those which may be
included in calibration and control points and interpolates a surface using them which you
may view. From the interpolated surface, a regular grid of heights is available for use with
image rectification techniques where heights are required. If you import an existing DTM, it
need not contain a regular grid. AirPhoto will make one from it which you may export to
other programs.
With a DTM, an image may be rectified using only three control points, or rectified more
accurately than with non-DTM dependent methods offering full orthophoto capability. A DTM
may in itself be a useful tool for analysis of quantitative spatial information whose positions on
a scanned map are known.
Requirements:
You must have at least five points whose heights are known in order for AirPhoto to be able
to construct the model. Usually you will want to use a larger number which gives a fair
sampling of the terrain. There is no limit on the number of spot heights. You must also
calibrate your map in any of the supported coordinate systems except degrees minutes and
seconds in order to create the terrain model. Normally, a DTM will be created only for a map.
When an image has been loaded, the DTM option on the main menu becomes active.
Clicking on this brings up the drop-down menu which offers a number of choices.
Adding or deleting spot heights is similar to adding or deleting control points in manual mode,
but the marker used is a small diamond instead of a circle.
136
The operation may be started from the main menu or by pressing F7. The operation is toggled
off again either from the main menu or by pressing F7 again. When in height entry mode, a
combination of Shift and the left mouse button over an existing point permits you to edit the
height. Similarly, pressing Ctrl and the left mouse button permits you to disable the height
point. All previously entered or loaded height points may be deleted if desired. An opportunity
will be given to save these to a file with a new name however.
The height of the point at the contour must be entered by hand.
Spot heights are saved automatically to a file with the extension '.hgt' when at least one has
been entered and an image is closed. Previously saved heights may be opened from any
height file from the Load menu choice. Heights which have just been entered may be saved
immediately to a file with the same name as the window and the extension '.hgt' using the
Save menu choice. If so desired, the current collection of heights may be saved to a file with
a different name using the SaveAs option. You may hide or show the heights (hidden by
default) from the menu or by pressing F8.
You can export heights entered in AirPhoto to a comma separated variable (csv) file for use
in other programmes. You may also import an ASCII file containing spot heights and their
geographic coordinates with the Import function.
Import Formats:
Several formats are acceptable as normal text files which may be edited with any text editor.
All formats require the presence of a calibrated scanned image file which has been loaded
first. The calibration may be in any of the supported systems.
1) E-W, N-S, Z, where Z is the height and E-W and N-S are the grid values used in the
geographic grid system chosen in Setup in the East-West and North-South directions.
2) ID, E-W, N-S, Z, as in 1) but where ID is an integer identifying each point. It may be any
number in any order.
3) ID, E-W, N-S, Z, Zone as in 2) but where Zone is the meridian strip or zone number of a
system which requires this information (e.g. UTM, Australian, French). This is the required
form for such grids which permits model construction over a strip boundary.
137
4) ID, X, Y, Z, as in 1) but where ID is an integer identifying each point. It may be any number
in any order, where X and Y are so specified in the chosen grid system.
5) The DTM format used by programmes employing RDA files.
These numbers may be delimited with spaces, commas, dollar signs, tab characters or
forward slashes.
Warning:
Each ID number must be unique. Non-unique numbers will be ignored, but the heights will be
entered correctly. You will get a warning when this happens. Such data cannot be saved to a
project and then restored successfully.
If you are using United Kingdom Ordnance Survey NTF format digital maps and UK
coordinates are selected in Setup, you may import heights of four "flavours":
Landform Panorama DTM 20x20km.
Landform Panorama Contour 20x20km.
Landform Profile DTM 5x5km.
Landform Profile Contour 5x5km.
The programme will ask you to open a file with an .ntf extension, automatically select the
"flavour" and load the heights. If heights are already present for your loaded map which may
overlap several Landform squares, then you will be offered the option of appending or
replacing all heights. This enables you to combine the heights from more than one square.
There are no limits on the number of heights which may be imported.
The CSV format written here is the same as formats 2) and 3) above, depending on whether
or not meridian strip zone numbers are required by the chosen grid system. If you are working
on UK data, this option may also be useful for converting the Ordnance Survey NTF format
for use elsewhere.
Warning:
If you have set the locale option in your operating system to a country which uses something
other than a period for separation of the value to the right of the decimal point (e.g. Germany),
you must change this to a period in the operating system control panel's regional settings
window. This can not be changed from AirPhoto directly.
Clicking on Make DTM brings up a separate window with many options for viewing and
modifying a DTM.
The chart:
Along with the interpolated heights, there is an administrative header in the .dat file which is
readable for the Olectra Chart ActiveX control which is what you see when you click on
Model. This .dat file is read in by the Olectra component which then makes a matrix of
decimal values for display as a height surface. The .dat file is then erased by AirPhoto after it
has been displayed. The Olectra matrix is written to a file with the extension .dta as and the
name given to the map file. This is the actual DTM file.
The .dta file is loaded when a DTM dependent rectification method is chosen to obtain the
heights of any pixel in the bitmap. The .dta values are on a grid whose density you have
chosen in the Model start-up dialogue box which contains the choices of surface, heights, etc.
When you choose heights, these are displayed, but no surface is computed, and no .dta file is
made. The option is only for checking the data.
If anything goes wrong during this complex process, no .dta file is created, and you get an
138
error message which may or may not be informative, depending on what one of the complex
intermediate steps is able to pass back to the calling program. All files must have the same
name, though the extensions are different and automatically applied. To find the DTM when a
bitmap of a map is reloaded, the program assumes that one of the same name but with the
.dta extension is present. Otherwise, you can't use a DTM rectification technique and you'll
get an error message.
Therefore, leave all file names strictly as they are after you start. If you restart the program
and change one file name, you must change all present, regardless of extensions.
It is also not necessary to have more height points than the value selected in the model
computation (default 50x50), and in fact, if there are too many, the calculations may fail.
Height values must be present near all edges of the bitmap so that the surface is 'tied down'
by them, or wild effects
may appear there.
Note on importing heights with ASCII files:
If you make a DTM at any time by importing heights, you don't need to reimport your heights
and remake the model, because the previous DTM will saved whenever an image having a
DTM is closed. This will then be reloaded when you open that window again. The program
won't ask you any more to create a DTM if it has found one on the disk when you are using
Fischler-Bolles transformation.
However, if you wish to change something in the DTM like the grid interval, or the height
multiplier for example, then you do need to redo the model, but you don't need to reimport
heights unless you want to start from scratch. Once you import heights, these are saved in a
separate .hgt file with the name of the image attached in front. They are not overwritten by the
DTM which is saved in a file with the .dta extension.
Storage data structure:
All height, control and calibration data are stored in AVL self-balancing binary trees which do
not permit duplicates. AVL is an abbreviation for the names of the two Russians (G.M.
Adelson-Velskii and E.M. Landis) who published the data structure back in 1962 (see N.
Wirth, Algorithms + Data Structures = Programs, Prentice-Hall, 1976, 215ff). There are two
trees for each kind of data, one sorted by id numbers, and one sorted by geographic
coordinates. That permits very fast search for either, depending on what is required in the
programme. An AVL binary tree will reject duplicates for whatever sort criterion is used when
loading it. You can think of it as a kind of fast in-memory database with single records sorted
on one key.
This prevents having duplicate coordinates, something which would be catastrophic for the
transformation calculations. It also permits checking for having matching points in source and
target via the id numbers. If anything is out of sync here, you'll get an error message. The
programme checks for precisely the number of identical enabled id's before transformation. If
there is no agreement, then you get a message. It is not permitted to have unequal numbers
of id's with different ones disabled, because that might lead to the dreaded duplication of
content problem and lead to things like divide by zero or an access violation in various
calculations which can crash a primitive OS like Win9x/ME.
When you click on a control, height or calibration point to modify it or disable it, the program
searches the AVL tree with only a very few operations. You don't need to click the mouse
right on the precise coordinates, because the search is repeated for all points within two
pixels to the right and left and up and down of the mouse click point, 25 in all. As soon as the
value in the tree is found, the search is terminated.
When you load an ASCII height file (or a project file for that matter), the coordinate and the
139
height trees are filled at the same time. If there are not the same number of both when the
load terminates, they you get an error message. If you don't have id's, then the numbers will
always agree, since AirPhoto will assign sequential id's. Id's must never be zero. Any
deviations from the rule can produce catastrophe.
When heights are loaded, the coordinates are compared with those of the boundaries of the
image (actually, the lat/lons are compared to allow heights over grid strip boundaries) and
only those heights are loaded which are within the image area plus 20% on all sides to permit
smooth surfaces right up to the boundaries. This is why heights may sometimes be rejected if
they are further away. In addition, heights are checked roughly for plausibility, i.e., no
negative values, and nothing over several thousand metres. Minimal wild value checking is
done on the input . The smoothing implicit in the DTM construction will suppress most of
them, but not all. Estimated heights are inserted at the image boundaries if none are nearby
so that the surface construction algorithm doesn't follow a trend off into excessively high or
low values.
140
DTM - making a model
Creation:
The File menu of the DTM window offers first to create a new DTM from previously loaded or
hand-entered data:
Before you do so, you may specify how user interaction behaves when rotating, shifting or
scaling the image by toggling:
Either the full DTM may be moved or a wire frame preview around it may be chosen. For
slower machines and display cards, the latter is preferable.
141
User Interaction:
With the mouse, you may choose a variety of orientations, sizes and positions for the
displayed graphic.
For these, click on:
Middle button (or both buttons on a two button mouse ASB), hold down and drag to rotate
the image on its x, y or z axis.
Middle button (ASB) and Ctrl, drag to scale the image.
Middle button (ASB) and Shift, drag to shift the image.
Middle button (ASB) With x, y or z key held down simultaneously, drag to rotate just along
the chosen axis.
Left button and Ctrl, drag a zoom box and position it. The portion of the image will be
shown in enlarged form.
Press "r" on the keyboard, to restore the original image orientation except for rotation.
After creation:
When create has been chosen, a dialogue box will pop up offering four principal display
modes for the data, and a numeric entry field with a spinner for setting the coarseness of the
interpolation grid which will be derived from any source of irregularly spaced data entered
either interactively or loaded from an existing DTM. The default setting of 50 produces a grid
of 2500 points which is usually precise enough to represent terrain for rectification and
analysis purposes. Higher settings take longer to compute, lower settings may be too coarse
to model complex structure.
You may also select a multiplication factor for heights as displayed. For surfaces whose relief
is not very pronounced, a larger value may be useful in order to see small differences.
You have a number of choices for standard displays, including a coloured meshed surface, a
three dimensional histogram of the spot heights, a two dimensional contour map and a
shaded representation described in more detail below.
Saving results:
When you have created a DTM, you may Export it using the grid system chosen in Setup
along with the heights from the interpolation surface computed by AirPhoto from the
irregularly spaced input data. This exported data may be read by the DTM input option or
142
used in another program.
A DTM saved as a graphic in a special compact form can be reopened for further study and
reopened as required without recomputing it.
Alternatively, a created DTM may be saved in a number of standard Windows file formats
using the SaveAs option..
143
These include the ubiquitous Bitmap, an enhanced Metafile, an old-style Metafile, or the
special compact format mentioned above. Metafiles are especially useful for import into word
processors, since they can be scaled without loss of fine line information.
You may also copy the created DTM graphic to the Clipboard and transfer it in that way to
another program.
Changing appearance:
You may scale the DTM graphic downwards so that it fits into a publication.
A scaling box will pop up to permit you to select the degree of scaling.
If you select Shading from the Create options, you may display an illuminated surface.
You can control the angular direction of lighting, Sweep (angular position around a circle) and
Rise (angular position above the centre of the circle), by dragging on the highlighted ball, and
regulate the intensity of the Incident and of the Ambient lighting with the sliders. You must
then click on the Apply button to make these choices take effect on the full graphic, although
they will appear immediately in the lighting of the Sweep and Rise ball.
Advanced Options:
A right click on the mouse will bring up a tabbed dialogue box with a host of other options.
The most important of these is the Groups tab which will enable you to remove or add a mesh
and alter colours and many other things.
144
If you right click on the mouse to bring up chart editing, then click on 'styles', you'll see
Contour Styles listed in a box to the left. If you then click on 'Fill Style', and proceed to each
contour style which is not greyed in turn, you can set its colour to anything you like and save
the resulting colour palette to a file which you can load the next time you start, if you wish.
You can also modify the colours of the contours when you display a contour map in the same
way by changing the Line Style. That way you can make a special set of colours which suits
your taste. Consult the help which the tabbed dialogue box offers for further details.
You may also edit the height data of the calculated DTM if you wish. Clicking on the General
Data options:
gives you editable access to the height data itself.
145
If you wish, you may show any image as a background to the DTM display, as long as it is in
standard Windows bitmap form. You may need to scale this background so that it fits the
DTM in a meaningful way.
When a DTM has been created and a window is closed, it is attached to the current calibrated
window, and its numerical values are automatically saved to a file with a '.dta' extension and
the name of the window file. When the window file is reopened, a saved DTM will be reloaded
automatically.
The default appearance is as a coloured, contoured three dimensional image:
146
If you wish, you may display a three dimensional bar graph of the actual heights:
Alternatively, a contour map may be generated:
Finally, an illuminated surface may be made with the angle of illumination chosen by dragging
the ball image described above and with variable intensity:
147
Such an image may be rotated or positioned using the mouse buttons to show the terrain as it
might have been viewed when making an oblique image:
148
Local stretch
The Local Stretch Option:
This option should mainly be used for geometric correction of old maps relative to modern
ones. Although it may be used for normal imagery, there is little advantage in doing so unless
you have 10 or more control points. The modern map should have a white background, but its
lines may be of any colour. If the background is a colour or greyscale image, then only the
Mix output option should be used.
The algorithm used by the programme adapts to the number of selected points. Control points
are first checked for consistency. Then a modified projective transformation is used to
produce approximate correspondence between source and target based on singular value
decomposition global optimisation using the selected control points. If there are between 4
and 7 points, a simple projective transformation is computed, If there are more points, an
additional bi-variate polynomial correction factor is introduced, the order of the correction
polynomial depending on the available number of points up to a maximum order of five, with:
8 to 9, order 2, 10 to 12, order 3, 13 to 17 order 4, 18 or more, order 5. This completes the
first correction phase. The intermediate result is now aligned approximately with the final
target so that global ambiguity is avoided.
After the approximate correction offered by the preceding operation ends, the approximately
rectified target image now becomes a new temporary source. Delaunay triangulations of the
control points in both the new source and the original target are computed. In such a
triangulation, the control points are optimally connected via the shortest path between them.
The points of the triangulation for the new source are the original control points from the old
source forward transformed to the old rectified target.
For each corresponding triangle in the approximately rectified and the original target, a local
affine transformation is computed and applied to transfer the data from the previously rectified
target image to the original target. This produces an additional small local stretch around
each of the control points which improves on the global result of the first phase so that source
and target control points now correspond and any errors in the other image picture element
positions are confined locally to the immediate area around the point. This technique is
modified for greater stability by adding additional points outside the corners of the source
image so that all points are contained within them.
The triangles in source and target may be inconsistent in shape or position for a number of
reasons. For example, if four control points lie on the circumference of a circle, there are two
valid ways in which triangles within the rectangle may be drawn. The triangulation algorithm
works independently on the source and the target, so it is entirely possible that the alternative
triangle appears in one or the other. Triangles may also be degenerate, i.e. have zero area if
three control points like precisely in a vertical or horizontal line. The programme tries to detect
both situations and posts a message telling you how many inconsistent triangles between
source and target it has found. Detection is performed by computing the ratio of the area to
the perimeter for each corresponding source and target triangle. If these rations exceed a
threshold chosen by the user, then the triangle pair is declared to be inconsistent and so
labelled. For such pairs, the rectified source pixels are simply transferred to the target without
transformation. You may adjust the acceptance threshold over a range of 0 to 100%. The
higher the ratio, the fewer the rejections, but the result image will have more defects. The
value should be chosen so that there are no inconsistent triangles visible.
The output options available with local stretching are fewer than with other types of
transformation. Blend and XOR are not available. You may also choose to show the
triangulation of the source and the target superimposed on the output. The triangles of the
source are shown in blue and those of the target in green. Consistent triangles are numbered
in green, and inconsistent triangles are numbered in red. This may help you in disabling or
149
entering new control points to remove the inconsistencies.
It may make viewing easier if you change the colour of the lines in the modern map to
something distinctive like red. This can be done from the Tools menu Colour Adjust option or
its equivalent button on the lower toolbar. Here, select RGB when the dialogue box appears,
click the little lock button so that you can see what happens in the preview window, then move
the slider for the desired colour to the right. If you want an intermediate colour, move more
than one slider. After clicking OK, save the result to a file with a new name.
Start with a few (less than a dozen) widely spaced control points on very obvious and sure
matching points. Before you use local stretch, first use Automatic Transformation on these
points and reduce the control point errors with tweaking as far as possible every time you add
a control point, then try Local Stretch and continue. The idea there is to give the Local Stretch
as little as possible to do. You can tweak from 5 points onwards, but it's more sensible to start
with about 10 or so. In Options, a tolerance percentage on the similarity of the triangles may
be chosen. The higher the tolerance, the fewer the inconsistent triangles rejected, but they
may be placed incorrectly in the result image. Add new control points one at a time and watch
the rejection rate and the appearance of the image. From time to time, turn on "Show
Triangles" on the control point menu, re-transform and look at the triangles to see where
something is disturbing the picture. Since triangles of the source image are shown in blue and
those of the target are shown in green and each pair is numbered, you can see discrepancies
more readily than by looking at the final data. The best results are usually obtained with a
network of control points which has relatively even spacing. Clusters of control points will
usually result in more inconsistencies. For consistent triangles in source and target, the match
between source and target control points is perfect, and errors are distributed linearly
between them.
Correcting a large detailed old map is a long and tedious operation with considerable hand
labour involved for best results. Unfortunately, there is no way of automating the process,
since recognition of suitable corresponding points is best done visually.
If you choose the Merge output option, you can easily see where divergences are present.
150
Adding a few control points in the right places can make a great difference in the appearance
of the result.
151
Measuring features in transformed images
Click the polygon button to start measurement on a calibrated image. Select a polygonal area
by clicking with the mouse at each point. Right-click the mouse to draw the final line and close
the polygon.
If the image has been calibrated using any of the supported grids, the approximate area and
perimeter of the polygon is shown on the main toolbar. For a simple distance measurement,
click on the polygon button, click on the first point, then drag to the second and click again.
Click on cancel selection to turn off the flashing lines and close the numerical display.
The accuracy of distance, perimeter and area values is limited by the resolution of the image
being measured, the care taken in calibration and the basic precision of the data underlying
the making of the map. All measurements are made internally using geodetically precise
calculation, but this can not improve on the information in the data itself. Hence output values
are written in meters, since decimal parts of a meter usually would represent unattainable
accuracy in most instances.
152
Mosaics, overlays & joining maps
Three toolbits on the main toolbar
and three entries on the main menu may be used to select the operations described here.
Mosaics:
This method can use any number of calibrated transformed images to make an accurate
mosaic quickly. You may also use it to combine coloured maps. For black and white maps it is
preferable to use the Join method (see below).
0) Calibrate and then transform a map and an image files for mosaic making using the White
Background option in Options. One must be made using for each image using as many
different images and maps as desired. All files with their associated calibration files must be
on the same directory.
Open mosaic processing using the little many->one symbol
or use the Mosaic main menu entry. A progress bar indicates that the programme is scanning
a chosen directory for files which are calibrated. If there are a lot of files in a directory, this
may take a bit of time, but usually the search is quite fast.
153
2) Select the directory where the files for the mosaic are located.
3) All files which have calibration should appear in the first box to the right of the form.
4) Click on those you want in the mosaic and drag them to the second box or click the arrow
button. If you hold down shift, you can select a range of files and drag them all at once to the
second box.
If the check-box
is checked, a mosaic will be aligned to latitude and longitude. If left unchecked (default), the
mosaic will be aligned to the chosen grid except in the case where one or more of the images
to be used crosses a meridian boundary.
Note:
You can determine the order in which the individual images are laid down to make the mosaic
by selecting them individually in the desired order and dragging them to the second box, or by
using the arrow tool button. This may sometimes be important in order to prevent obscuring of
detail by an overlaid image. This may also be useful when using colour images to minimise
colour changes in the overlapping area. The file names in the first box are in alphabetical
order, while those in the second are in the order which you choose.
If you make a mistake, select one or more of the files in the second box and click on the
Trash Can button. This will not delete any files. It only deletes their names in the list.
Warning:
The grid coordinate system for all files used in mosaic, join or overlay making must be
identical unless you are absolutely certain that the datum used for different grid systems are
the same. No check is made when making mosaics or joining to permit you to include files
from adjacent countries fulfilling this criterion. For overlay, the grid systems must be the
same.
5) Click on OK.
The programme will first compute the average scaling of all images and offer a box in which
you can change the output scale if you wish. If you have images of widely different scales for
your mosaic, it may be useful to choose one with the largest value of metres per pixel to
reduce unsightly line width jumps at junctions of areas with map information.
The program must make a container file big enough for all images in the mosaic spaced
geographically according to their coordinates. If you select images which lie very far apart, or
if you choose a scale in metres per pixel which is very small, the operating system and
display driver may not be able to create this container. You will be warned if the programme
detects that this is likely to happen. Although you may continue after this warning, it is
advisable not to do so. You should reselect your images limiting your choice either those
154
which lie closer together or choose a larger scale in metres per pixel until no warning
appears.
After the operation terminates, you will then be asked for the name of an output file to which
the mosaic can be written. All the files in the second list will be fitted to the container. The
container output file is calibrated. It will be saved automatically with the name you have
chosen. Heights, if present will be carried over into the new mosaic. Control points are not
copied, since different source images may have control points with the same identification
numbers.
The process may be quite slow if you change the scale by a factor of more than 50% in either
direction, since the programme must switch over to bi-linear interpolation in order to preserve
fine lines. Otherwise, near-neighbour interpolation is used by default, unless you have set this
differently in Options. There is little point in doing so unless you are making a large change
in scale.
With coloured images, blending computes the hue, saturation and lightness or for greyscale
images only the brightness in overlapping regions and gradually merges one into the other
over a zone at all overlapping edges if the lightness of the source is greater than that of the
target in the sequence determined by the loading order. This is usually the preferred output
option, but merging may also be used. The other options are not meaningful for mosaics.
Overlaying a Mosaic and a Map:
After you have made a mosaic, you may want to superimpose it on a map or superimpose a
map upon it. For this, you may use the Overlay option. The overlay will be made using the
Output options. First open the images which are to be the source and the target in any of the
usual ways. Then select the source to be superimposed on the target as in transformation.
Finally, click on the toolbit
or the Overlay entry on the main menu.
Joining multiple black and white maps:
It frequently happens that a rectified image will extend over the boundary of a single map. The
Join option enables you to combine any number of maps into a larger one and to change the
scale if desired. Al maps must use the same grid. The maps must first be calibrated in the
conventional way. Any number of calibration points may be used placed wherever visible
features with known coordinates are located. A minimum of four calibration points is required
for each map. After calibration, use the Align to Grid option on the Grid menu so that the
resulting map will also be aligned to the grid if you wish. Start the join by clicking on the
toolbit or the Join option on the main menu. The dialogue box which then appears is identical
to that shown above for mosaics except that the caption is different.
Frequently maps have scales or other information written around their borders. The
programme can exclude this information when joining up two or more maps. To achieve this,
simply enter four control points to define the corners of a rectangle or square containing the
desired area in each map. Only this area will be projected into the result. You may place
these control points inside calibration points if these lie at the corners of the area of interest.
Warning:
If you have not erased or changed the name of the control point file from a transformation
operation on a map to be joined and if there are any present, you will be warned that the
155
border exclusion control points must have been entered on an aligned map. You should
choose not to continue if this is not so or if they belong to a transformation. After saving the
points under a new name, delete them. You may then enter four new control points to
delineate a border exclusion zone if you wish, but you must align the map to the grid first.
You may scale the resulting map just like a mosaic if you wish. Otherwise the result will
always be as large as the combined total area of each separate map so that a blank area will
be left around the borders containing the excluded information. If you wish to exclude this,
simply crop the result to the area of interest. You may then use the Grid option for writing a
new set of grid lines to the result if you wish.
To join coloured maps, try the Mosaic option if the Join option does not give satisfactory
results.
Note:
If the mosaic is made using a grid system which does not have meridian or latitude strip
boundaries or if you are working well away from such a boundary, the mosaic will be aligned
automatically to the grid. If the mosaic overlaps a strip boundary, then the mosaic will be
aligned to the meridians and latitudes in the underlying datum of the grid and appear to be
skewed if a large area has been used. You may receive a warning that the result is not
aligned to the grid when you attempt to save or close the image in such a case. If that
happens, simply used the AlignToGrid option from the Grid menu. This may fail if the image is
very large as discussed in the topic Working with Large Images
156
Projects and project files
An AirPhoto project file enables automatic loading a series of images and their accompanying
calibration, control and height data.
An AirPhoto project is a simple ASCII file containing commands and data which may either be
passed on the command line when AirPhoto starts, selected from a history list below the file
menu, or selected from a file opening dialogue box started by clicking on the Project Open
file menu entry.
After loading and working on at least one image, a project file with all relevant data may be
saved from the AirPhoto File menu using Project Save.
A project file is automatically assigned the extension '.prj'. The name of this file without the
extension is the name of the project. The names of the last previous projects are stored in
the registry. The names it contains are appended to the history list below the Exit entry in
most recently used order, up to four names in all.
Just click on one or press return when the entry has the focus and all the files in the project
will be loaded and displayed.
The command line interface is normally intended for use when the program is activated from
another program, usually a GIS, although it may also be used with a command line box (DOS
box) or a link file. The syntax is simply:
AirPhoto someproject.prj
157
You don't need to read the rest of this help unless you are planning to write a project file from
the scripting language of a GIS or a database. Project files used only from within AirPhoto are
managed by AirPhoto and are entirely transparent for the user.
The contents of a project file:
A project file uses a set of 11 simple commands or reserved words. These are:
'AirPhoto', 'Project', 'Grid', 'Directory', 'File', 'Target', 'Source', 'Unselected','Calibration',
'Control', 'Heights'.
Commands are case insensitive but are shown with some letters capitalized for clarity of
presentation here. You may use any combination of upper and lower case. A few commands
are mandatory. The others are optional.
In the text which follows, mandatory commands are indicated by the word *must*. Optional
words are indicated by 'may'.
The first line of the project file *must* contain the words AirPhoto Project, and may contain the
name of the project thus:
AirPhoto Project test0
This identifies the file as a project file to the program. Any file which doesn't start in this way
will be rejected.
Before a project is opened, it is checked for gross errors as far as possible. All errors are
written to an error list which has the name of the project with the extension .err. Therefore, it
is advisable always to give the project a name if you are creating the project file from a
database or a GIS.
Reserved words may be separated by blanks, but any of the following symbols may also be
used as separators, for example if the project file is written by a database program:
, (comma)
; (semi-colon)
/ (slash)
$ (dollar sign)
Any number of blanks may be used as separators, but only one of the other symbols may be
used between each command or reserved word. Leading blanks are ignored.
The second line of a project file may contain the word Grid. If it does, the name of the grid
*must* follow. Grid names *must* be selected from the following list and no orthographic
variation is permitted. They may be capitalized in any way desired for clarity.
Note: Only one line may contain the word Grid in the first position in the whole file, and this
line must appear before any file which has gridded data.
158
The next line of the project file may contain the word Directory. If it does, it *must* contain the
fully qualified directory name including all subdirectories, and it may contain the drive letter
thus:
Directory C:\AirPhoto\Data
At least one line which begins with the word File giving the name of an image *must* appear
in the project. Following the word file *must be the name of the file. This file *must* reside in
the directory given by any preceding Directory statement. If no Directory statement appears,
then the program assumes that the file is in the AirPhoto root directory or wherever you are
currently working.
An attribute of "Source", "Target" or "Unselected" may be appended to the file name thus:
File somefile.jpg Source
You may use any of the file and compression types supported by AirPhoto, including Tiff,
Targa, PCX, PNG, JPG as well as the usual Windows Bitmap, (BMP). Files of different types
may be mixed within a project.
If the reserved word Grid is used, then the reserved word Calibration *must* follow a File
command for at least one image file. It *must* precede any Control or Height commands
described below before any further file commands are given. The number of entries for
calibration data may be 7 or 8 depending on whether or not a zone is required for the chosen
grid system.
idnumber pixel-x pixel-y x-coordinate y-coordinate z-coordinate [Zone] enabled
idnumber:
159
a unique number assigned to each coordinate pair. If the number is not unique, entries
following the first will be ignored, but no error message will be issued.
pixel-x:
the distance in pixels counted from the left side of the image with the first pixel having the
value 0 (zero).
pixel-y:
the distance in lines counted from the **top** of the image with the first line having the value 0
(zero).
x-coordinate:
the 'Easting' or 'Rechts' value in meters in the chosen grid system. Up to three decimal
places, giving millimetre precision are permitted.
y-coordinate:
the 'Northing' or 'Hoch' value in meters in the chosen grid system. Up to three decimal places,
giving millimetre precision are . If the coordinates are in UTM or Gauss-Krueger and are south
of the equator, then the value must be preceded by a minus (-) sign, except for the Australian
grid system, where all values are south of the
Equator anyway.
z-coordinate:
the height of the point. If no height is wanted, then the value 0 (zero) *must* be entered.
zone:
a zone number *must* be entered if the grid system requires it. Otherwise nothing should be
entered in this position.
enabled:
a number either 1 or 0 signifying that the point is enabled or disabled.
An example of calibration for an image using the Gauss-Krueger3 grid which needs no zone
number is:
id
pixel-x
enabled
Calibration
2
912
3
1697
4
126
5
126
6
1696
7
1696
8
911
9
912
10 125
pixel-y
R
H
height
108
107
896
1683
893
1680
1682
895
111
2534399.890
2534199.992
2534599.949
2534599.992
2534200.119
2534199.991
2534400.059
2534399.847
2534600.161
5716399.902
5716400.007
5716599.770
5716799.922
5716599.854
5716800.142
5716800.155
5716599.936
5716400.311
50.000
50.200
30.000
30.000
49.100
39.300
40.300
49.500
30.000
or for the UTM-WGS84 (GPS) grid which requires a zone for the same points:
160
1
1
1
1
1
1
1
1
1
id
pixel-x pixel-y
zone enabled
Calibration
2
912
3
1697
4
126
5
126
6
1696
7
1696
8
911
9
912
10
125
108
107
896
1683
893
1680
1682
895
111
easting
northing
326488.043
326288.326
326696.125
326704.380
326296.652
326304.742
326504.634
326496.207
326688.153
5717407.937
5717416.244
5717599.420
5717799.393
5717615.909
5717816.025
5717807.829
5717607.796
5717400.130
height
50.000
50.200
30.000
30.000
49.100
39.300
40.300
49.500
30.000
32
32
32
32
32
32
32
32
32
1
1
1
1
1
1
1
1
1
At least four (4) calibration points must be in the list, or calibration will fail. This will result in an
error message and the project will not be accepted.
Following a line which contains a File command, a line with the command
Control
may be placed anywhere before the next File command. This *must* be followed with a
sequence of lines containing control point data for the image following the preceding file
command.
When Control is alone on a line, then the data which follows *must* be in absolute pixel
position in the image. The data *must* have the following format with four entries:
idnumber
pixels-x
pixel-y
enabled
where:
idnumber:
a unique number assigned to each coordinate pair. If the number is not unique, entries
following the first will be ignored, but no error message will be issued.
pixel-x:
the distance in pixels counted from the left side of the image with the first pixel having the
value 0 (zero).
pixel-y:
the distance in lines counted from the **top** of the image with the first line having the
number 0 (zero).
enabled:
a number either 1 or 0 signifying that the point is enabled or disabled.
Usually this format will apply to an image source. At least one data line *must* follow the
reserved word Control.
A typical collection of lines of data for this case looks like:
161
idnumber
pixels-x-
pixel-y
enabled
1
2
3
4
5
6
7
8
9
10
11
12
693
880
918
1025
1193
803
833
613
268
367
1116
1236
1136
1265
972
570
530
378
408
448
726
719
1009
587
0
1
0
0
1
0
0
0
1
0
0
0
The reserved word Control may be followed by the reserved word Grid. If the word Grid
appears, then the Grid used must have been defined as described above and a Calibration
command with its data must follow with at least four calibration points.
The data following a Control Grid combined command sequence must have five or six entries
depending on whether or not the grid chosen requires specification of a Zone:
The data must be in the following order:
idnumber
x-coordinate
y-coordinate
z-coordinate
[Zone]
enabled
idnumber:
a unique number assigned to each coordinate pair. If the number is not unique, entries
following the first will be ignored, but no error message will be issued.
x-coordinate:
the 'Easting' or 'Rechts' value in meters in the chosen grid system. Up to three decimal
places, giving millimetre precision are permitted.
y-coordinate:
the 'Northing' or 'Hoch' value in meters in the chosen grid system. Up to three decimal places,
giving millimetre precision are . If the coordinates are in UTM or Gauss-Krueger grid units and
are south of the equator, then the value must be preceded by a minus (-) sign, except for the
Australian grid system, where all values are south of the Equator anyway.
z-coordinate:
the height of the point. If no height is wanted, then the value 0 (zero) *must* be entered.
zone:
a zone number *must* be entered if the grid system requires it. Otherwise nothing should be
entered in this position.
enabled:
a number either 1 or 0 signifying that the point is enabled or disabled.
A collection of control points in the UTM-WGS84 grid system might look like:
162
id
easting
northing
height zone
enabled
2
3
4
5
6
7
8
9
10
12
326447.790
326390.712
326272.460
326228.654
326252.425
326256.422
326315.191
326451.818
326432.649
326239.868
5717915.808
5717859.936
5717763.179
5717777.828
5717648.396
5717667.372
5717643.357
5717693.537
5717707.085
5717802.957
35.500
37.200
39.100
37.900
44.600
43.500
47.800
46.000
45.300
35.900
1
1
1
1
1
1
1
1
1
1
32
32
32
32
32
32
32
32
32
32
Note that id numbers need not all be present. They *must* only be unique.
The collection of data values for the Gauss-Krueger3 grid for the same points which do not
require a zone number looks like:
id
R
H
height
enabled
1
2
3
4
5
6
7
8
9
10
11
12
2534337.865
2534326.889
2534277.970
2534171.209
2534128.617
2534157.273
2534160.317
2534220.231
2534352.957
2534332.316
2534253.735
2534138.288
5716863.193
5716908.551
5716855.199
5716759.733
5716774.604
5716640.145
5716660.495
5716633.899
5716686.519
5716701.068
5716887.350
5716799.533
37.500
35.500
37.200
39.100
37.900
44.600
43.500
47.800
46.000
45.300
35.800
35.900
0
1
0
0
1
0
0
0
1
0
0
0
As an example note that only three of the twelve control points have an enabling value of 1.
Disabled points have the value 0.
Only one Control command per File command is permitted.
An optional list of heights may be added following a File command. If the image has been
calibrated, the values may be given in the chosen grid system when the reserved word Grid
follows the command Heights, thus:
id
easting
Heights Grid
1
326526.540
2
326535.384
3
326566.058
4
326609.679
5
326658.185
6
326552.095
7
326449.701
8
326263.345
9
326399.689
10
326403.162
11
326297.713
12
326509.856
13
326484.285
northing
height zone
enabled
5717959.998
5717865.475
5717785.703
5717672.735
5717562.025
5717524.621
5717447.847
5717553.227
5717567.944
5717525.168
5717571.124
5717591.499
5717534.993
30.000
30.000
30.000
30.000
30.000
40.000
50.000
50.000
51.000
51.000
51.000
51.000
51.000
1
1
1
1
1
1
1
1
1
1
1
1
1
32
32
32
32
32
32
32
32
32
32
32
32
32
163
14
15
16
17
18
19
326301.241
326337.314
326376.110
326337.917
326291.098
326337.844
5717525.529
5717546.680
5717547.967
5717561.254
5717548.357
5717553.733
51.000
52.000
52.000
52.000
52.000
52.500
32
32
32
32
32
32
1
1
1
1
1
1
If the grid does not require a zone, the zone value must be left blank.
Only one Height command per File command is permitted.
General Notes on Projects:
Any number of File commands followed by the optional Calibration, Control and Height
commands may be in the project list. Each set will result in the appearance of a separate
window with its data when the project file loads.
Blank lines are ignored by the program and may be included as separators for clarity.
Comment lines may be placed anywhere in the file if preceded by a * (star). The maximum
length of a comment line is 255 characters.
If the position of data using calibration are south of the Equator, the 'northing' values of
Calibration, Control and Height values *must* be preceded by a minus (-) sign, except for the
Australian grid, all of whose values are south of the Equator anyway, so that this is not
required.
If control, calibration and height data have been entered in previous AirPhoto runs, and it is
not desired to change these via the project file, then a simple list of the files to load in the
project will be sufficient to load them with all their relevant data including DTM's, control files,
calibration and heights.
For example, a file called Minimum.prj might contain only the lines:
AirPhoto Project 0809
File 0809map.jpg
File 0809.jpg
File 0813.jpg
When the Project Open option on the file menu is used, then all available information about
calibration, control and height will be stored in the project file if present and reloaded from
existing .cal, .ctl or .hgt files if none of this data is present in the project file.
When preparing a project file using the scripting language of a GIS, it is advisable to load a
typical extant project file created with AirPhoto as a model and modify this carefully.
Warning:
Although you may edit a project file created by AirPhoto with Notepad or another ASCII editor
to delete undesired lines without danger, **never** use a project file as a means of entering
calibration, control or height data.
The project checking routines are not as sophisticated as those used when data is entered via
AirPhoto itself. Catastrophic results may be obtained or in extreme cases AirPhoto may crash
if you ignore this warning!!!!
164
Layers
Layers are separate images which contain different information from the same area and
which you want to merge into a single image showing everything at once.
You can load as many as you wish.
The image on to which all the other images will be superimposed is called the background or
zero layer. A background layer image is chosen by clicking on it in a normal AirPhoto window
before choosing the layers option so that it gets the Windows focus.
Note:
All images and maps for layering on the background must be calibrated and aligned to the
same chosen grid and cropped after alignment to remove any white space which surrounds
them. Failure to do this may cause the automatic placement and resizing used in the layering
function to place the layer incorrectly.
If no files have been loaded, click on layers to load multiple images to superimpose as layers.
After two calibrated files which may be either images or maps have been loaded, clicking on
Layers on the main menu
brings up a special window which enables manipulation of the positions, size and orientation
of the images with respect to each other.
165
You can also open the Layers Window and load images using the Open entry on the File
menu. If you are working with a map and an image or images, load the map first so that it
becomes the background layer.
Example 1:
166
A layer is made "active" from the control panel at the right side of the screen by clicking on it
there. In the main layer window, zooming in or out with the mouse wheel and moving the
collection of images up, down or to the right or left should be done with the scroll bars.
The layer which has the focus is surrounded by a red box with drag handles. This layer can
be moved separately to locate it precisely in case the automatic placement method used
167
requires a small correction. Place the mouse on the cross cursor at it's center, hold down the
left button and drag. You can also change the size of the layer which has the surrounding red
box by dragging on one of the round points with green centers. This can be done separately
for the top, bottom and sides.
You can change the order of the layers with the Up and Down buttons. You can also add,
insert or delete a layer with the respective buttons, and you can rotate a single layer with the
rotate button.
A number of general properties for a selected layer can be applied using the tabbed dialog
box. The special effects page permits changing the transparency of the selected layer as well
as applying a large number of effects to it relative to the background layer. These can be
seen by clicking on the down arrow of the Operation Combo Box.
{
Try the different effects to see what they all do. You can also zoom in or out of the chosen
168
layer separately from the zoom available with the mouse wheel in the main window using the
Magnification slider on the Magnify layer tab.
The most useful options are MIN (Darken) or MAX (Lighten):
If you have a black and white map as the zero layer and a coloured image, e.g. Google Earth,
you can have the map superimposed on the GE image without the loss of colour saturation
that otherwise occurs when you increase the transparency of the overlying GE image.
When you have obtained the appearance you want, you can either merge all the layers into a
single image which can then be saved using the Save merged layers option from the File
menu,
or you can save a special file with the extension lyr that permits you to start again if you wish
from the main menu in AirPhoto with no images loaded. When the layer window opens,
choose the Load option and enter the name of the special file.
You can also open any uncalibrated image with the Open image option of the file menu which
will then be loaded as a layer with it's upper left corner at the upper left corner of the screen
and you can save it as well.
The layer image shown above was obtained with the following steps:
1) Select a national or international grid.
2) Download a Google Earth image from the area of interest using the AirPhoto Import
Google Earth option.
3) Download a second GE image from an area nearby, perhaps which overlaps the first.
4) Exit GE import.
169
5) Both images are displayed. Align each to the chosen grid using the option on the main
Grid menu. Save the resulting files under new names and close the GE original files. Crop to
remove white space and save again.
6) Open the map image of the area of interest.
7) If not done previously, calibrate it and align it to the grid.
8) Make sure that the map has the focus by clicking on it.
9) Click on Layers on the main menu, and wait until the layering process opens the Layer
Processing window.
10) Make whatever modifications are desired, merge the layers, save the merged layers to a
newly named file and exit Layer Processing.
11) Open the merged layer file and from the Grid menu or the lower toolbar button, load the
calibration from the background image file.
12) Save under a new name.
Example 2:
If the background is a black on white map:
1) Open the map which must be calibrated.
2) Change it's polarity to white on black using the Negative option on the AirPhoto lower
170
toolbar after pressing the red arrow at the right to get the second set of toolbits if you want
white lines on a coloured image.
3) Get coordinates for searching from the map by moving the cursor to a visible grid
intersection and note them down.
4) Open GE in AirPhoto, click to expand it, click Parameters to get a 3 x or more enlargement,
then use Find in Grid to go to the point chosen in the map by entering the coordinates and the
map sheet in the form. You may load as many of these images as you wish even with
adjacent areas of different dates if the Historical Imagery option was checked in the GE view
menu.
5) Use SaveAs and GECloseExit.
6) Align the GE image to the Grid (very important).
7) Crop so that any visible white space around the image is removed. (Optional)
8) Click the top bar of the white on black map to give it the focus and then the Windows Tile
button so that the GE result is visible again, but without the focus.
9) Click on Layers. The map will be shown as the background, the GE Image as the top
layer.
10) Select Effects, Operation. Select MAX in the drop-down menu which will give you white
map lines on the GE image.
Push the transparency slider to the extreme right for best contrast.
If you prefer black lines on the GE image, the background must be white. Then use the AND
option.
11) Go to the Layers File menu and click Save Merged layers
and save to a new file.
12} Exit Layers and open the result:
Warning:
The map background image should have a greater geographic area than that of the top layer
image or images (in the example above from Google Earth). may extend outside the area of
the map.
171
8
Additional Image Sources
172
Satellite Imagery
File formats, viewers and conversion:
Several Satellite image file formats are not directly supported by AirPhoto but if a satellite
image is converted to one of the formats which the program can read, then it can be treated
like any other aerial image. A polynomial transformation is recommended for use in this case.
To transform the image to one supported by AirPhoto, it is suggested that you download the
free viewers offered by ERmapper, LizardTech or ERDAS. The first of these can convert a
number of frequently used satellite image formats to GeoTiff files which can be read and
automatically calibrated. Other output formats are also available from the viewer. The
program is especially useful, because it can also handle newer files with 16 bit image pixels,
and these can be converted to 8 bit pixel output with proper compensation for the extra
dynamic range. Such images are offered by the Ikonos satellites, for example. The viewer can
also read the highly compressed wavelet transform files used by ERmapper and convert
these as well.
The ER mapper viewer and other useful files which can compress a number of common
image formats to the proprietary ERmapper format are available from:
http://www.ermapper.com/Products/ERDASProductInformation/tabid/84/currentid/2585/
objectid/2585/default.aspx
ERMapper offers "plugins" for ArcView and other GIS programmes. . ERMapper compressed
files may also be loaded and written in AirPhoto, but the free viewer offers other useful
options which are not available there.
A proprietary format called MrSID (Multi-Resolution Seamless Image Database) is used by
NASA and others supplying high resolution satellite images.
Viewers for these images may be found at the LizardTech website:
http://www.lizardtech.com
The most useful, Geoviewer, is capable of displaying and converting the special format to a
Tiff file which AirPhoto can read. If the image is accompanied by at georeferencing file with
the extension .sdw, then the viewer will create a file called .tfw in ArcView format in the same
directory. If AirPhoto finds this file along with the Tiff file, then the image will be calibrated
automatically and an AirPhoto .cal file created when the image is closed if you select ArcView
as the GIS format.
You may create photo mosaics from multiple Tiff files with .tifw georeferencing from the NASA
web site:
http://zulu.ssc.nasa.gov/mrsid
The NASA files with 28.5 meters/pixel for the whole planet are distributed in compressed Tar
format. These may be decompressed using the software from: PowerArchiver
http://www.powerarchiver.com
In addition to the .sid file, these compressed files contain the tfw file for ArcView, a tab file for
MapInfo and a NASA .met metadata file. If AirPhoto finds the metadata file, then the UTM
zone required for the WGS-84 UTM coordinate system will be read automatically. Otherwise,
you must enter the UTM zone by hand. The sid file name of the form N-xx-yy_loc.sid contains
the required zone number in the xx position. In the southern hemisphere, the N is replaced by
173
an S. The NASA files do not contain GeoTiff referencing, even though the Geoviewer offers to
create a GeoTiff output file. If you want GeoTiff referencing for further use, e.g. in AutoCad,
then first choose ArcView as the GIS format, open the tiff file created by GeoViewer, then
choose GeoTiff in AirPhoto GIS options and save the file.
ViewFinder, A more modern programme from ERDAS which uses an interface derived from
their Imagine OrthoBase software is available at:
http://www.dpreview.com/news/0210/02100402sensorsizes.asp
You can obtain a free "plugin" for the ERDAS Viewer from ERMapper which will enable you to
view their .ecw formatted files. ERMapper reads the ERDAS .img format.
Free satellite image sources:
Google Earth:
This is currently the best source for satellite or aerial imagery in terms of world coverage and
resolution.
SPOT images from NIMA:
High resolution SPOT (10m/pixel) imagery for many areas of interest without charge may be
found on the NIMA (National Imagery and Mapping Agency) military Web site:
http://geoengine.nima.mil
The images from this site are either view- and savable in .png format or downloadable as
GeoTiff files of larger areas. The latter files are geo-referenced in WGS84 datum latitude and
longitude. They may be read directly by AirPhoto and coordinates shown immediately, if Tiff
input and GeoTiff GIS options are selected in Options. After opening one, be sure to save it in
order to create a standard AirPhoto calibration file. The latitudes and longitudes may be
converted to any of the other supported grids by clicking on Grid, GPS to Grid. Save the file
after this operation so that the calibration using the new grid is retained.
AirPhoto can also perform the inverse operation and write a GeoTiff file with latitudes and
longitudes using a WGS84 datum from any of the supported grids. With an image file open,
click on Grid, to GPS to convert the internal latitudes and longitudes to the WGS84 datum.
Then use the Select Grid option and choose either Decimal or Degrees. Verify that these are
displayed when the mouse is moved. Then save as a GeoTiff and the WGS84 compatible
lat/lons will be written to the GeoTiff file.
SPOT images are in greyscale and usually need contrast enhancement. Try raising contrast
and lowering brightness using the Tools menu choices in AirPhoto, or use Enhance.
Landsat 7 images from NASA:
http://zulu.ssc.nasa.gov/mrsid/mrsid.pl
Landsat 7 images are in false colour. If you want to compare them with SPOT, you may
convert them using the greyscale option in AirPhoto Tools. Contrast and brightness usually do
not require treatment.
The Landsat images outside the USA are not geo-referenced directly. However, the georeferencing may be created using the LizardTech imager. Inside the area of USA, the
LizardTech viewer can produce GeoTiff output, but outside, only a plain Tiff file is created.
A special series of steps is needed for loading Landsat 7 images into AirPhoto and using the
174
NASA supplied georeferencing. The NASA files are labelled with a letter to indicate northern
or southern hemisphere, a number showing the principal UTM zone in the image, a number
with _loc appended to show the latitude of the lower edge, and the file extension .sid for
MrSID encoding. There is also a file with the same name and the extension .sdw which
contains the coordinates of the upper left corner of the image and the scales in meters per
pixel in the x and y direction. In addition, NASA supplies the Landsat metadata file with the
extension .loc.met and an overview image with the extension .sid.tar.jpg.
For example;
N-37-30_loc.sid
N-37-30_loc.sdw
N-37-30.loc.met
N-37-30.loc.sid.tar.jpg
shows the area centred around the WGS84 UTM zone 37 at 30 degrees north latitude. The
right and left sides of the image usually overlap the adjacent zones, in this case 36 and 38 by
about 10%, and these areas are orthorectified to match the main region at zone 37.
Load the .sid in LizardTech's Geoviewer and select an area of interest or scale the full image
down. You can not use the full resolution of the MrSID image at full image size on most
machines.
Then choose Export and make:
N-37-30_loc.tif
using the Tiff export function. The GeoTiff export function, although shown on the Geoviewer
menu does not incorporate GeoTiff data into the resulting file.
Choose the Export function output again, and this time select ArcView world files to make:
N-37-30_loc.tfw
Verify that the .tfw file really exists and contains the parameters for the upper left corner and
the scales in x and y directions.
Now start AirPhoto. In AirPhoto, choose ArcView//Info as your GIS, Tiff as input and output
file preferences and choose UTM-WGS84 as the grid before opening any files.
Then open N-37-30_loc.tif which was just made.
AirPhoto should find N-37-30_loc.tfw and read it to get the georeferencing.
If it also finds N-37-30.loc.met, it will not ask for a UTM zone number, since this is obtained by
the programme from that file.
If there is an S in the .loc.met reference name, the northings are inverted so that the
programme knows that the picture has the UTM grid for the southern hemisphere.
Save N-37-30_loc.tif first without changing any name or option, leaving it on the screen. This
will create an AirPhoto calibration file and an ArcView .tifw file, the more modern standard
ArcView 4 digit extension. The result can be used immediately in ArcView, MapInfo or another
GIS only if your other data has been georeferenced using UTM WGS84.
A large collection of free satellite images from various sources can be found at:
175
University of Maryland
http://glcfapp.umiacs.umd.edu/index.shtml
Using Landsat 7 images with other grids:
You can display a grid on the satellite image using the AirPhoto WriteGrid or Fiducials
option. You can change the Grid option from UTM-WGS84 if you wish in order to display a
different grid in the Grid menu, or you may display decimal latitudes and longitudes in order to
compare your results with the output of the SPOT 10 meter imagery from NIMA.
Before you make any changes, use the option Write Grid or Fiducials, so that you can see the
original default UTM WGS84 grid (perhaps choose red for the colour so that you can see the
grid against the Landsat 7 background. You must always choose the WGS84 grid before
loading a Landsat 7 or a Spot image.
You must perform a datum transformation operation before you can use Landsat 7 images
with a grid other than UTM-WGS84. With the image as above still open on the screen, from
the Grid menu select:
Select the grid which you want to use. This will cause all internal WGS84 latitudes and
longitudes stored in the calibration file to be transformed to those used by the newly chosen
grid. You are offered an option to save the existing WGS84 calibration to a file with a new
name, because the old one will be overwritten.
176
This illustration shows the British National Grid in white and the UTM-WGS84 original grid in
red. Always be aware that Landsat 7 images are not maps with a perfectly linear grid when
seen in full view. They have a certain amount of geometric distortion because of the large
area covered. This can be seen in the curvature of the grid lines in both grid systems in the
picture. Coordinates are read correctly in AirPhoto. However other programmes which use
do not use geodetic based coordinate calculations may display large areas incorrectly. For
small cropped areas of a Landsat 7 image, the differences may not be enough to notice.
If you have changed the grid as just described, use the Align Image to Grid option
immediately afterwards, especially so if you plan to use the result with a GIS.
If you need a GeoTiff format for AutoCad etc., then with the image still open and coordinates
now visible with mouse movement, reopen Options and selected GeoTiff as the GIS. GeoTiff
contains much more information than ArcView world or MapInfo tab files.
Save the file under a new name. Image Information from the main file menu should report
that it was a GeoTiff and show the full GeoTiff parameter set for the picture.
177
Warning:
Do not attempt to use the coordinates in the overlapping areas at the edges of Landsat 7
where the grid is not vertical. If you need to use data from those areas, choose the adjacent
tile. If your data overlaps the vertical tile boundary, you may have to crop two Landsat 7
images and then make a mosaic to obtain a nearly linear mapping in the overlapping area.
To be sure that you are getting a correct result, check coordinates against those visible in
Spot imagery of the same area if available. Spot is also georeferenced to WGS84, but the
referencing is in decimal degrees and the area covered is much smaller.
Keep in mind that Landsat 7 tiles are orthorectified images showing a central block
comprising one UTM zone, 6 degrees of longitude in width, and 5 degrees in height plus two
smaller areas to the right and left, and depending on latitude, roughly 50 km. in width. The
tiles also overlap adjacent tiles below and above by roughly 1 km. Thus, coordinates
displayed in LizardTech's Geoviewer or ERDAS Viewfinder are not compatible UTM grid
values when the visible area is outside the central zone on the georeferenced image.
AirPhoto shows the correct coordinates in these areas.
You can also use the Overlay facility to superimpose a map which uses a national coordinate
system on a Landsat image only if you have performed the required datum transformation.
Alternatively, you may transform the map to WGS84.
A suitable but long procedure is:
Open and calibrate the map which may have the national grid or with deg/min/sec or decimal
degree coordinates. Save the file under a new name.
Open Grid, select Grid, change to the national grid if deg/min/sec or decimal degrees were
used for calibration.
Open Grid, and choose GridToGPS-WGS84. The programme now cautiously warns that a
change may cause errors. Continue and save the result.
Close and reopen the result, coordinates should now be in UTM-WGS84.
Open Grid and choose chose align to grid. Verified the alignment by drawing the grid with
WriteGrid. Move the cursor to the upper right calibration point and note the E and N values.
Repeat this for the lower left corner. These will be the extreme points in the Landsat image in
each direction.
If the map is coloured, convert the map to black/white clicking the Auto Option on the b/w
conversion dialogue box and save again under a new name. If the black lines are quite thick,
apply a High Pass filter from the Tools menu to thin them and save.
Reopen it with the new name. Chose Resize/re-sample and set the scale to 28.5 meters/pixel
and use Mitchell filter for re-sampling so that it corresponds to the scale used in Landsat. The
Mitchell filter will preserve fine lines better than the other choices. Save the result under a
new name and close.
Open the N-xx-yy.loc.sid file using the LizardTech MrSID viewer, making sure that you have
chosen a tile in which your map area is not in the overlap areas to the east and west. If not,
choose the adjacent tile. Set Full View. Chose Export.
Using the values noted above in AirPhoto, enter the lower left Easting from above as Left, the
upper right Easting as Right, the upper right northing as Top, the lower left northing as bottom
in the LizardTech MrSID viewer and click OK. Save the result as a tiff under a new name, e.g.
NewName.tif
178
Save again as an ArcView world file to get NewName.tfw. Remember that the area outside
the central zone will not register correctly in ArcView.
Copy the NASA file N (or S)-xx-yy.loc.met to a file NewName.loc.met. This provides the
metadata needed to get the zone number of the UTM meridian strip automatically. If you don't
do this, AirPhoto will ask for a zone number which may be taken from the xx digits of the map
file name.
Reopen AirPhoto 3. Select ArcView as GIS Options. Select the grid as UTM-WGS84. Open
newname.tif. The calibration in UTM should appear immediately if you have carried over the
numbers from AirPhoto to the LizardTech viewer correctly.
Set the GIS options to GeoTiff. Save newname.tif as newnameGT.tif. This creates
newnameGT.cal.
Selected Merge or Overlay White in Output options.
Opened the aligned and rescaled black and white map from above, click on target.
Set newnameGT.tif as source.
Clicked on Overlay. This should overlay the map on the Landsat image without position shifts.
If not, make sure that you have chosen your grid system in AirPhoto correctly when
calibrating or loading a map and changing a lat/lon calibration to a national grid.
Save the result under a name which differs from newname.
179
GeoPortal Data
Data Sources:
A-F
http://geographiccuriosities.freeservers.com/EurLinks1.htm
G-J
http://geographiccuriosities.freeservers.com/EurLinks2.htm
I-R
http://geographiccuriosities.freeservers.com/EurLinks3.htm
S-Z
http://geographiccuriosities.freeservers.com/EurLinks4.htm
There are many hundreds of GeoPortal data servers which provide maps and some of which
provide orthophotos. The links above list them alphabetically by country and area.
Using the GeoPortal Data function:
In AirPhoto on the main toolbar, click on:
to open the GeoPortal Data page. The first time yo do this, the page will be blank. The next
time the program is run by the same user, it will open the last used GeoPortal server. This
can be changed with a click on the GeoPortal menu item shown below.
The main menu of the Airphoto GeoPortal page contains only four items:
GeoPortal opens a dialog box containing the names of some useful portals.
180
You can add many more, see below.
Click on a link to highlight it. Then click OK to open it.
To add a new link, open your Web browser outside of AirPhoto to a desired link perhaps
taken from the lists cited above and open it:
Click on the link to give it the focus and save it to the Clipboard. Make sure you have copied
the full name by holding down the Shift key, then pressing End and then Ctrl-C.
Paste the full link name into the Add a GeoPortal Web Link field. It is helpful to put a short
easily identified name in front of the link itself which must always begin with http://. That
181
ensures that the links will be sorted in a meaningful way.
Use the Tab button to leave the field and transfer the new link to the list. If you make a
mistake, highlight the faulty link and press the Delete key. You will be asked if you really want
to do this:
Click on Yes and the link will be deleted. All links in the list are saved to a simple ascii text file
called GeoPortalURLs.txt on the directory where you have installed AirPhoto. You can also
edit this file with an ascii editor like Notepad, but if you make a mistake, the link will be
unusable.
When you click on OK, the link will cause the simulated Web browser in AirPhoto to display
the Web site:
The whole Web page will be shown as if you had opened it in your normal Web browser.
182
In the example shown here, taken from the Swiss mapping service Web site, you can move
seamlessly between an aerial and a map view of any chosen region in Switzerland with a
choice of different map backgrounds:
183
For example, you can show the whole of the country as seen from a great altitude and zoom
in or move with the tools provided by the Web site.
On this site, you can display aerial and map detail with scales as large as 1:1000, but most
other sites do not offer such high resolution.
184
Well designed sites offer an option for mixing the aerial and the map view of an area and
show grid lines in the coordinate system of the country. Many other items of interest can also
be shown like in a GIS programme.
To save this to a file for further use in AirPhoto, click on Crop + Save on the main GeoPortal
menu. A selection rectangle with inverted colour will appear, draped over the middle of the
display. It defines the limits of the part of the Web page which can be automatically cropped
and saved to a new file.
You can drag, expand or contract this rectangle to exclude Web site features which you don't
want to see in the result. Then with the mouse click the Right button and you will be
presented with a file save dialogue box which permitts you to name the result file in any way
desired and to select an output file type as well. Closing this dialogue saves the screen area
as selected.
The next time you click on Crop + Save, the selection rectangle will be shown with the same
dimensions and position as it was the first it was displayed and moved. If you wish to save
multiple areas, hold down the Shift key and click the Right mouse button, and the image will
be saved with the previously chosen name plus a numerical identifier, e.g. Swiss001.jpg, with
the number augmented automatically each time you click on Crop + Save and Shift-Right
click. If you prefer, you can use Shift-Right click without choosing a file name or type and the
files will be saved in Jpeg format starting with 0001.jpg, 0002.jpg etc. On the main menu
when saving multiple images with incremental numbering, the word Saved will appear when
the cropped area has been written to disk so that you see the fact or exit to AirPhoto.
185
This will allow you to change layers in GeoPortal, and crop a matching area of map and photo
precisely in separate files. The quality of the match between the aerial or satellite image and
the map will vary, depending on their relative original scales. If these differ considerably, then
items like buildings or roads may be displaced considerably.
Note:
A small number GeoPortal sites open a new secondary browser window to display the site
data. To capture the data from such sites, a separate floating capture window has been
added. The menu bar contains an entry called Special Capture which is activated when a
code containing the flag [sc] is inserted in front of the URL name of the site in the selection
list. You can insert this code yourself when adding a site that shows capture problems. For
example:
BadenWurttemberg [sc] http://www.geoportal.lv-bw.de/mapbender/
Otherwise the Special Capture menu item is not enabled.
When clicked, a little window pops up with a short menu:
Click on Start Capture to begin the capture process.
Two temporary hot keys, Ctrl + F10 and Ctrl + F11 are now enabled Holding down Ctrl and
pressing F10 shows the selection rectangle to be displayed as described above, and this may
be moved and resized. The information in the rectangle can be saved to a file in the same
way as that also described above. If the site of interest has offered a full screen option, you
can also save the full screen using Ctrl and F11. In some cases, other programmes may be
using the Ctrl and F11 combination. In that case a message will inform you that the capture
window will try to use Ctrl and F9.
186
You can work with the the captured area after you have pressed one of the key combinations.
After capturing, you can toggle between a full screen view or the compact initial view by
clicking on the Full Screen On/Off menu item.
If you have made a mistake, click the Clear item and then click Start Capture again.
When you have finished, close the special capture window using the Exit menu item.
If the site starts a new instance of the Internet Explorer to display a detailed area of interest
as is the case in the example above, the data to be captured and saved may be displayed
and partly hidden behind the secondary browser instance window. Close this secondary
window and move and drag the selection area to exclude unwanted data, then right click with
shift to save to a desired file name or without shift to augment an existing file name with a
count as above.
Saving the data:
When you have finished, click on Exit to AirPhoto and your cropped and saved images will be
displayed in separate AirPhoto windows.
Note:
For saving multiple images, it is usually best to move the Web page image with the portal's
"drag" function, usually the left mouse key held down after perhaps clicking on a hand button
rather than moving the selection window which retains it's size, shape and position for
multiple crops and saves. If the multiple windows are to be stitched together to form a larger
image, this makes it easier to judge the extent of the required overlap between images so that
the stitching programme can match features in the overlap area easily.
187
Multiple images may be stitched together using many image stitching programmes, but the
Microsof Image Compositing Editor (ICE) is recommended for it's ease of use and ability to
make very large files. It also provides for the stitching of plane images which is needed in this
application. It can be downloaded and installed without charge from:
Microsoft Research
http://research.microsoft.com/en-us/um/redmond/groups/ivm/ice.htm
If it is installed, and you have saved two or more images, the Run ICE entry on the file menu
becomes visible.
ICE attempts to stitch all saved images together based on automatically detected features in
them. You can run ICE several times to see how the images have been placed by that
programme and if areas are missing, simply drag the GeoPortal source image to cover the
missing areas.
When clicked, the names of the saved images or the sequence names described above are
passed directly to ICE which then stitches them into a larger image. The list of saved names
can be added to if you have missed an area and the operation repeated. The number of
currently saved images which can be passed to ICE is shown next to the Saved entry on the
main menu. When you choose Exit to AirPhoto or Quit, the list of names is cleared.
When you are satisfied that the area of interest has been covered, use the automatic crop
facility in ICE to create a new image which you can export to disk by clicking the button.
188
In this way, an image with much higher than screen resolution can be created for accurate
use.
Calibration:
Images captured from GeoPortal sites can not be calibrated automatically for use in
AirPhoto. Many Geoportal sites show the coordinates at the mouse cursor in either a local
grid or in latitude and longitude. If a map shows a national or international grid, then you can
note the numerical values for at least four grid crossing points to use in AirPhoto's calibration
option. If no grid is shown, you can note the coordinates of prominent features which you will
be able to see easily when the images have been saved and displayed in AirPhoto. Make
very sure that you have chosen the right grid in AirPhoto befor you open GeoPortal, since
there is no way to check for possible error when using the portal.
Warning:
AirPhoto has no control over the appearance of the page or the way you can interact with it.
The Web site can only be used in the way the designers of the Web page of the GeoPortal
intended. It also has no control over errors which actions may produce that can not be
interepreted correctly by the simulated Web browser in AirPhoto.
Special Sites:
A few GeoPortal sites use external programmes to implement special needs. For example,
the site at the Belgian Royal Library which offers full resolution views of all 275 140 x 90 cm
sheets of one of the earliest set of large scale maps made in Europe, the Carte de Ferraris
completed in 1777, requires that the Shockwave Player from Adobe be installed if the imagery
is to be seen at full screen resolution along with panning and zooming at maximum speed.
This must be installed by a user with administrative rights in the Microsoft Internet Explorer,
version 8 or later before attempting to view the site in AirPhotoSE. The free download
installation file may be found at:
http://www.adobe.com
and there, choose:
189
Other sites may use the Flash Player from the same source. Please consult the
documentation for any site of interest to see if there are special requirements.
190
Calibrating GeoPortal Variants
Unfortunately there are no standards for the scripts which run a GeoPortal Web site. Each
one is different. Therefore a minimal set of tools has been incorporated into AirPhoto which
permits extracting basic image and geographic information from most sites for further
processing in AirPhoto. These use the Windows Clipboard to exchange data between the
site and AirPhoto.
All appropriate parameters must be set using the GeoPortal itself. AirPhoto can not do this
directly, since the scripting code of the site is not standardized and is sometimes encrypted.
The available parameters often include a choice of grid system, a scale and the theme to be
shown, e.g. an orthophoto, a map, names and other features. Undesired features which
should not be visible in output images must be disabled by using the options offered by the
geoportal.
The keyboard operations used for interchanging values between data entry fields of a
GeoPortal site and the coordinate fields on the upper toolbar of AirPhoto include:
In the GeoPortal user-modifiable data fields:
Shift/Home
Shift/End
Ctrl_C
Del
Ctrl_V
Highlight the content of a field after entering data.
Highlight the content of a field if the cursor is at the left edge of the field.
Copy the highlighted content of a field to the Clipboard.
Delete the content of a highlighted field.
Transfer the content of the Clipboard to a field.
AirPhoto monitors the Clipboard continuously for any change made in the GeoPortal followed
by Ctrl_C and places a coordinate value saved to the Clipboard with Ctrl_C in the upper
toolbar field or fields.
Ctrl + M
to set a screen marker at the cursor's position. If coordinates have
been written to or copied from the Clipboad to the East and North fields of the main capture
window, they will be written next to the marker as well as in the GeoPortalFiles.txt protocol file
when the programme closes.
In AirPhoto:
Tab
Copy a modified value in one of the coordinate fields of AirPhoto to the
Clipboard from which it can be entered into the appropriate GeoPortal field using Ctrl_V in
that field.
Alt_S
Copy the full GeoPortal screen to an overlying layer belonging to AirPhoto
and display a selection rectangle which may be dragged to and stretched to include an area
of interest and exclude items which should not appear in the result. The colours of the
selected area are inverted for better visibility.
Shift/RightClick Opens a filename dialogue box to permit entering a name for a file to contain
the first area captured.
RightClick
Capture additional areas after moving the underlying GeoPortal image and
pressing Alt-S again or clicking on the Save and Capture menu item.
191
The first image file in a selection sequence should be given a short name. Sequence
numbers will be entered automatically by the programme after the short name and the file
name extension. Three digit automatic sequence numbers are generated. Image files are not
overwritten if a file name is generated in a subsequent programme session. If image files
have been deleted, a new name is generated with the first available sequence number which
is free. If the Shift button was not held down for the first capture, then only the sequence
numbers will be used for the file names.
192
Further screen captures, after changing the position of the image on the screen with the tools
offered by the Geoportal, may be sequentially numbered using the initally chosen file name as
a prefix simply by pressing Alt-S again followed by Right-Click with the mouse.
Many GeoPortal sites offer a search option using coordinates in one or more map grid to
zoom to a point of interest. Some require entering East and North parameters in separate
fields:
The content of a field can usually be edited. The value can be highlighted by holding down
and dragging the mouse over it and releasing it or by using the Shift and the arrow keys or
with the Shift-Home keyboard combination. Follow this with Ctrl-C to copy the data to the
Clipboard. When two fields must be used, then the operation must be repeated on each field
separately. Always start with the East / X field first and then copy the North / Y field.
Some GeoPortal sites permit entering the search coordinate pair in a single data entry field:
After highlighting the search values in the GeoPortal search field or fields and pressing Ctrl-C
on the keyboard, the search values are also transferred and displayed on the uppermost
toolbar of the AirPhoto GeoPortal page and the programme remembers that the data was
entered from a single field and separates the East and North values for the toolbar fields
appropriately.
To change the search position by a known amount in 500 meter increments without having to
do mental arithmetic, click on the upper toolbar to change the focus from the GeoPortal
search fields and then click on the spinners for the East and North fields there.
Then press the Tab key to transfer the changed value or values to the Clipboard.
Finally, return to the search fields in the GeoPortal, clear the value or values and press Ctrl-V
to transfer the new values from the upper toolbar to the GeoPortal field and then press the
search button of the GeoPortal site to move the image to the new position.
193
If the GeoPortal site supports search using the UTM-WGS84 grid and you have selected that
grid in the Options dialogue, a UTM zone field with an attached spinner will also be displayed
on the upper toolbar. Set the value for the area of interest using the spinner.
From the File menu on the GeoPortal page you may choose the Edit option to examine the
values which have been entered automatically in a list of images and coordinates
If a value appears to be incorrect, you can remove it from the list by highlighting the row and
pressing Delete followed by Exit to close the editing window.
If you have installed the Microsoft ICE image compositing editor, you can click on the Run
ICE entry to see how the separate image tiles align
194
When using ICE with a large number of tiles, it may be necessary to set the Stitch option
manually to one of the three Planar Motion choices to prevent ICE from warping the output
when you click it's Export to disk button. If, instead of orthophotos, you have chosen black
and white or greyscale maps in the GeoPortal, make certain to choose the Export format as
Windows Bitmap and not JPEG, or the map lines will be fuzzy after transformation in
AirPhoto.
Click on the Automatic Crop button in ICE before Exporting and scroll the result with the
mouse to make sure that all of your area of interest is included. If not, return to the GeoPortal
and select and capture any missing areas following the instructions above. If ICE has
excluded some images because they don't overlap adjacent images sufficiently for stitching,
add images in the missing areas. These can simply be moved using the image shifting
options of the GeoPortal. If that is used, set the coordinate values in the upper toolbar fields
to zero so that previous values will not be recorded in the image list data in the wrong rows. If
not otherwise chosen, ICE uses the name of the last image tile incorporated into the
composite picture with the addition of "_stitch" unless you choose the output name.
When you are satisfied with the results, choose the Save option from the GeoPortal menu
and write the list of image and coordinate data as a text file. This may be reloaded with the
Load option if you have to interrupt your work. The data is also recorded and saved to the
default GeoPortal list text file.
Now you can proceed to calibrate your result in AirPhoto normally while displaying the saved
list text file from which you can transfer coordinate values into the calibration dialogue using
copy and paste with the Clipboard. This will avoid numerical typing errors.
195
A result from a site which automatically writes coordinates as well as a marker looks like:
Although many GeoPortal sites place markers at the center of an image found using their
search option, few do so in the same way and the markers are all different. If the site permits
you to enter numerical text data near or at a marker automatically, that is very useful. It is not
advisable to enter this data manually, since numerical typing errors are easily made, but you
may copy and paste the numbers from the fields in the GeoPortal Edit window into the text
entry fields of the GeoPortal to avoid errors.
If you have chosen one of the GIS options in the Options dialogue, a georeferencing file for
the chosen GIS will be written as well.
196
Special Capture Window
The special capture window is enabled when the short name given for a GeoPortal is
followed by [sc] before the URL which must always begin with http://
Example:
BadenWurttemberg [sc] http://www.geoportal.lv-bw.de/mapbender/
The four text characters may be inserted in any GeoPortl link with a text editor like Windows
Notepad on the file
geoportalurls.txt
which can be found on the installation directory.
The special capture window is needed when the GeoPortal shows a separate preliminary
window before a map or an orthophoto can be displayed. Commonly, this is to require the
user to accept the terms and conditions of the GeoPortal's owners, but it may also be useful if
a full screen view is shown using a separate programme like Adobe Shockwave or Flash.
Before opening the second window of the GeoPortal, the special capture window should be
opened either by pressing Ctrl-F12 or clicking on the Special Capture menu entry on the initial
GeoPortal display window.
The following keyboard shortcuts are used in the special capture window so that the position
of the mouse cursor need not be changed when capturing, thus permitting visible coordinates
or other values which are changed by the mouse cursor's position to be captured correctly.
Keyboard Shortcuts:
Ctrl+F12
to initialize the special capture window. This need only be done once.
Ctrl+F10
Capture an Area (or Ctrl+F8 if Ctrl+F10 in use)
Ctrl+F11
Capture the Full Screen (or Ctrl+F9 if Ctrl+F11 in use)
Ctrl + M
to set a screen marker at the cursor's position. If coordinates have been
written to or copied from the Clipboad to the East and North fields of the main capture
window, they will be written next to the marker as well as in the GeoPortalFiles.txt protocol file
when the programme closes.
If a background map shows a grid, this makes placement and transfer of values for a marker
much easier. If coordinates are shown by the site as the mouse is moved, pressing Alt+S to
capture the image leaves the coordinates unchanged, and these can be typed into the East
and North fields, or copied to the Clipboard if they are showin in the search fields of the site.
197
Ctrl + O
to clear the capture buffer
Ctrl + X
to exit the special capture window.
Shift + Right click to save the captured area to a named file. A file saving window pops up and
shows thumbnails of any images previously saved.
Right click
chosen.
to save to sequentially numbered file if a previously named file has been
This is what the initial window looks like after pressing Ctrl + F12 or clicking on StartCapture
before capturing anything:
198
A window chosen by coordinates:
After selection with Ctrl + F10:
199
In some cases, the captured window will be hidden behind the secondary window of the
GeoPortal. If that happens, press Alt-Tab to cycle through the visible windows to select it, or
click on a corner if one is visible.
Using the grid coordinates as shown at the bottom left above to search for the point of
interest. Note that not all GeoPortals offer this option.
The capture area and the coordinate search fields just before saving the image with a right
click.
200
A capture showing grid coordinates at the mouse cursor position prior to capture
After the special capture window is closed, the other operations on the file menu of the
GeoPortal window are also available.
201
Geophysical Data – Import
AirPhoto has a generic import facility for importing geophysical data in ASCI format, mainly
geo-electric and magnetic. Unfortunately, there are no standards for recording geophysical
data. Nearly every instrument maker has a different way of doing this. Hence only a generic
method can be offered with limited flexibility for accepting slightly different data orders can be
offered. The import facility is mainly useful for using geo-referencing in the data which is
usually supplied by GPS readings to combine the result with geo-referenced aerial imagery or
maps in AirPhoto.
Clicking on the Import option on the File menu shows the entry "Geophysical Data". A file
opening dialogue box appears which loads the data from an ascii file into a table.
The table has six columns:
X or East, Y or North for the position of a measurement.
Z or Value for a measurement.
K or Correction for diurnal variation correction readings from either a fixed station or a
gradient sensor if used for magnetic data.
ID for an identification number which is of interest if you want to edit the data in the table and
find a unique record to change.
Zone for a grid zone value if a grid has been chosen in Setup which has multiple meridian
zones. This permits evaluation of data which crosses a meridian strip. Otherwise, a single
zone number may be chosen in the upper toolbar.
202
For grids which require it (e.g. UTM-WGS84), measurement made north or south of the
Equator must also be specified.
If a neutral X-Y grid or one which doesn't have zones has been chosen, then these options
arel not shown.
Only the first three columns, namely X or East, Y or North and Z or Value are required. The
others are optional. Each record must describe a single measurement at a single location.
Data spread across multiple records is not supported. Each location must be also be unique..
Columns which may contain data that should not be used can be hidden and de-activated by
clicking on the column in question and then on the left button of the pair:
Clicking on the right button will redisplay all hidden columns.
Here for example, columns which contain data which must not be used, have been hidden:
203
By default, only the first ten data records are displayed in the table. If you wish to display all
the data records for editing, click on the button
This may take a long time if there are a large number of readings. You will be offered the
option of cancelling the operation. Full display of all data may be chosen permanently in
Setup, Appearance if desired.
The maximum number of records which can be displayed is limited to 320,000. The total
number of records which can be read and processed is not affected by this limit but rather by
the limit on the value of a pointer to memory in a 32 bit operating system.
The ordering of columns can be changed by clicking on a column to activate it which causes
the buttons:
to be activated. An active column may be moved in the direction shown by the arrows. The
columns are colour-coded so that they can be readily distinguished.
204
Click on the OK button when you are satisfied with the appearance of the data.
205
Geophysical Data - Treatment
After clicking on OK in the Import dialogue table, a dialogue with processing options is shown:
By default, an output image will be in grayscale with the highest positive values as white. You
can invert this with the Invert check box if you wish. If you prefer, you may choose false
206
colour output by clicking on the Color radio button. Colors from deep blue to dark red
correspond to increasing data values. This too can be inverted if desired:
The range of colours can be changed with the spin edit boxes at the upper and lower
spectrum ends.
The programme will attempt to detect if the coordinates of many successive records lie in
approximately straight lines in the X direction. If so, the data is considered to be on a regular
grid, if not, interpolation to a regular grid is required. This is done automatically using the
Sambridge-Braun-Sibson algorithm described in the Technical Details chapter. The values
can be forced to a regular grid without interpolation by checking the gridded box. If the values
are detected as already being on a regular grid, interpolation can be forced to fill missing
values if desired. The output can be scaled in meters per pixel if a grid has been chosen in
Setup or in arbitrary units if X-Y has been chosen as the AirPhoto grid.
Simple treatment options available are:
The effect of missing vaues or data outliers can be reduced in the the output by checking the
Median Filter box.
Wide-ranging values with data of interest concentrated in a narrow range around zero can be
subjected to non-linear arctangent compression by checking the compression box.
Gridded data whose values have been surveyed in the Y direction can be displayed by
checking the Vertical check box instead of the default X survey direction. This option is made
available because columns with geographic East and North values must not be interchanged
during importation.
For magnetic data, de-striping and de-zigzaging options are available to reduce the effect of
sensor heading error or possible contamination. For the former a broad average is computed
over a number of successive lines and each line normalized relative to the average. For the
latter, the cross correlation function between even and odd numbered data lines in regular
gridded data is computed using a fast Fourier transform, and the lines shifted slightly to
maximize correlation between successive lines. In both cases, median filtering is
automatically applied before the operation is carried out to prevent data outliers or missing
values from affecting the computation.
When OK is clicked, the data is processed and written to an AirPhoto image bitmap and then
displayed in a new window. This may be given further treatment using many of the AirPhoto
options for image data treatment and then saved in any of the image output formats
supported by AirPhoto. If a geographic grid has been chosen, the AirPhoto Layer or Mosaic
options will scale and place the geophysical data image correctly along with other image data
coming from a map, aerial photographs or Google Earth.
207
10
Data Output
208
Supported file types
The following file types are directly supported for output with AirPhoto and may be saved
using the SaveAs dialogue option:
Adobe PDF
Apple PICT
AVS
CompuServe Bitmap
Enhanced Windows Metafile
Er Mapper
FITS
FlashPIX
Graphviz DOT
GUMP XCF
HDF
HP PCL Printer
Irix RGB
JBig
JPEG Bitmap
JPEG2000
JPEG2000 Code Stream
Khoros VIFF
Kodak Cineon
Kodak PCD
Layers
Layers and objects
MIFF ImageMagick
MTV Raytracer
Multipage PCX
PaintBrush
Palm Pixmap
Photoshop PSD
Portable Network Graphics
Portable Pixmap, GrayMap, BitMap
PostScript Level 2
Scalable Vector Graphic
SMTPE DPX
SUN Rasterfile
Targa Bitmap
TIFF Bitmap
Vectorial objects
VICAR
Windows Bitmap
Windows Metafile
Wireless Bitmap
XBM
XPM
PDF
PICT
AVS
GIF
EMF
ECW
FITS
FPX
DOT
XCF
HDF
PCL
SGI
JBG;JBIG;BIE
JPG;JPEG;JPE;JIF
JP2
J2K;JPC;J2C
VIFF
CIN
PCD
LYR
ALL
MIFF
MTV
DCX
PCX
PALM
PSD
PNG
PXM;PPM;PGM;PBM
PS;EPS
SVG
DPX
SUN
TGA;TARGA;VDA;ICB;VST;PIX
TIF;TIFF;FAX;G3N;G3F;XIF
IEV
VICAR
BMP;DIB;RLE
WMF
WBMP
XBM
XPM
Very infrequently used image file types may be written via the Export. option on the File
menu.
For saving and storing very large black and white maps, the JBig format produces the highest
compression of all methods and options offered in AirPhoto. It can be read and written from
the Open and Save dialogues, but Jbig files are not readable in most picture processing
programmes. JBig is only for black and white images. It can not be used for greyscale or
colour images.
209
Saving files
From the main menu
select SaveAs. You may save directly using the name of the file as entered by clicking Save.
Alternatively you may click on the speed buttons or or use the keyboard options Ctrl-S or
Ctrl-A for the same purpose.
The SaveAs option shows the main file saving dialogue box:
210
It looks quite similar to the dialogue used for opening files.
You may select any directory or drive and click on an appropriate file name. A sample image
is shown to aid in selection. The choice of file types visible by default in the 'files of type' box
depends on a choice which you may make in the Options dialogue box.
In addition to the standard output files available, you may also save to a variety of less
frequently used file types by holding down the mouse on the Files of Type
arrow to display many more types.
You may wish to turn off the little preview window using the check box provided if you have a
machine with a modest amount of memory and leave it turned off if you are loading very large
images. If you click on the magnifying glass icon over the white page here
you can preview the image at full screen size.
You may select a number of different options for image selection including a series of
thumbnail images or icons by clicking on the little "view menu" icon. You may also create a
new folder or directory, and if you are running Windows NT/2000/XP/Vista, you may also save
image files to the Internet or to a network by clicking on the appropriate icon to the left of the
dialogue box
.
211
Clicking on the Advanced button brings up a separate dialogue box with additional options
appropriate to the type of file chosen for the save operation:
See the notes in the topic Control Point Entry in the Transformation chapter on showing or
hiding control points.
Saving with Control/Calibration/Height Data:
Occasionally you may want to save an image and include control, height, and calibration
points or an overlain grid in a result file permanently. To do this use the file menu option Save
With Data:
Use a different file name when saving so that the original will not be overwritten.
212
BMP Windows Bitmaps
Windows Bitmap Files may be uncompressed or use run-length encoding (RLE) compression.
Bitmaps may have the following colour options:
2 (1 bit), 16 (4 bit, paletted), 256 (8 bit palettes), 65536 (16 bit), 16 million colours (24 bit) or
16 million colour (32 bit) with a transparency channel for layering.
Bitmaps load and stored much more rapidly than the other formats and should always be
used when working repeatedly on a set of images after reading one of the other optional
types until final output in a different format is required. The option RLE should be used with
caution, since many other programmes can not read files of this type. The degree of
compression offered with this option is modest. If considerable compression is required, use
JPEG (Joint Photographic Experts Group) files.
213
JPEG Joint Photographic Experts Group
JPEG files are the second most highly compressed offered in AirPhoto and are standard
output from many digital cameras. However, the compression scheme causes a slight loss of
data. It is a widely used format for Web and Internet transfer, but it should be used for a
single load or save since repeated opening and closing of such files will cause progressive
loss of quality.
There are a number of advanced sub-options available. DCT stands for Discrete Cosine
Transform which is used in this compression scheme. The choice of sub-options here,
ISLOW, IFAST or FLOAT refer to the time required to do the computation and the resultant
quality. FLOAT is still slower than ISLOW, but not much. Quality is slightly better.
The Photometric properties refer to the way colour is encoded. RGB works directly on the
native hardware additive colour scheme Red, Green, Blue mode. Greyscale uses encoding,
CMYK stands for Cyan, Magenta, Yellow and Black, the subtractive colour scheme used on
printers and with printing inks. YCbCr , YCbCrK (Luminance, Component Blue, Component
Red, K-Black)are colour schemes compatible with television and other non-computer devices
and should normally not be used with other software, although Adobe software supports
them.
Compression is increased by using Huffman and/or Progressive encoding, but again, some
software varieties may not be able to read the result. With very high degrees of compression,
the result may be a bit blocky in appearance. This may be somewhat offset by choosing a
higher Smoothing Factor than the default of 0. In general, one has to experiment a bit to btain
the best results with maximum reduction of file size depending on what will be done with the
result.
214
TIFF: Tagged Image File Format
This format is compatible across most computer platforms and is widely used in remote
sensing and geographic information systems. It has the largest number of sub-variants of any
common image file format, not all of which can be read or written by all applications and not
all of which are offered in AirPhoto.
In addition to the colour schemes offered by JPEG, CieLab, a colour mapping from the 1970's
is also available along with the choice of setting white or black polarities and more.
Compression schemes are available and except for JPEG formats, these are lossless.
Although one may also store more than one image in a Tiff file, and label it, set its position
and more, be aware that since many other software packages do not support these features,
this version of AirPhoto does not read back a file with multiple images and permit selection,
and it does not use the labelling facility.
215
TIFF: Tagged Image File Format
The colour output options available are given by the Photometric drop-down list:
Usually you should use RGB as shown if you are going to print a coloured image because
most printer drivers convert this to whatever internal format the printer needs to match the
colours on the screen to the inks. However, sometimes this does not produce acceptable
results. If so, try the CMYK option which is supposed to simulate the appearance of a paper
print on the screen. This too may be unsatisfactory unless you have a colour profile for the
display card and monitor installed.
RGB Palette should be used if you are making an image output file with less than the full RGB
(3 x 8 bit or 16 million) colour scheme. You should also choose the output option for the
number of colours to obtain the number of colours desired:
216
TIFF: Tagged Image File Format
For black and white images, you can change the polarity with the black/white is zero choice
if you are using output in another programme which requires inverted image polarity
compared with AirPhoto.
The other output
options e.g. Transparent Mask should only be used if other software requires the format
chosen.
Compression options for black and white images are shown in the first four lines of the drop-
217
down list . The G4Fax option gives extremely high compression without data loss for such
images, but it can not be read by many programmes. If you are short on disk space, it is a
very useful option for storing very large black and white maps. The other black and white
compression options are less effective but can be read by many programmes.
Compression options for colour or greyscale images are shown in the last four entries.
Packbits is compatible with most software. JPEG (see above) causes some data loss if used
repeatedly but gives higher compression. LZW (Lev Zempel Welsh, the names of the
inventors) compression is quite effective and lossless. There may be compatibility problems
though with other programmes. OLDJPEG is included for backward compatibility and should
not be used unless other software requires it.
218
JPEG 2000
The newer JPEG 2000 standard offers a lossless compression scheme which will reduce
many images to about 20% of their original size as well as lossy compression which offers
much greater reduction without very much visible loss of data. The compression rate is on a
scale of 1:1000 on the Advanced options page of the file saving dialogue The default is
lossless (1000). A setting of 100 on a black and white image gives a reduction of nearly 30 to
1 with little loss of quality. Especially noteworthy is the fact that the block-like artefacts visible
in the older JPEG standard images at high compression rates are much reduced or absent
entirely. However, many other programmes do not offer the JPEG 2000 standard.
Warning:
Jpeg2000 is slow when applied to large images. The Advanced window may appear to freeze
for quite some time until the progress bar moves beyond the half-way point. In addition, many
older programmes can not read Jpeg2000 files. It is recommended to make a small test
image and try this in any other programme you plan to use before processing a considerable
amount of data. It is also lossy, so that you should never repeatedly open and save files using
this format or image quality will degrade.
219
PNG: Portable Network Graphic
This is the modern format which should be used for Web graphics unless high compression is
desired, in which case JPEG (see above) should be used.
220
TGA: Targa bitmap
This is an old format still sometimes used in desktop publishing packages which is why it is
still offered here.
221
GIF: CompuServe GIF
This file type is used widely in Web sites on the Internet. However, the format is not as flexible
as its more recent replacement, PNG or as well compressed as JPEG.
222
PCX: Zsoft Paintbrush
This is an obsolete file format once used widely. It is retained for historical reasons and for
reading older material. There are several very old sub-formats, not all of which can be read by
AirPhoto's PCX converter.
223
Other directly supported formats
For the following file types, previews and special options are not available:
PXM: Portable Pixel map Format (PPM, PBM,PGM)
These formats are an older portable ASCII image format for small colour images which is
rarely used except in the Unix operating system world. Options as for BMP. Use it only if
another application requires it.
EMF: Windows Enhanced Metafile format.
This format is used in some graphics applications. Sub-Options are as for BMP. It should only
be used for those applications which require it.
WMF: Windows Metafile format.
This is an older Windows graphic format. Its sub-options are as for BMP. It should only be
used for applications which require it.
ECW: ERMapper compressed format.
ECW files may be written for interfacing to the Er Mapper programme, or for general use. The
degree of compression is comparable to that obtainable with Jpeg2000. However, ECW files
like Geodetic files will contain geographic referencing information if the image from which they
are made is calibrated. Reading back an ECW file can not always determine the geographic
reference uniquely and set the coordinate option in the programme without ambiguity. In such
cases, a warning will be given. ECW files may also be viewed or compressed using the free
programmes offered by Er Mapper See the links under Satellite Imagery
Warning:
ECW file compression is lossy, which means that they should not be written and rewritten
repeatedly, or image quality will degrade. Load an ECW image only once and save it to
another format type. You may write any currently displayed format type to an ECW output
image but there is a restriction to 500 MB on the total size of a file which may be written in this
format. This restriction is the product of the pixel side lengths of the file times 3 for colour
output which is automatically used even if the image is greyscale or black and white.
224
Rarely used file types:
Choose the Export option
After a file name has been selected, you are given a choice of very rarely used formats for
saving:
225
Printing
The Print menus:
The currently active window containing an image may be printed from AirPhoto. There are
three menu choices, one for choosing the printer if you have more than one, one for rough
printing of a non-scaled test image, and finally one for printing a result to a precise scale:
Printer setup:
226
This is a standard Windows printer setup dialogue box from which you can set all the
properties of your printer which are recognised by the Windows printer driver for all printers
connected directly or via a network to your machine.
Preview printing non-scaled:
You can see a preview of what you are about to print and if you don't require accurately
scaled printing, you can print your currently active window image just as shown in the preview
frame. There are number of sub-choices available including fitting to the paper size using the
selectable margins from the dialogue, showing the data at the pixel level (normal), printing at
a fixed size in centimetres, or stretching the image to fit the page. The last of these distorts
the image. You can also change the fixed size image in steps, change the units use from
centimetres to inches, select a position to print within the margin frame shown in the preview
area, and you can modify the contrast of the output image by changing the value of Gamma.
Printing to scale:
227
You will frequently want to print scaled results. This is possible if an image has been
calibrated. You may then choose a scale which you can vary by dragging the slider and
clicking on the Absolute scale button, then on Scale. If you are in the UK or Ireland and want
to use the old Ordnance Survey 6 inch/mile scale, you can check the box shown and the
scaling will be set automatically. The check box is hidden unless the UK or Ireland grids are
chosen.
228
11
Setup
229
Options
A large number of options are which are frequently used can be recorded so that when
AirPhoto is reopened, these settings are immediate available. Among these are
File Preferences:
AirPhoto offers a variety of input and output file types. Your preferences can be set here so
that when files or opened or saved, the desired type appears in the appropriate dialogues
These preferences are saved after AirPhoto closes, but they may be changed at any time.
AirPhoto offers a variety of transformation and interpolation options.
230
Transformation Preferences:
See the detailed discussion in the Transformation chapter of these options.
Automatic:
Let AirPhoto choose a transformation optimised for the available number of control points
(Default).
Projective:
This should be used for photos made with a camera whose properties are not known. At least
four corresponding points in the source and the target must be known for the projective
transformation. More will improve the accuracy of the result.
Polynomial:
This is for satellite or high altitude scanner imagery. At least six control points are required for
the bivariate polynomial of order 2. If you wish, you may use a higher order polynomial (up to
degree 5), but still more control points will be required.
Multi point:
This transformation may be used if you have seven or more control points for moderately hilly
terrain without a digital terrain model (regular grid of heights). This provides secondary
polynomial correction of a projective transformation. Here too, if you wish, you may use
polynomials of orders two to five, with increasing numbers of control points required.
Local Stretch:
231
This transformation makes no assumptions about the properties of the image. It does linear
local stretching on the internal triangles within a polygon drawn around each control point. It is
mainly useful for correcting old maps for which a very large number of points corresponding to
those in modern maps can be identified. When used, a projective transformation is first
applied to obtain an initially corrected intermediate image for further processing. If you are
curious, you can see the triangulation of the source and target images displayed on the target
after transformation by clicking on the menu item "Graph-Toggle" on the Control Point Menu
before transformation:
You will see the target triangles in green overlaid on the source triangles in blue, with the
target triangles numbered in the order in which they were processed. Occasionally, the
triangulation in target and source may differ, leading to an erroneous result in some parts of
the image. You can prevent this by moving a control point or adding one so that the
triangulation is unambiguous. To do this, you must select one of the other transformation
options such as Automatic before trying the move, since local triangulation does not permit
moving a control point when it is active. The programme computes the ratio of the area to the
perimeter of each pair of source and target triangles as a measure of their similarity.
If these ratios differ by more than the percentage tolerance which can be chosen here, the
target triangle is used without modification. When processing completes, the number of
triangles which have been replaced by the target instead of using the source will be shown.
The higher the tolerance, the fewer the number of triangles which will need replacement, but
the image may be smeared in those triangles which are ambiguous in source and target. The
default value of 10% should be tried first. If too large a percentage of the triangles are
rejected, then you can reduce this by lowering the tolerance.
Fischler-Bolles:
This option should be used when you have but three control points or if you have height and
camera information. See Transformation for further details.
Interpolation:
232
Nearest neighbour interpolation (Coarse) chooses the colour or greyscale value of the
nearest picture element in the source image for placement in the target image. For high
resolution images, this is the fastest method, and it usually gives adequate results.
Bi-linear interpolation (Medium) computes the colour or greyscale value to place in the target
from the neighbourhood of the four pixels nearest the transformed coordinates in the source
image. It offers somewhat better sharpness for fine lines and structures, but there may be
some blurring in the image background if it is quite oblique.
Spline interpolation (Fine) computes the colour or greyscale value to place in the target from
16 neighbours of the transformed coordinates in the source image. The interpolation function
preserves fine detail better than the other methods, but computation is considerably slower.
Output Appearance and Colour Depth Preferences:
A wide variety of output options are offered. These are:
Overlay source and target white:
Using a coloured or greyscale source and a black and white target, usually a map, where
white areas of the map and the pixels of the source coincide, the pixels are written to the
target. If a black line is encountered in the area of the pixels of the source, it is written in white
to the target. This is the most common option used to make the source and the target contrast
well.
Overlay source and target black:
Using a coloured or greyscale source and a black and white target, usually a map, where
white areas of the map and the pixels of the source coincide, the pixels are written to the
target. If a black line is encountered in the area of the pixels of the source, it is written in black
233
to the target. This is the complement of the method above.
Overwrite target:
The pixels of the source overwrite those of the target.
Merge source with target:
When the target contains colour or greyscale data as well as black and white areas, the pixels
of the target are always retained except when white, in which case they are overwritten by
those of the source. This merges target and source pixels without overwriting one with the
other.
Blend source and target:
This option should be used when a greyscale or colour source partly overlaps a greyscale or
colour target. It will blend the pixels of both with a progressive linear ramp from the moment
the overlap is first encountered. This reduces the seams which are otherwise visible when
making mosaics from images having different brightness or colour values.
White background:
The source is superimposed upon the target and all target pixels outside the source area are
changed to white regardless of their previous value.
Black background:
The source is superimposed upon the target and all target pixels outside the source area are
changed to black regardless of their previous value.
Mix source with target:
The source and the target are mixed in variable proportions in their overlapping areas. The
percentage of each is selected interactively before the transformation starts.
Insert Source in target:
The opposite of merge. The source is inserted only into non-white areas of the target.
XOR source with target:
A mathematical exclusive or operation is performed on the pixels of the source and the target.
This option should only be used if it is difficult to see one or the other in some areas. Although
the overlap will always be visible, its appearance may not be satisfactory.
Output Colour Depth:
By default, AirPhoto sets the colour depth of a saved output file to that of the input file, except
in the case of a transformed image. You may override this default by clicking on one of the
other colour depths offered. An image transformed to a black and white map is always saved
as a 16M (24 bit) full colour image to preserve colour or greyscale.
234
Geographic Grid Preferences:
More than 50 national and international grids are supported by AirPhoto. You can select
yours here.
GIS Format Preferences:
Options for creating the files needed for reading output from Geographic Information System
programmes or supplying input to them may be selected here:
235
You may also select the number of decimal places to be shown on the grid information line
below a calibrated image and in the calibration dialogue box. See the chapter on grids and
calibbration which follows later.
Appearance Preferences:
You can configure the appearance of AirPhoto to suit your tastes.
A choice of file input dialogue types are available. One is compatible with older versions of
the programme which shows an image file along with a directory list, file names and control
file names. The others use a newer style of file selection with or without default selection of
control points stored in a file having the same name as that chosen. With this file selection
style you must change the control point file from the lower toolbar or the control point menu by
choosing the load operation if you have selected no control or don't want to use the default
control file. You may also display "thumbnails" for one or all of the images on a given
directory.
If you check the box called Show All Graphics, all file types supported by AirPhoto will be
shown in the file opening dialogue boxes, thus overriding any entry chosen on the file
preference page.
Although a large collection of less frequently used file types may be imported or exported
using the File Import/Export option, other infrequently used file types such as Adobe
Portable Document Format (PDF) and Postscript (PS) files may be read or written directly
from the file save dialogue window if you first check the Show All Graphics box. This will also
enable you to load some of the lesser used file types directly without going through the import
option. If Show All graphics is checked, then the file saving option defaults to Tiff, but the
other options can be viewed and selected using the file type drop-down menu.
You can hide the toolbar at the bottom of each image or you can even hide the main toolbar if
you want still more space on the screen to show image data. Hiding the upper toolbar will
require selection of some options prior to doing so.
If want AirPhoto to occupy the whole screen when it starts, check Maximize Main Window. If
you want AirPhoto to display all images fully on load, check the box called Show Full View on
Load. Your choices will be retained the next time you start AirPhoto. If you use the right-click
overview image option, you can turn off the display of control points in the overview image by
236
unchecking the box called Show Sample Control.
You can select the shape and colour of the magnifying window used for control, calibration
and height point entry too.
Notes:
With the lower toolbar hidden:
use F3 or the View menu in order to select source or target states. You can only use the
menus to choose all desired operations if both the upper and lower toolbar are hidden. The
Undo option on the Edit menu will only undo the action on the window which has the focus.
To change the focus to another, click on the centre of the desired window.
use F2 or the View menu in order to toggle between a full view and a view at whatever
resolution has been set at the last use of the zoom option.
237
12
Other Programmes
238
Spawn and run other programs from AirPhoto
Other Programmes:
A need frequently arises for image processing functions which AirPhoto does not have such
as drawing, erasing and cloning capabilities which are available in most picture processing
programmes like Photoshop, Paintshop Pro, PhotoStudio etc. You can run any of these
programmes on a currently loaded AirPhoto image without having to leave AirPhoto.
Most image processing programmes will not preserve calibration,control or height points, but
if you run one from this option, they can be saved normally when you close the image as long
as you have not changed the size, orientation or cropped the image in the external
programme.
Click on Spawn Program on the file menu to bring up a pop-up menu which, when used for
the first time, contains only the item Spawn. This will display a dialogue which shows the All-
239
Users programme directory tree as it appears in the Windows Explorer on the left and all the
folders in this tree in the window on the right. The Spawn option is enabled only when an
image is displayed in AirPhoto and any operations apply only to the currently active image if
more than one image has been loaded.
If programmes are activated by short-cuts and are not in folders, these are displayed at the
bottom of the right window when the scroll bar at the right side is dragged all the way down:
240
Click on a folder in the tree to display either sub-folders or all the icons available in this folder.
Usually only one of these will be the executable programme and the others have different
functions.
Click on the icon for the executable programme and it will run. If the programme accepts a
Windows bitmap on its command line, then the currently active window in AirPhoto will be
displayed in the programme itself. If this is a picture processing programme like Photoshop,
you can make any change in the image which the programme supports except those which
affect the size, orientation and for some programmes, the colour depth of the image. This is
especially important if you have attached control, calibration or height information in AirPhoto,
since these will be incorrectly positioned when the image is returned to AirPhoto.
When you save the result in the external programme and close it, the result will now be
displayed in AirPhoto.
If you pass a bitmap to a programme which expects something else on its command lines,
then either AirPhoto or the programme called may hang. To prevent this if you are not sure,
uncheck the PassBitmap check box on the tool bar before you click the programme.
Many picture processing programmes will accept a bitmap on their command lines. If the
programme accepts nothing at all on the command line, then it simply runs normally, but
nothing will be passed back to AirPhoto when it closes. If the AirPhoto image has been
displayed successfully in the programme and then modified and saved, the name of the
programme's executable file will be entered in a list below the word Spawn. The next time you
want to use that programme with AirPhoto data, it can be opened immediately simply by
clicking on its abbreviated name in the drop-down list. There is no need to select it from the
Explorer-like window. This list may contain up to 9 items and is displayed in order of most
recent use. If you wish to clear it, just click on Clear. The list is recorded, and when AirPhoto
is restarted, the choices from your previous session are available for immediate use.
Programmes which are known to accept bitmaps and return them after modification:
ArcSoft PhotoStudio
IrfanView (explicit save is required before closing)
Lview
PaintShop Pro Version 4 or later
Photoshop Version 5 LE
Windows Paint (Accessories)
XnView
Programmes which are known to refuse bitmaps on their command lines:
ArcView
AutoCad
Note:
The Explorer-like display in the left window shows only those folders which are in the All
Users list which may be found by right clicking on the Start button and then choosing Explore
All Users. Some programmes are not installed in this list on installation, but are placed in a
folder which usually has the log-in name of a user. If you want to include these folders in the
Spawn operation, navigate to them, click on the folder next to the name, navigate to Start
Menu, Programs, click on that to open all the programme folders belonging to that name then
drag them to the Programs folder on the All Users list.
241
AirPhoto Companion Programmes:
These are programmes which are freely downloadable from the same Web sites from which
you can download AirPhoto. There are four of them, RadCor, LuminCor, PerCor and
AirPhoto3D, They offer functions which are either not present in AirPhoto itself or are
present with limited functionality.
RadCor:
Offers correction for radial lens distortion in digital cameras or for old film camera lenses with
an option for batch processing of multiple image files from the same camera even with
different focal length lenses.
LuminCor:
Offers extended treatment of luminance problems in very dark or very light parts of images.
PerCor:
Offers perspective correction using a modern algorithm for images which are too large for the
limits normally imposed by 32 bit Windows and hence which can not be given control points in
AirPhoto evenn if the image itself can be loaded.
AirPhoto3D:
Offers three dimensional mouse driven interactive dynamic display of rectified AirPhoto
output when height data has been entered in AirPhoto either manually using contour lines on
a map or from external digital terrain model height files from national mapping services.
Some details and results from these companion programmes are shown in the next four
sections.
242
RadCor: radial lens distortion correction
Modern camera lenses are relatively free of geometric distortion. However, there is always a
small remaining amount even in the most expensive lenses. This should be removed before
transforming an image by using the AirPhoto companion programme RadCor It can be
downloaded from any of the AirPhoto Web sites and installed as a separate programme. It
can be executed directly or from the spawn option in AirPhoto.
Radial lens distortion:
Radial distortion is most visible when taking pictures of vertical structures having straight lines
which then appear curved. This kind of distortion appears most visibly when the widest angle
(shortest focal length) is selected either with a fixed or a zoom lens. It can be adequately
corrected by applying a simple polynomial transformation due to the 19 th century
mathematician and astronomer Philipp Ludwig von Seidel (1821-1896) published by him in
1856 which requires three constants affecting the image content as a function of the distance
from the center and symmetrical about it, hence the name radial distortion.
A very complete discussion with full mathematical background, is given in
http://vision.berkeley.edu/roordalab/VS203BWebsite/LectureNotes/Aberr
ationNotes.pdf
243
Lens calibration:
The correction constants can be computed by photographing a structure or a target
containing known straight lines, both vertically and horizontally. They depend on the focal
length of the lens relative to the length of the diagonal of the image sensor and vary from lens
to lens. For cameras with interchangeable lenses, separate calibration is required for each
lens and for a selection of typical focal lengths relative to a given camera. For a less
expensive digital camera with a non-interchangeable lens, calibration is required only for a
selection of focal lengths. Usually, the most correction is needed for the shortest focal length,
with less correction or none at all for longer focal lengths.
Above is an example of a suitable test subject. RadCor offers an option to draw a grid on the
view for convenience. Distortion of the roof line is readily visible.
Below shows the appearance after setting the three correction constants from the
programme.
244
RadCor also accesses a database called PTLens.dat to correct the distortion of known
cameras. The camera will be detected automatically when an image is loaded, but to use
recent entries in the database you must purchase a license from the Purchase page at
http://epaperpress.com/ptlens
Updates to the database may be found on the Download page at same site. Instructions for
installing the license in RadCor are in a readme file that accompanies the license.
Because of the many cameras and lenses on the market which are constantly being added, it
is not possible to have a profile for every camera and every lens. Therefore, RadCor also
offers some simple tools for calibrating any camera-lens combination if a suitable image is
available for manual correction. Even the extreme distortion of a Fish-Eye lens can be
corrected.
245
Chromatic Aberration:
Cheaper cameras have distortion which varies with colour. This is chromatic aberration.
246
RadCor has a facility for selection of the correction constants for the red, green and blue
components of part of an image image separately at higher magnification which shows the
problem and permits it's partial correction.
In addition to radial distortion and chromatic aberration, there are other types of lens distortion
which affect the quality and geometry of an image which are not radially symmetric. This type
of distortion (tangential) is not corrected in RadCor, since it is usually small compared with
that due to radial lens distortion at the typical image resolutions of digital cameras.
Vignetting:
If the distribution of light at the sides of the image is not the same as nearer to the centre,
these portions of an image appear to be darker. The programme can correct for simple
symmetrical radial vignetting sometimes present at very wide angles or when lens hoods are
used.
247
LuminCor: correct luminance in dark / bright areas
The dynamic range of digital camera sensors and film is limited. Under-or overexposure in
extremely dark or light areas can be corrected in AirPhoto in its extended colour correction
option.
Correction can also be carried out with the stand-alone programme LuminCor which offers a
larger screen area on which to test parameters and batch image treatment for many pictures
at once. It can be spawned from AirPhoto or run independently. Below, an early morning
satellite image has been treated so that otherwise invisible features can be seen clearly.
248
PerCor: perspective correction for very large images
PerCor is a simple programme for the rectification of perspective distortion. It requires two
images along with a set of matching points (control points) for each. A single image may also
be used and corrected arbitrarily to create a new image of the same size.
However, it can rectify images which are much larger than those which can be rectified by
AirPhoto, because it uses a different data structure for storage of images and control points
and also supports up to four processors working on four parts of the image simultaneously. It
can also deal with images where no map is available. Control point files from AirPhoto and
PerCor are identical and may be used interchangeably.
It can transform to a white or black background:
and a nominal grid can be written to the result.
249
A map may be used as a target as in AirPhoto, but metric calibration and grid options are not
available.
This technique is useful for correcting distortion in images of oil paintings or paintings under
glass which have been photographed using a camera flash at an angle to avoid reflections or
when a suitable position for the camera for a non-distorted result is unavailable:
250
PerCor can also be used when no target is available for an approximate perspective
correction, e.g. for photographs taken at an oblique angle of paintings in museums:
A white blank image is created, control points transferred at the corners of the distorted image
transferred automatically, and the image rectified.
251
AirPhoto3D: 3D display for AirPhoto
AirPhoto3D is a programme for three dimensional interactive moving display of images
rectified in AirPhoto
An accurate map, scanned, digitized or in vector format which has been calibrated in one of
the more than 50 national grids supported in AirPhoto for which you have height data or
contour lines is required.
Heights are needed for rendering the terrain in the area of the map. You can enter these
manually from contour lines on the map using the facilities in AirPhoto, or if you have access
to digital terrain data from a national or other mapping agency, you can import height data.
Heights thus entered or imported can be displayed in AirPhoto.
In AirPhoto, transform your image to the map normally.
252
Then In AirPhoto, press F8 to display the heights you have imported or entered from an
external source.
253
Spawn or open AirPhoto3D , open the file with the transformed image, and AirPhoto3D will
interpolate the height data for the map which must have the same file name as the map but
with the file extension ".hgt" to a digital terrain model (DTM) contained in a greyscale image
with increasing brightness corresponding to higher points.
The programme will then use the image and DTM data to render a three dimensional model
on the screen. You can then orient this image and "fly" around or through it to view all its
features from any viewpoint. The programme offers the options of displaying the heights in
colour and showing contour lines either in black or white outside the image area.
254
You can orient and scale the image with the mouse as required.
255
You can make a mosaic from multiple images in AirPhoto and then superimpose this in 3D.
256
GIS programmes and AirPhoto
Warning:
Align all scanned calibrated images to their grids before any processing or any addition of
control transformation and before using any results in a GIS. Otherwise significant errors may
appear in the geographic coordinates in the GIS. AirPhoto will attempt to detect
misalignment when a file is closed, but detection may sometimes fail.
Making a rectified bitmap background for a GIS:
Note that in order to use this facility, your GIS must be capable of saving an image as a
bitmap, preferably in black and white. If your GIS only allows colour bitmap output, use a
suitable image processing program like Photoshop, Paintshop Pro, Lview etc. to convert the
bitmap obtained in the following procedure to black and white. You may also try the
conversion routine in AirPhoto.
Make the bitmap in the GIS a suitable custom size for later use. Place calibration and control
point markers on a blank screen, selecting different point symbols for control and calibration.
Small crosses are appropriate. These marks are needed in AirPhoto to guide you in
positioning its calibration and control points. The order of these operations depends on your
GIS.
Image resolution.
An image has a size given in side length pixels, no more, no less. It has no "dots per inch"
(dip) as given in some programs. And unless specifically requested, AirPhoto never changes
an image's output size (except by scaling or rotation). Similarly, AirPhoto doesn't change what
the scanner sends on as a temporary bitmap when you scan via AirPhoto's TWAIN interface,
and of course the size of input images are never changed either.
There are no 'DPI's for any image regardless of what the programmers at ESRI, MapInfo,
Corel or HP and elsewhere seem to think. DPI is a simple concept related to a device like a
printer. Printers actually make so many physical dots per inch though these may not
necessarily be on a square grid. Strictly speaking manufacturers shouldn't use 'dpi' for their
scanners either, but since many make both, it's become a replacement for the real thing.
With 25.4 millimetres to an inch, on a printer, 300 dip is 11.81 pixels per millimetre (300/25.4)
or 84.6 microns per pixel.
Pixels per inch (mm.) which is what you actually change when you change scanner
resolution. Screens can also have "pixels per inch" if you take the physical display size into
account, but not dots per inch since they have no dots in the same way that a printer does.
The same image on a 15" screen will have more pixels per inch than it will on a 21" screen
and of course the individual pixel will be larger on the larger screen.
Therefore, when dealing with problems of image resolution which may happen when using
AirPhoto in conjunction with a GIS programme, use the Info entry on the file menu to find out
what is really going on in the images which you can read in or may have created.
You cannot judge this from what you see on the screen. You must use the Info command
from the File menu to see what the true input resolution of your map file is, and then arrange
for this to be at least 3000 x 3000 pixels if you want decent results on details. Otherwise,
results after transformation will look "pixelated" or blocky.
Usually, a problem occurs when you scan your map at insufficient resolution, or you obtain
your maps in digitized form from programs like MapInfo or ArcView which by default output
their images only at a screen resolution equivalent to printing at 72 dip This is far too low to
257
use in AirPhoto.
You must use at least the equivalent of 300 dip in your scanner, or arrange for other
programs to supply maps with at least 3000 pixels on a side (three to four times screen
resolution), preferably more. You should print output at least 300 dip, on an A3 printer if you
want to retain full map resolution.
You must specify an image size in millimetres in MapInfo for example which is large enough
to obtain the resolution in the output bitmap which you require. Other GIS programs or image
treatment programs may use different techniques and terminology. Experiment, and then
examine the results with Info to see what the images are really like, and don't worry about
any numerical values for images unless they are being output to some kind of physical
medium which has a defined physical size in the metric or English system. Then you can think
meaningfully in terms of pixels per millimetre or meters per pixel or their English equivalents.
If you need a larger image in order to obtain higher apparent resolution in your GIS, you can
use the Scale, Crop and Transform
option to make it. You should be aware of the fact that the larger image does not have higher
accuracy, but it may permit you to print output in your GIS at a useful scale.
Saving your work:
Save control files either via the control point menu Save or by clicking on the
SaveControlPoints button will now save all control points from all visible windows. Previously,
only those from the active window were saved.
Exiting the programme using either the Exit option on the file menu or by clicking on the little
red door on the toolbar will save all control, height and calibration files for all files currently
open if anything has been changed.
If one of the GIS output types ArcInfo/View, MapInfo or Idrisi has been selected, then these
will be saved whenever a window containing calibrated is closed if either the file is not
present, or a change in calibration has been made or the Setup option has been changed to
one of the above after a previously calibrated file was loaded.
Closing the programme by clicking on the X in the upper right main window corner or via AltF4 is as before an "Emergency" exit and will not save anything.
MapInfo:
MapInfo's conventions do not conform to any known normal image processing conventions. It
uses its own 'metaphor' which is totally incompatible with all professional image processing
programs including AirPhoto. Here are some guidelines to translate the bizarre vocabulary
of MapInfo into the normal image processing conventions used in AirPhoto.
If you do not want a large expanse of white area around your final transformed photograph,
shrink the window size of your image in the GIS so that you can just see all the calibration
and control points. Export this window as a bitmap, making sure to select a suitable size.
The size should be at least the physical size of your photo in MapInfo. For example, in
MapInfo you can specify an export size in millimetres - a size of 400 mm wide is a good
option for a 270 mm aerial photograph (MapInfo automatically selects the height). Convert
this bitmap to black and white format if required. This will become your target in AirPhoto to
which your aerial photo will be fitted.
MapInfo specifies its sizes in physical units (millimetres or centimetres). By default, it
produces a 24 bit true colour output file. When preparing a target in MapInfo, set the screen
resolution to the highest which your display system will support. Then select the largest
258
physical output size which MapInfo will produce or up to about a meter or so and export the
MapInfo data as a bitmap. Check the result with the Info option from the AirPhoto File menu
and verify that the side length of the file which MapInfo has produced is greater than the side
length of the file you want to use as a source. If this is not the case, go back to MapInfo and
make whatever changes are required until the image is big enough. If you don't do this, you
will lose resolution when making a transformation to a MapInfo produced target. Then open
the MapInfo file in AirPhoto and set the output resolution to 2 colours if your MapInfo target
is black and white. Then save the image under a new name. This will be your new 2 colour
target. This step is needed to overcome MapInfo's use of a 24 bit true colour default file which
AirPhoto will convert to 256 colours every time you load it, wasting time and memory.
Remember to turn the output option colour depth back to 256 colours when you have
converted the MapInfo image.
Open this GIS target bitmap in AirPhoto. Open the air photo to be transformed in AirPhoto
too. It will be the source.
Enter the control points normally on the air photo. Copy these control points from the air
photo to the GIS created bitmap. Move them over the control point markers you made for
them using the F9 or Move control point option from the control point menu. This will give you
the same number of control points in the air photo and in the GIS bitmap, and all will be in
place for subsequent transformation of source to target.
Calibrate the calibration marks you made on the GIS created bitmap in AirPhoto using the
grid system you are using in your GIS. Save the calibrated bitmap with its control points and
calibration points under a new name with SaveAs for safety. You will now have a .tab, .doc or
.wld file created by AirPhoto with appropriate values for the GIS. You will also have the .cal
and .ctl files which AirPhoto requires for transformation and calibration.
Set the output option to Overwrite in Setup, so that the calibration and control point marks in
the GIS bitmap will be overwritten by the pixels of the air photo after transformation if you
don't want to see your GIS drawn calibration and control markers. If you want to see them,
use either black or white option in Setup, whichever gives you the most satisfactory result. Do
not use Merge.
Now transform the air photo (source) to the calibrated GIS bitmap (target) normally. You may
wish to experiment with different transformation options to get the best fit of the air photo to
the layers of the GIS. If you are using a vertical air photo in hilly terrain, you will probably find
that the Multi-Point option in Setup gives the best result. You should enter a large number of
control points, the more the better for this example.
Save the target GIS bitmap after transformation when you finish under yet another name for
safety so that you can repeat these operations if you make a mistake or you wish to choose
different parameters. You can now import the transformed target bitmap into the GIS for
further use with the layers and other options available in the GIS.
ArcView/ArcGis
ArcGis/View World files with a three place alphanumeric extension (old DOS 8.3 format) will
now be read in addition to the previously supported reading of those with a "w" appended to
an extension with three or more places. However, a four or more place extension will always
be written when ArcInfo/View is chosen in Setup.
Some versions of ArcView may use similar nonsensical resolution conventions to those used
MapInfo. They should be treated similarly.
Using GeoTiff or World/Tab/Doc files:
With many GIS programmes, you may load a GeoTiff file. This may be preferable to using the
259
native "World, Tab or Doc" files read by these programmes especially if you have problems
with geo-referencing. AirPhoto can write a GeoTiff file for nearly all the coordinate systems
supported by the programme. It can also read and write GeoTiff referenced in GPS WGS84
or GRS80 latitudes and longitudes, either in decimal degrees or in degrees, minutes and
seconds. If you are using satellite imagery and need to reference over a meridian grid
boundary, it may be possible to do so by using a latitude/longitude grid instead. See the
discussion on satellite imagery
Other sources of georeferencing:
For the United Kingdom's 1:10000 (ca. 10,000 sheets) and 1:25000 (Ca. 2800 sheets) raster
scanned maps, both ArcView/Gis and MapInfo georeferencing files (.tfw and .tab) are
available for download from the Ordnance Survey's web site:
http://www.ordnancesurvey.co.uk/oswebsite/products/georeferencing/aboutpopup.htm
l
Notes:
All the GIS programmes listed above assume that the map is neither rotated, skewed or has
any other form of distortion such as paper shrinkage. Therefore, the files which they use do
not contain as much information as an AirPhoto calibration file which compensates for all of
the above defects which are common when using scanned maps. Furthermore, ArcView/Info
and MapInfo do not use the Zone number if this is required by a chosen grid. They only
record the grid coordinates of the upper left corner and the scale in the X and Y direction.
ArcInfo for Unix records two rotation parameters as well, but these are not used by the
Windows version although they remain in the file.
AirPhoto will read an extant GIS calibration data file, MapInfo TAB, ArcView TFW/JPW etc.
and the calibration data in a GeoTiff file automatically when a map or orthoimage with the
same name is opened. It will then compute a preliminary calibration for it. When AirPhoto
closes, it will create its own calibration file (CAL) and only use that for further re-openings.
You may add additional calibration points if you wish and the superior accuracy of AirPhoto's
calibration scheme will then override that of the original GIS calibration. However, there may
be slight differences if you do this and then open the map in the GIS again.
260
Import / export / edit RDA control points
Warning:
Be sure to choose your grid (usually UK- BNG) before using this option. If no grid has been
chosen, you will receive an error message. If you are using a scanned non-digital map, you
**must** use the Align to Grid option on the Grid menu at least once especially so if you are
planning to use your results with a GIS, or geometric accuracy will be reduced or in extreme
cases be useless.
Control point import and export is intended for users of programmes which contain this
information in so-called RDA files which are used with a programme for mapping in the UK.
Note:
The file menu of the import/export dialogue box offers a choice of importing control,
parameters and calibration from an extant RDA file, or you may load control information from
any currently loaded image.
After loading, you may also load calibration and map control data from any scanned map file.
You may also export any parameter set as well as all control point values to a new RDA file.
You can also use the information to create a new target image with parameters chosen as
described below.
If you wish to import RDA file material for further processing in AirPhoto:
Open the image to be treated in AirPhoto first. This will usually be a TIF image, so you may
wish to select this option in Setup.
Click on Import/Export on the image's control file menu.
When the Import/Export dialogue opens, click on the File menu of this dialogue box, and then
on Import.
Select an RDA file from anywhere in your machine. It's control and calibration will be loaded
for use with the current image.
If necessary, modify the values in the scale and other fields just as you would do normally
when using an RDA file programme to enlarge, reduce or centre an area of interest.
Click On Create new Target on the file menu. This will make a blank, scaled and calibrated
image in the chosen grid system.
Click on OK to close the import/export dialogue box. If you click on Cancel, all files will be
cleared.
Use the transform option of AirPhoto to make the rectified result in the blank image. If you
choose a black background, the result should be nearly identical to that produced by a
programme which uses RDA files. The white background choice gives you a rectified image
which is similar to one produced by AirPhoto.
If you wish to load AirPhoto data for the image you have on the display for possible
editing:
Click on Load From Image on the file menu. This will transfer the control file data to the table.
Then click on Load From Map to transfer the control point information to the table. A dialogue
box will pop up to permit you to select the appropriate AirPhoto image. You may then change
any of the control point data items (not the ID numbers) and set an output scale if you wish.
Clicking on OK after this will create a blank scaled and calibrated image as above which may
then be used for transformation normally.
If you wish to export an RDA file for further processing in a programme which uses
files of this type and have imported your data:
After making any desired modifications in the various fields, simply click on the File menu and
then on Export. You will be offered a dialogue box to choose the name of the RDA file. The
data, including enabled or disabled control points will be written to the file whose name you
have chosen. If you go on to transform the data in AirPhoto, please note that this must be
saved as a Tiff file with the output option selected in Setup for 256 grey levels, or the RDA
programme may not be able to read it correctly.
You may also save loaded data to an RDA file as above. However, in the programme which
uses these files, if there are more than 12 control points, only the first 12 will be visible. There
are no limits on the number of control points in AirPhoto. In addition, the control points
themselves may have heights which can be used when making a DTM along with imported
DTM material.
When you load an RDA file, its title will be shown. If you load data from the current image, its
file name will be used as a title, but you can change this if you wish, and it will be exported to
a new RDA file if this option is chosen.
262
Output scale, pixels/inch when printing, the east and north grid values of the origin, and the
size of a new target image in pixels may be chosen just like in a program which normally
works only with RDA files. The distance to the north-east corner of the new target in meters is
then shown when these parameters are changed.
If you have loaded an RDA file, you will also see values from an RDA file which display the
focal length of the imaging lens in pixels, the image and the aspect ratio if these are present,
but they are not used. If you plan to use a digital terrain model with Fischler-Bolles
transformation, these values must be loaded in Setup. You can load RDA-compatible height
files (.dtm) after you have created a target using the Import Heights option on the main
window's DTM menu and create the DTM there. The created DTM may not be identical with
that created by a program which uses RDA files since the algorithms used are different.
If you load the information from the currently displayed image and a chosen map, the scale
will now be shown in meters per pixel:
If you change the scale, the image width and height values will change too. If you change the
scale to a value which is less than half of the original value in meters per pixel, it is
recommended to change the interpolation option for transformation in Setup to bi-cubic spline
to avoid jagged lines in a transformed result.
The control points of both image and map are shown in tabular form:
263
The table shows each control point present in the image and map files. A control point may be
disabled by unchecking the box at the right if desired. Unlike a program which normally uses
RDA files, there is no limit to the number of control points, and you can scroll downward
through the table by dragging with the mouse or with the PgDn key if there are more than
twelve of them. If you have chosen a geographic grid which requires a zone number, an
additional column will be shown, and control point values may be in different zones if you are
working near a meridian strip boundary. If you are working with a GIS to obtain map control
values, you may copy a value from the GIS display to the clipboard and paste it into the table
if you wish.
You may also choose the background colour of a newly created target here.
264
Appendix 1
Installation
265
Installation notes
Stand-Alone Installation:
You must have administrative rights to install the program under Window NT, 2000, XP or
Vista. If you do not have these rights, ask a person who does to conduct the installation for
you. An administrator must also set read/write access rights on the AirPhoto directory and its
sub-directories setup and plugins, either manually or using the automatic option in the
installation programme.
You must reinstall the programme to enter an access code if you have downloaded and
installed an trial version. You must use only the access code which you have received via email.
Codes from versions 1 and 2 of AirPhoto are not valid for version 3.
Access and special codes:
To install AirPhoto permanently, you must first run the program airegister.exe which installs
RegAir3 and run it. Stand-alone versions of AirPhoto will run only on the machine on which
RegAir3 has run. The network version may be installed on any number of machines attached
to a single network server. RegAir3 is needed only once for the first of these.
RegAir3 requires a special code which must be copied from the e-mail which you an e-mail on
request, and this must be pasted into the special code field on the registration form to permit
saving the form content to an encrypted file. This is necessary to prevent spammers from
using your data. The special code for RegAir3 is not the same as the access code for the
installation programme.
The encrypted text generated by RegAir3.exe contains an identifier which is used together
with the installation access code which you will receive via a second e-mail. On installation or
re-installation, this is compared with the identifier of the computer created by RegAir3. Only if
they are identical will the installation be successful.
If you wish to use AirPhoto on more than one machine in stand-alone mode, you must run
RegAir3 on each of these separately and obtain a unique access code for each machine. The
access code does not depend directly on the physical hardware, but you should back up your
operating system with all system data to external media or to a network in order to restore it if
you have to replace your hard disk and re-install your operating system.
Download the registration (airegister.exe) and installation (airfoto3.exe) programmes from: :
http://www.uni-koeln.de/~al001/airdown.html
{Univ. of Cologne, Germany}
http://super5.arcl.ed.ac.uk/baspmirror/airdown.html
{Univ. of Edinburgh, Scotland}
http://www.baspsoftware.org/airdown.html
{Vancouver, Washington, USA}
Installing:
Before you start, open the Task Manager (Ctrl, Alt, Del) and look at the processes which are
currently running. If you see:
Cthelper.exe - a Soundblaster Driver
running, terminate this process before starting, or the installation programme may fail.
266
Then select the registration code from the e-mail letter using Notepad and copy it to the
clipboard. It has 6 groups of four numbers and letters which must be entered without error.
There are 8 groups if you are installing a network version. Copying to the clipboard ensures
correct entry after pasting in the installation program's registration code field.
For safety, print the e-mail letter with your registration code and save it to a file on a diskette
or CD as well as to your hard disk.
Run airfoto3.exe to begin to install the program. This will unpack the setup files and overwrite
any existing setup files from earlier installations. The installation program will start
automatically.
Next:
When the installation program starts, it presents a general information screen. Clicking on
Next brings up the license agreement to which you must agree. Read this carefully, for it
contains vital information concerning your update and support rights. It is also installed as a
file called license.txt which you may later print with Notepad if you wish.
Click on Next to get to an explanation of the main registration screen. Read this carefully too.
Then click on Next to get to the registration screen itself.
Your name or the name of the person who is responsible for the operating system will be
shown. Do not change this in any way! It is an internal part of your registration code.
Tab to or click on the registration code field and paste in the code you received into it either
by typing Ctrl-V or using a right click. Verify that all 6 groups of 4 digits and letters are
present.
Registration codes contain the numbers 0 to 9 and the letters A to F. They do not contain any
other letters. If you must type in these numbers and letters (not recommended) take care not
to type the letter O in place of the number 0 or the lower case letter l in place of the number 1
or the registration code will be rejected. The registration code is case dependent. Do not
change it.
When you enter a valid registration code, there are no time or usage limitations on the
programs on the machine on which you have installed them. If all is correct, the installation
program reports that a permanent version will be installed.
If you have made a mistake, or if the machine is not the one on which you filled out the
registration/activation form, or if you are installing an update and the hardware has been
modified in the interval since the last installation, you may have to obtain a new registration
code by resubmitting the registration-activation form via e-mail generated by the
downloadable file airegister.exe.
If you enter a code incorrectly and do not correct this, the program will run only as a trial
version provided you have not installed a trial version previously. If a trial has expired, the
installation program will not copy the files needed to run AirPhoto and the installation will fail.
Please note that the registration code is machine-specific. It will not work on any machine
other than that on which the registration form was filled out.
Important note for system administrators of WinNT/2000/XP installations:
If there are to be multiple users of a given machine, the installation program includes an
option to place the icons to run AirPhoto and its Help and Tutorial on all local user menus.
267
This permits installing just once for all users of a given machine. To activate this option, click
and enable the check box 'Install icons for all local users' in the 'Select Program Folder'
dialogue box during installation. If the box is left unchecked, the icons will be placed only on
the menu of the administrator installing the program and will be unavailable to other users.
A user with administrative rights should set the permissions on the AirPhoto directory and
subdirectories appropriately for all local users after installation. This can be done
automatically by the installation programme itself.
After the installation completes, you should see the following dialogue screen:
268
Leave the Set Permissions check box checked. The installation programme will attempt to set
permissions on the AirPhoto directory and its subdirectories as well as all files to full control
for administrators and to read, write and execute only for all other users. In rare cases,
depending on your local security settings, operating system version or file system, this may
fail. If that happens, non-administrator users can not run the programme properly. Hence it
may be necessary to set permissions manually. Use either the command line programme
CALCS.EXE available in Windows NT/2000/XP. An extended version from the Windows
Server Resource Kit, XCALC.EXE is also copied to the directory Program Files\CommonFiles
on your boot disk. An administrator can modify the permissions using one of these tools if the
permissions and inheritances do not meet local needs.
Under Windows XP and Vista, these operations can also be done using the Windows
Explorer.
To set, view, change, or remove special permissions for files and folders open the Windows
Explorer, and then locate the file or folder for which you want to set special permissions.
Right-click the file or folder, click Properties, and then click the Security tab if it is visible.
To display the Security tab if it is not visible:
Open Folder Options in Control Panel.
Click Start, and then click Control Panel.
Click Appearance and Themes, and then click Folder Options.
On the View tab, under Advanced settings, clear the check box "Use simple file sharing".
Turn on read/write/modify/execute access rights on the AirPhoto directory and its subdirectories setup (enable viewing hidden files), plugins, csvdata. Deny all other rights.
Administrators should check this with CALC.EXE or XCALC.EXE in command line mode. If all
is well you should see something like:
Q:\>cacls AirPhoto3
Q:\AirPhoto3 BUILTIN\Users:(OI)(IO)C
BUILTIN\Users:(CI)(special access:)
READ_CONTROL
SYNCHRONIZE
FILE_GENERIC_READ
FILE_GENERIC_WRITE
FILE_GENERIC_EXECUTE
FILE_READ_DATA
FILE_WRITE_DATA
FILE_APPEND_DATA
FILE_READ_EA
FILE_WRITE_EA
FILE_EXECUTE
FILE_READ_ATTRIBUTES
FILE_WRITE_ATTRIBUTES
BUILTIN\Administrators:(OI)(IO)F
BUILTIN\Administrators:(CI)F
Q:\>
If you install the stand-alone version directly on a network server (not recommended), only
one instance of the program will run. The special network version of AirPhoto which permits a
metered number of simultaneous users with separate installations on all client machines
269
should be used instead.
Make certain that the latest service pack for your operating system has been installed
regardless of which operating system you are using. If you must report an error, please open
the Help-About-Diagnostics menu item and dialogue box, and there create a diagnostic file
which contains the information we need for diagnosis.
Note:
Permissions need only be set on NTFS file system disks. They are not used if the installation
is done on a FAT32 or FAT16 file system.
Network Installation:
You must have administrative rights on all workstations and your server to install the program
under Window NT, 2000, XP, Vista or Win 7. If you do not have these rights, you must ask a
person who does to conduct the installation for you. You may install on one central server or
on one machine on a peer-to-peer network used as a server.
Principles of installation:
If you are running WinXP or earlier on the first workstation, the installation program scans
through all network drives looking for the AirPhotoNetCode directory and when found, it writes
airphoto.naf and initialises it for the allowed maximum number of simultaneous users the first
time it runs. If it cannot find the AirPhotoNetCode directory, the installation fails.
Note:
If you are running Vista or Win7 on the client, the security measures in these versions of the
operating system block access to an external server until the installation has finished. In this
case, please ask for the programme AirNAFInit, a small stand-alone programme which will
create the airphoto.naf file in a pre-existing AirPhotoNetCode directory or attempt to create
that directory if you have set the permissions on the network drive to Read-Write-Create. You
can create a directory on the network server with any desired name, and this will appear to
the user as a virtual drive letter when you use the Map Network Drive OS function..
When a user opens an installed AirPhoto network version, the program searches for
airphoto.naf on the AirPhotoNetCode directory, and when it is found, it is opened and
AirPhoto raises the user count by one. When the user closes AirPhoto, the process is
repeated, and the user count is decremented. Every user must have the capability of reading
and modifying the airphoto.naf file. AirPhoto itself is always installed on the user's workstation
for maximum performance. Only the NAF file is installed on the server. Do not install AirPhoto
on the server.
Sample installation procedure:
Differences in server operating systems and differing treatment of user rights or permissions
make it difficult to create an installation technique which is valid for all of the many different
arrangements and operating systems which may be encountered.
As an example, here is a sample installation procedure tested using Windows XP on client
workstations and a Windows 2003 Server and a Linux Samba server which may serve as a
guide for other kinds of servers.
Phase 1, Setting up the server:
1) Log on to the server from any workstation or at the server itself as an administrator or root
user, depending on what the server OS requires.
270
2) If you already have a directory on the server to which normal users can read and write and
whose rights (permissions) can be passed on to a subsequently created directory by
inheritance, and if you can see this directory at user workstations, you may go directly to step
3.
Otherwise, create a directory which you may call anything you like on any disk which can be
made available to all users and give it read and write (modify) rights for all users, but not
creation rights. Make sure that this directory passes on its rights by inheritance to a newly
created directory and any file it contains. Here we shall call this directory AirPhoto, but that
name is of no importance.
3) Create a subdirectory of the AirPhoto directory which fulfils the requirements of 2) and
name it AirPhotoNetCode. This name is binding.
4) Assign read and write (modify or change) permissions to the directory which contains
AirPhotoNetCode for everyone. Do not assign creation permission except for administrators.
As a subdirectory of AirPhoto, AirPhotoNetCode must inherit these rights. If this does not
happen automatically on your server, you must implement this inheritance explicitly.
5) On any workstation capable of communicating with the server of your choice, open My
Computer, Tools, Map Network drive as an administrator.
6) If not already assigned as above, assign a drive letter to the AirPhoto server directory, for
example X: to \\server\AirPhoto. Use Browse to find this directory if need be.
7) Enable "Reconnect at Logon"
8) Test the permissions on the newly created AirPhotoNetCode directory by creating a small
ASCII file with Notepad on it as administrator. Set the permissions on this file to read/write for
everyone. Then log off and log in as a normal user and try to edit this file with Notepad. If you
can edit and save it, then the permissions on the directory and the file are correctly set. Erase
the test file if all is well. If not, go back to 2) and change the rights for the directories
appropriately.
This completes Phase 1 to create the AirPhotoNetCode directory and set its rights so that
airphoto.naf can be read and written by all.
Phase 2, Setting up the first workstation:
1) Select the registration code from the e-mail letter using Notepad and copy it to the
clipboard. It has 8 groups of four numbers and letters which must be entered without error.
Copying to the clipboard ensures correct entry after pasting in the installation program's
registration code field. For safety, print the e-mail letter with your registration code and save it
to a file on a diskette or CD as well as to your server's hard disk.
2) Start the downloaded AirPhoto distribution file airfoto3.exe.
3) airfoto3.exe may be written later to a CD for installation on other machines. Alternatively,
you may also copy it to any directory on your server on which you can read and write and
create files as an administrator.
4) AirPhoto's installation programme will start for the first time. After replying to the questions
on the first few screens, paste the full access code as described above into the Registration
Code field when it is shown and click Next.
5) The installation programme then copies all AirPhoto files to the local machine on which
you are working and creates the NAF file airphoto.naf on the
\\Server\AirPhoto\AirPhotoNetCode directory. This file will only be created once. You must
271
have file creation rights on the server to do this. If this creation process fails, the installation
will fail with an error message.
6) Check the assigned read and write permissions for all users to airphoto.naf as well as
to the directory on which it resides as described above.
Warning:
This assignment of rights to server directories and airphoto.naf cannot made by the AirPhoto
installation programme. You must do this manually in accord with the rules of your server's
operating system.
7) AirPhoto is now ready to run on the local machine for the first time. Start and test it to make
sure that all above has gone without error.
This completes Phase 2 to create the primary AirPhoto installation on a workstation and the
metering file airphoto.naf on the server.
If the automated setting of local workstation permissions described above for stand-alone
installations was not used (Set Permissions box unchecked), then this installation can only be
used by an administrator for the moment, because permissions for others have not yet been
set. Should that be the case, follow the procedures for setting the security permissions
manually.
Phase 3, Setting up the other workstations:
1) On all workstations on the network on which AirPhoto is to be used by normal users, repeat
Phase 1 items 5 to 7 so that the workstation can find, read and write airphoto.naf.
2) Run airfoto3.exe either from CD or from the server if you have copied the file there. Paste
the registration code into the registration code field as in Phase 2, step 3 for each workstation
installation.
4) After the installation completes, you must now assign normal user permissions for the
AirPhoto directory and its subdirectories on the workstation so that these can be read, written
and modified, but not deleted if automatic permission-setting (Set Permissions box
unchecked) has not been used or if the permissions are not set properly. After assignment,
check this using CALC or XCALC as described above.
5) Test as in Phase 2 step 6.
This completes Phase 3.
Repeat Phase 3 on all workstations.
Data Installation:
Never install data which will be modified on a server. Always copy such data to the
local hard disk. It is also advisable to copy even read-only data to the local disk, or
operation may be very slow when the server is busy. Always assign shared rights to
read-only data on a server or the programme will appear to freeze if someone else has
opened such data on another machine.
272
Registering and reactivating AirPhoto
Access Code for Registration:
An access code for permanent installation and re-installation of updates to AirPhoto is
required. Further details will be sent to you along with your code when payment has been
received. All details are given in the registration programme's help file. When you have your
code, just reinstall the program and enter it in the registration code field. A second download
is not needed if you have kept the files you downloaded from the Internet.
Download the file airegister.exe if you haven't already done so, and use it to install the
secure registration program on the machine on which you intend to run AirPhoto permanently
if you want the stand-alone version. If you plan to take the network version, use it using its
defaults to create the data needed for our database. In stand-alone mode, this program
creates a unique machine identifier which is part of the access code for permanent use. This
is included in a small encrypted file called emailreg.asc which must be sent as an attachment
to an e-mail letter. The letter need not be sent from the machine on which AirPhoto is to run,
but the file must be created on this machine with the registration programme unless the
network version is required. Download links are:
http://www.uni-koeln.de/~al001/airdown.html
{Univ. of Cologne, Germany}
http://super5.arcl.ed.ac.uk/baspmirror/airdown.html
{Univ. of Edinburgh, Scotland}
http://www.baspsoftware.org/airdown.html
{Vancouver, Washington, USA}
The registration programme permits you to fill out a form with all the data needed, and when
this is completed, the program creates an encrypted file using the modern Rijndael AES 128
bit algorithm. The encrypted file is called EMAILREG.ASC. This ASCII file can only be read at
the Unkelbach Valley Software Works and by no one else. This file can be found on the
registration directory after the registration is finished. See the help file which accompanies the
registration programme for all further details.
Activation:
The stand-alone version of AirPhoto is tied to the machine on which you have registered
using the secure registration programme. The network version may be installed on any
number of machines on the same network. If you choose the stand-alone version and modify
or change your hardware, you may have to re-activate AirPhoto using the registration
programme once again to obtain a new code. There is no charge for this. If you want to use
the programme on more than one machine, you must register each of these separately using
the registration programme installed temporarily on each machine. You will receive a
separate registration code for each machine. In this case, a machine need not be connected
to the Internet, since only a small file must be transmitted to us for registration or activation,
and this can be copied and sent from any other machine using e-mail.
273
Updating or Upgrading AirPhoto
Updating:
Updates for AirPhoto are announced via direct e-mail to registered users and those
designated by a registered user. Updates are numbered sequentially. The current version
number is visible on the uppermost line of the AirPhoto display, e.g. 3.36.
The number in front of the decimal point is the major version number, of which there have
been three since 1997. The second number after the decimal point is the update number.
The currently available update may be found and downloaded from any of the AirPhoto web
sites,
http://www.uni-koeln.de/~al001/airdown.html
{Univ. of Cologne, Germany}
http://super5.arcl.ed.ac.uk/baspmirror/airdown.html
{Univ. of Edinburgh, Scotland}
http://www.baspsoftware.org/airdown.html
{Vancouver, Washington, USA}
The number is shown in the current version table at the top of the download page.
Download the file airfoto3.exe from whichever server is nearest you and run it with
administrator rights. Paste a valid AirPhoto access code in the registration field and allow the
re-installation to complete normally. This completes the updating of AirPhoto for this machine.
If you have more than one machine, repeat this process on each machine. The registration
programme is not needed for updates.
Upgrading:
If the major version number of your installation of AirPhoto is lower than that of the available
update, an upgrade is necessary. This requires re-running the registration programme and
payment of fees described in the pro-forma invoice section of the help for registration.
Installation of the upgrade after receiving a new access code is as described in the previous
section for a new installation.
274
Test Data for AirPhoto3 and AirPhoto 3D
Data for testing an installation can be found as the self-expanding compressed file airdata.exe
on any of:
http://www.uni-koeln.de/~al001/airdown.html
{Univ. of Cologne, Germany}
http://super5.arcl.ed.ac.uk/baspmirror/airdown.html
{Univ. of Edinburgh, Scotland}
http://www.baspsoftware.org/airdown.html
{Vancouver, Washington, USA}
It includes:
hh35.jpg
Roman marching camp near Alpen, Kreis Moers, Germany photographed in July 1970 by
Irwin Scollar. Original 5” x 5” negative in the airphoto archive, Rheinisches Landesmuseum,
Bonn (now Rheinsches Amt fuer Bodendenkmalpflege).
hh35.ctl
Control points for rectification of the above.
hh35.ppt
Framing rectangle for hh35.bmp for Fischler-Bolles transformation.
hh35map.jbg
Part of the German 1:5000 (Deutsche Generalkarte) map with the excavation cuttings of 1974
(see reference) redrawn on it.
hh35map.ctl
Control points for the rectification of the above.
hh35map.cal
Calibration points for the above using the Gauss-Kreuger 3 degree grid.
hh35map.hgt
Spot heights for the above.
hh35map-trans.jpg
Transformed image for AirPhoto 3D
hh35map-trans.hgt
Heights of transformed image
275
Appendix 2
Hardware & Operating Systems
276
Hard- and software optimisation
Hardware:
AirPhoto is an exorbitant user of hardware resources. In order to obtain maximum speed of
computation, no attempt is made to conserve them. Therefore, you need a machine with a
fast processor and lots of physical memory. AirPhoto may also be installed on modern
laptops if the processor and internal display card are in the workstation class.
A quad core processor with at least 3 GB of physical memory should be present. If you are
running a 64 bit version of Windows, then at least 6 GB of physical memory should be
installed.
Select a modern graphic card with at least 512 MB of on-board memory with dual display
output (DVI or HDMI). The LCD display should have at least 1680 x 1050 pixel resolution,
preferably more. Dual displays are recommended.
At least two fast SATA disks with 1 Terrabyte or more each are preferable. AHCPI and native
command queuing should be enabled in the BIOS or the EFI.
These should be organised as follows:
Primary boot disk:
First partition for the operating system only (preferably Windows 7), plus a paging file stub of
200 Mb.
Second partition for all application programmes including AirPhoto, each installed in its own
directory.
Second disk:
A dedicated first partition for the main paging file equal in size to installed physical memory.
Second Partition for data.
The more memory in the display card, the larger the images will be which you can process
quickly. This limitation is both display card and driver dependent, and in addition also
depends on the operating system and the choice of colour depth in the Control Panel. The
installation programme requires that the display be set to True Colour (24 or 32 bits).
A scanner with at least 600dpi resolution and a colour printer with equivalent resolution is
required for good results. It is preferable to have at least double this resolution on both
devices. You must have at least 100 GB of free disk space always at hand. Use the Info
command on AirPhoto's File menu to examine the sizes of the files scanned and produced if
you have problems before reporting them.
Dual Monitors:
Dual LCD monitors with two display cards are highly recommended for the convenience
offered in simultaneous display of map and image when selecting control points and many
other operations. Dual monitors are supported automatically by AirPhoto when two monitors
attached are detected. The program then displays a wide screen spread over both monitors
so that source images and maps can be viewed on the separate monitors.
277
Operating System:
Windows 7 is preferable. Vista may also be used. AirPhoto will also run under Windows XP
Service Pack 3, but performance will suffer.
Dual Monitor Setup for separate display cards or simulated separate cards on dual
head cards:
Right Click on the desktop and choose Properties from the menu.
Choose Settings.
Two monitor frames should be visible, with #1 active as shown by a thick border.
Click on # 2. It should now show a grey area.
Check the box "Extend my Windows desktop on to this monitor Click the Apply button.
Click the Identify button and the numbers 1 and 2 should be shown for a short time.
Click OK
AirPhoto Setup:
After re-installing AirPhoto.
Open AirPhoto
If it opens in both screens simultaneously, then you are finished.
Otherwise:
Click on Options, Appearance
Click the Maximize Main Window check box.
Close AirPhoto
Reopen AirPhoto
Click on Options
Clear the Maximize Main Window check-box Close AirPhoto
Reopen it, and the display should now extend across both screens.
Multiple Processors:
Multi-threaded support is automatically used in AirPhoto for transformation of images if more
than one processor or a hyper-threaded processor is detected. Two computational progress
bars when transforming are visible if two or four processors are present. These advance
independently while each processor treats a different part of the image. Processing priority
has been raised so that maximum speed is attained. This feature is active only on machines
running Win/XP/Vista/Win7 and when either two or four physical processors or a hyperthreaded processor is present and enabled.
If you have to process many very large very oblique colour images with considerable
background detail and your machine's motherboard has a socket for a second processor, you
278
may find the feature offers an increase in speed of the order of 50%.
You can see the behaviour of the processor. Open the Task Manager (cntl alt del), click on
Performance. If you have a single processor you may see:
Single processors with speeds greater than 2Ghz simulate dual processors if what Intel calls
hyper-threading is turned on either by default or via the machine's BIOS or if you have Quad
or Dual-Core processors.
279
This looks like:
in the Task Manager window.
The number of CPU activity windows may be one, two or even four when physical dual
processors are available. On a machine with two physical processors, both of which support
hyper-threading or a quad processor you may see:
280
On some machines, the hyper-threading feature may be disabled in the BIOS. Try turning it
on. If the machine does not boot or behaves erratically, then reboot and turn it off.
Touch-pads on Laptops:
Some laptops need tuning of their touch-pads to use the programme easily and without
problems. You should look for all data pertaining to the touch-pad which you can get from the
manufacturer's handbook or Web site, and if working under Windows-XP, look for anything
relevant to the pad hidden on the task bar in order to fine tune it. For really fine control in
placing control and calibration points, you may find it easier to use a real mouse plugged or
simply use a USB mouse.
Software:
Operating System Files:
Choose the NTFS file system for all partitions under /XP/Vista/Win7.
Paging Files:
This discussion is taken from Microsoft Knowledge Base ID: 314482. The Knowledge Base
may be consulted without charge on the Microsoft web site.
For a Microsoft Windows NT and Windows 2000 version of this article, see ID 197379.
The paging file (Pagefile.sys) is a hidden file on your computer's hard disk that Windows XP
uses as if it were random access memory (RAM). The paging file and physical memory
comprise virtual memory. By default, Windows stores the paging file on the boot partition (the
281
partition that contains the operating system and its support files). The default, or
recommended, paging file size is equal to 1.5 times the total amount of RAM. This article
discusses how you can configure the paging file for system optimization and recovery.
To enhance performance, move the paging file to a different partition. When the paging file is
on the boot partition, Windows must perform disk reading and writing requests on both the
system folder and the paging file. When the paging file is moved to a different partition, there
is less competition between reading and writing requests.
However, if you completely remove the paging file from the boot partition, Windows cannot
create a dump file (Memory.dmp) in which to write debugging information in the event that a
kernel mode STOP error message occurs. This can lead to extended downtime if a debug
procedure is necessary to troubleshoot the STOP error message.
The optimal solution is to create one paging file that is, by default, stored on the boot partition,
and then create one paging file on another, less frequently accessed partition. Additionally, it
is optimal to create the second paging file so that it exists on its own partition, with no data or
operating-system-specific files. By design, Windows uses the paging file on the less
frequently accessed partition over the paging file on the more heavily accessed boot partition.
An internal algorithm is used to determine which paging file to use for virtual memory
management.
When you place a paging file on its own partition, the paging file does not become
fragmented, and this counts as another definite advantage. If a paging file resides on a
partition that contains other data, it may experience fragmentation as it expands to satisfy the
extra virtual memory that is required. An unfragmented paging file leads to faster virtual
memory access and greater likelihood of a dump-file capture that is free of significant errors.
Note: If your computer contains multiple hard disks, you can also create a paging file for each
hard disk. When information is distributed across multiple paging files, the hard disk controller
can simultaneously read from and write to multiple hard disks. As a result, system
performance is enhanced.
For additional information about how to move the paging file in Windows XP, click the article
number below to view the article in the Microsoft Knowledge Base:
307886 HOW TO: Move the Paging File in Windows XP
For additional information about how to set performance options in Windows XP, click the
article number below to view the article in the Microsoft Knowledge Base:
308417 HOW TO: Set Performance Options
Warning:
Always install AirPhoto in a separate directory. Never install other programmes or their
data in the AirPhoto directory or sub- directories of the AirPhoto directory. These will
be erased when updating! Preferably, install it in a different partition from that used by the
operating system and its paging file. Place your data on a separate hard disk if you have one
or in a separate partition if you don't. Never store your aerial or mapping data in the directory
which contains the program or in one of its subdirectories or it will be erased when updating.
282
Additional Hardware Recommendation:
Since hard disk problems are common, it is advisable to use pluggable SATA hard disks in
special boxes installed below the DVD drive on a desktop machine.
These may be had in groups with 3 to 5 drive bays.
283
The disks are screwed into small frames which plug into connectors at the back of the drive
bay box. These are in turn connected to SATA ports on the motherboard with the usual SATA
cables. Power is supplied from DVD drive power plugs. If there are not enough SATA ports
on the motherboard, a PCI storage controller can be used for the additional drives.
It is recommended to separate operating system, programmes and data to separate drives
plus one as a spare if there is room. Backup software may be used to duplicate (clone) any
of the drives to additional drives for which spare frames may be purchased. This is one of the
fastest ways to save the operating system, programmes and data or transfer them to a
different machine if the motherboard fails. The same software can be used to make
automatic daily or even more frequent backups of disks and partitions.
If the motherboard BIOS supports the AHCI (Advanced Host Controller Interface) mode and it
is enabled, then the spare drive can be plugged and unplugged without turning off the
machine. This also usually enables NCQ (Native Command Queing) which increases disk
read and write speeds.
284
Appendix 3
Reporting Problems
285
Diagnostics, internal and external
All registered users are entitled to support according to the terms stated in the file License.txt
which you accepted when you installed AirPhoto with a permanent access code. Support is
via e-mail only.
Internal Diagnostic Report:
If you experience something which appears to be a bug, try first to repeat the sequence of
actions which led to the difficulty, and note down each step taken. When the problem is visible
on the screen, click on:
Help, then click About and you will see a dialogue box:
Here, click on Diagnostics.
You will be presented with a screen showing the state of the machine, the operating system,
and details of any files which may be open. On the File menu of this screen, click on Save
and the content of the screen will be saved to a file called AirDiags.txt which will be placed
on the main AirPhoto directory by default, although you may change this if you wish.
Write an e-mail letter to the address below with a brief description of the problem and an
exact list of each step taken which led up to it. Attach the file AirDiags.txt to your letter.
Problems can only be dealt with if they can be reproduced exactly by the programmer of
AirPhoto. This requires that all conditions which led up to the difficulty and the state of the
machine and the operating system be reproducible.
Send problem mail with the AirDiags.txt file, click here:
[email protected]
External Diagnostics:
If you experience problems with an installation, download and install the AirDiagnostic
programme from the AirPhoto web site or one of it's mirrors.
The programme, AirDiagnostic is offered to help with installation problems. It shows essential
286
details about an installed version of AirPhoto. For a stand-alone installation, this looks like:
The network version has additional entries:
Most importantly, it shows the networked drive and directory where airphoto.naf has been
287
loaded as well as the number of maximum and current users.
Registered users of the network version may request a special code which when pasted into
the field of that name to enables complete deletion of AirPhoto registry entries, files and
directories:
To use this feature, you must be logged in as a member of the administrator group or an error
message is shown:
This may be helpful if a change is made at the network server regarding the location of the
network access file thus requiring re-installation of all network clients. It can not repair a
locked access slot.
Clicking on the SaveAll button creates data which can be saved to an ascii text file which may
be sent as e-mail to help in diagnosing installation problems.
Typical output from the programme on a network installation after using the SaveAll option
button looks like:
Compiled: 12.7.2007
First Run Date: 19.7.2007
First Run Time: 10:56:07
Last Run Date: 19.7.2007
288
Last Run Time: 10:58:22
Max Run Count: Unlimited
Installation Kind: Permanent
Max Days Valid: Unlimited
Max User Count: 2
Current User Count: 1
Version Number: 3.27
Installation Directory: Q:\AirPhoto
Net Directory: Y:AirPhotoNetCode\airphoto.naf
Runs Remaining: Unlimited
Days Remaining: Unlimited
Y:\AirPhotoNetCode Everyone:F
Everyone:(OI)(CI)(IO)F
Everyone:(OI)(CI)(IO)C
Y:\AirPhotoNetCode\airphoto.naf Everyone:F
Operating System Windows XP Service Pack 2
Physical Memory 2046 mb
Available 1544 mb
Number of Processor(s) 4 Type 586 Level 15 Revision 519
Display: Color Depth 32 bits. Screen: 1024 x 768 pixels
Multiple monitors present: 2
Hard Disk
Capacity
Free Space GB
C:\ NTFS
6.0
1.0
D:\ NTFS
19.5
8.0
G:\ NTFS
232.9
156.8
O:\ NTFS
1.0
0.6
P:\ NTFS
7.0
3.1
Q:\ NTFS
6.0
4.1
R:\ NTFS
6.0
2.1
S:\ NTFS
7.3
3.4
W:\ NTFS
68.4
5.7
In addition to all hardware details, it shows all important information about the network access
file and the user rights for the directory on which it has been installed. Setting these rights
correctly is usually the major problem when working with a network version. The results
above are shown for a Windows server. Other servers such as Novell Netware or one of the
many different Linux/Unix servers may not permit the programme to display these.
289
AirPhoto's internal structure and problem reporting
It is often difficult to retrace the steps that lead to a rare problem. Think of each image, map,
or import from any source as a separate object with separate properties. That's exactly how
it's programmed internally. The windows on the screen which show them are the containers
for those objects and have nothing to do with each other at the start of things. Single image
operations like modifying contrast or brightness affect only the object which has the focus.
However, some simple and some very complex properties need to be shared jointly by all
images, and these variables or records are kept in a common container which you can't see
because it has no window. Indeed it is possible that modifying something in one image (map,
imports) which modifies the hidden container will affect another image, for example changing
the grid system when making a mosaic or changing the output file type options or a GIS
output option.
Multiple image operations like disabling control points must affect all images even though the
control point data is kept in a separate file for each image. However adding or deleting a
control point must not affect the other images. Tweaking a control point affects both images.
However, disabling a calibration or height point is unique to the image in question, so
disabling one in an image does not affect the others even if the height or calibration points
have the same numbers.
By computer science convention, each image is called a child of the main programme
window, and each child is unique. But some things like transformation require interaction
between two children such as sharing the sets of control points which govern the
mathematics of transformation. That in turn is affected by the type of transformation chosen. It
is in this shared information that changes in the order of some operations that errors occur.
Hence a rare problem is usually due to an unanticipated order of doing things which can
cause trouble or failure, and it's hard to replicate this unless every single step is is listed
systematically. The finite state machine in AirPhoto which tries to block user errors can be
considered two-dimensional, since only transformations and other actions are involved on two
images at a time at most.
AirPhoto is a toolbox, not an automatic gearbox, and even those can lead to bad skids on
glare ice if the driver accelerates or brakes too violently.
290
Appendix 4
Theory &Technical Details
Edge Extraction
References:
Canny, J., A Computational Approach to Edge Detection, IEEE Transactions on Pattern
Analysis and Machine Intelligence, Vol. PAMI-8, No. 6, November, 1986. 679-698.
Shen, J. and Castan, S., An Optimal Linear Operator for Step Edge Detection, Computer
Vision, Graphics, and Image Processing: Graphical Models and Understanding, Vol. 54, No.
2, March, 1992. 112-133.
Sobel, I., Feldman,G., "A 3x3 Isotropic Gradient Operator for Image Processing", presented at
a talk at the Stanford Artificial Intelligence Project in 1968, unpublished but often cited original
see Pattern Classification and Scene Analysis, Duda,R. and Hart,P., John Wiley and
Sons,1973, pp 271-2
For a detailed critique of the simpler algorithms and source for the method used in Airphoto
see:
Ando, S., Consistent gradient operations, IEEE Transactions on Pattern Analysis and
Machine Intelligence, Vol. PAMI-22, No.3, March, 2000, 252-265
An on-line overview of edge detection and extraction can be found at:
http://en.wikipedia.org/wiki/Edge_detection
For comparison of some of the many hundreds of available edge extraction/detection
algorithms see:
Heath, M.D. et. al. A robust visual method for assesing the relative performance of edge
detection algorithms, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.
PAMI-19, No.12, December, 1997. 1338-1359.
292
Colour Cast
Almost all colour transparency films, colour print papers and colour negative films use a
multilayer subtractive colour construction similar to that shown above. The uppermost layer
contains a yellow dye whose density is proportional to the amount of blue light, the middle
layer has a magenta dye with density proportional to green light, and the lowermost layer
contains a cyan dye with density proportional to the red light during exposure. A yellow filter
layer prevents blue and ultra-violet light from reaching the two lower layers. A positive orange
masking layer is also usually present in modern colour negative films to correct for
imperfections in the response of the cyan dye. All colour dyes have limited lifetimes since
their molecules break down under the influence of temperature, light and reaction with
adjacent materials in the layers in the film. The cyan dye which is responsible for the red
colour in an image was especially unstable in films manufactured prior to new developments
in the mid-1980's.
Henry Wilhelm, in his monumental work on the stability of colour images classifies the effects
into several different categories. The graphs shown below are taken from his book. In Chapter
5 he writes:
"Once a colour photograph has been properly processed, the most important factors in
determining the useful life of a colour film or colour print are the inherent dye stability and
resistance to stain formation during ageing that have been built into the product by its
manufacturer. While it is true that even the most unstable materials can be preserved almost
indefinitely in humidity-controlled cold storage, only a small fraction of one percent of the
many billions of colour photographs made around the world each year will ever find their way
293
into a cold storage vault."
Extended Colour Correction has been written to aid in dealing with the majority of images
which have not made their way to an archival vault. It is an imperfect solution to the problem,
since there is no way of restoring information which has vanished utterly, but it does help if
there is enough left for the methods offered to be reasonably effective.
1) Dark fading
which affects each dye separately. Here is an example which shows the deterioration of the
cyan dye with time on several different films and papers:
2) Dark staining
produced by deterioration of the residual otherwise colourless dye couplers in various films
and papers:
Wilhelm writes:
294
"Dark fading of course is not caused by darkness (light fading, on the other hand, is caused
by light and UV radiation). Dark fading simply refers to the fading and staining that take place
in a colour material during storage when light is not present. Given the inherent dark fading
stability characteristics of a particular material, the rate of dark fading and staining is
determined primarily by the ambient temperature and, usually to a lesser extent with modern
materials, by relative humidity. Air pollution and contamination from unsuitable storage
materials can also play a part in the deterioration of colour photographs, but these factors are
usually much less important....Improper processing of colour materials can also impair image
stability; for example, use of non-recommended, exhausted, or contaminated chemicals,
inadequate washing, omission of the proper stabilizer bath when one is called for, and so
forth."
"The principal cause of yellowish stain formation in Ektacolor and other types of chromogenic
prints with similar magenta dye couplers has been attributed by Robert J. Tuite of Kodak and
others to discolouration of unreacted magenta coupler; the amount of magenta coupler that
remains after processing is inversely proportional to the amount of magenta dye present in an
image....
Historically, stain formation during dark storage has been a problem with all chromogenic
materials except Kodachrome. (From its inception in 1935, Kodachrome has been an
"external-coupler" product in which the colour-forming dye couplers are placed in separate
cyan, magenta, and yellow developer solutions, instead of being anchored in the film
emulsion itself. After processing and washing, no unreacted couplers remain in Kodachrome;
for this reason the film remains completely free of stain, even after prolonged storage under
adverse conditions.)"
Light fading due to exposure of an image to light, shown here for a representative material
artificially aged with strong illumination:
Wilhelm writes:
"Actually, the slow but inexorable chemical processes involved in "dark fading" and "dark
295
staining" continue whether or not a colour photograph is exposed to light on display or during
projection. Light fading is a separate process altogether. When a colour photograph is
exposed to light on display, both light fading and dark fading occur simultaneously. The fading
and staining that afflict a photograph over time are in fact a combination of these two basic
types of deterioration."
Light fading and dark fading also differ in the way that they affect the appearance of the
image. In light fading, a disproportionate loss of density occurs in the lower densities and
highlights. Visually dark parts of an image can remain more or less intact while lighter areas
can become totally washed out. With modern materials, light-induced stain formation
(distinguished from light-induced fading) is of less concern when prints are displayed than is
staining when the prints are stored in the dark. In dark fading, highlight detail is not lost but an
overall colour shift occurs, caused by the cyan, magenta, and yellow dyes fading at different
rates, and is exacerbated by an ever-increasing level of yellowish stain. In addition, there is
both an overall loss of contrast and a discolouration caused by stain that is most
objectionable in highlight and low-density areas
.... A further feature of dark fading versus light fading is that a dye with good stability in the
dark may be comparatively unstable when exposed to light. In Kodak Ektacolor papers, for
example, the magenta dye is the most stable of the three dyes in the dark, but is the least
stable in light under typical indoor display conditions."
"Because colour negatives are not viewed directly, but rather are used to make prints,
analysis of colour negative fading (and the ramifications of d-Min stain or density losses) in
the future will be based on the effects they have when printed. A certain amount of negative
density loss and colour imbalance can be satisfactorily adjusted for during printing, but more
severe negative deterioration cannot. Historically, both still camera and motion picture colour
negative films have had particularly poor dark fading stability - the logic being, one might
suppose, that most colour negatives are printed soon after processing so that fading of the
negative in later years will not matter in most cases. ...
Kodachrome clearly is the most stable transparency film in dark storage; the film is especially
outstanding in terms of its total freedom from yellowish stain, even after extended ageing In
spite of Kodachrome's unequalled dark storage stability, it has the worst projector-fading
stability of any slide film on the market."
As can be seen from the diagram below, the changes in density are also a function of the
original starting density, so that appearance varies considerably from image to image.
Correction methods must adapt to this conditions.
296
Dark fading and staining usually produces a yellow-orange cast which Extended Colour
Correction can reduce with several different methods.
297
Light fading usually produces a blue-green cast along with an overall lightening of the image
which Extended Colour Correction can reduce with the ACE method.
In addition to defects due to age and dye changes, grey cast due to fog or poor visibility can
also be reduced with ACE and Sharpen.
298
© Rog Palmer
299
Maps and coordinates
Where on Earth is it?
Millions of oblique air photos have been made in the past, and many more will be made in the
future. Each photo is a unique record which contains spatial information of historical value. It's
worth as a record depends on being able to find features on the ground and to protect them
from destruction or for scientific study. Thus, the spatial data in the photography needs to be
related to its position on a large scale map. The map in turn, is an abstraction and
generalisation of the true appearance of the terrain, and it is based on a transformation of that
appearance relative to the three dimensional shape of the Earth. The techniques for making
such transformations, which are erroneously called projections for historical reasons, have
long been based on higher mathematics and hundreds have been invented during the long
history of map making.
Positions on the Earth are described in terms of a grid system appropriate to a sphere,
designated as latitude and longitude. For reasons to be discussed below, large scale maps
use other grid systems which have certain more desirable features and which take into
account the true shape of the Earth to some extent. Usually, the positions of the sites visible
in aerial photographs are recorded in one of these grid systems, appropriate to the maps and
measurement techniques available.
Read a general discussion of the problem
http://www.ordnancesurvey.co.uk/oswebsite/products/georeferencing/aboutpopup.html
Latitude and Longitude:
Latitude and longitude express the co-ordinates of a point any place on the Earth. Historically,
since it was thought that the Earth is a sphere, these quantities are expressed as parts of a
circle in degrees, minutes and seconds or in decimal form. In a few countries like France, the
circle is divided into 400 parts so that a decimal division of each quadrant is possible. In
reality, the Earth's cross section is not a circle, but rather to a first approximation. it is an
ellipse with the horizontal radius roughly 1/300th longer than the vertical radius. This pole
flattening is due to the Earth's rotation and its consequent affect on it's shape. In reality, the
shape of the Earth is extremely complex, and for the most precise measurements, this has to
be taken into account.
Latitudes and longitudes have historically been measured relative to an initial reference point
in each area to make a datum, the name given in geodesy to define an ideal mathematical
surface equal to average sea level in the area of interest. The initial point of the datum was
assigned a latitude and longitude based on astronomical measurements, as well as a height
above an ideal chosen ellipsoid. Hence, the datum consists of both the parameters for the
ellipse and the chosen initial point.
300
The real surface of the earth is anything but smooth, and the terrain, the ellipsoid and the
ideal surface, the geoid, depart considerably from each other. Satellite position
measurements which are valid over the whole surface take this into account and the ellipsoid
used is usually different from that used in a national map system. Hence latitudes and
longitudes obtained from them are not the same as those obtained from classical
measurements as recorded on large scale maps.
From this it can be seen that latitudes and longitudes of the same point depend on the choice
of the initial point. Even with the same ellipse, a different datum will shift a point's position for
the same latitude and longitude, or put differently, the same point will have slightly different
latitudes and longitudes when using the maps of adjacent countries.
301
When used with satellite measurements, heights are also taken into account. The earth's
surface is by no means uniform, and gravity itself varies considerably over wide areas. This
affects all height measurement:
Failure to take a change of datum into account can result in very significant errors as shown
in this diagram for the position of a single point using different datums given in the on-line
reference by Dana (illustration, see below). Nearly every national mapping system has its own
datum, or one limited to a small region.
Summarising, for high accuracy, the datum must be specified when using latitudes and
longitudes. One can convert between one datum and another using several different
transformation techniques, providing that a number of constants are known. These constants
must be determined through a long series of satellite measurements by a national mapping
service. They are made at a number of points throughout the area of responsibility and a least
squares fit is taken to relate classical latitudes and longitudes to those determined by the
satellite data. Depending on the number of points used and the time taken for the
observations, different sets of constants may be offered. These are tabulated in the on-line
references given at the end of this paper.
302
There are three widely used methods for transforming from one set of latitudes and longitudes
to another depending on which constants are available and what accuracy is required. The
simplest technique, very well illustrated in the on-line reference by Dana, is to transform to a
geocentric Coordinate system and then back again to the ellipsoidal coordinates of the
second system. This is sometimes called a Bursa-Wolff transformation. It can be done in one
operation when three constants are available using the Molodensky transformation, very well
described in the on-line documentation offered by the US Defence Mapping Agency, now
called NIMA. For the highest accuracy, 7 constants are required, and a Helmert
transformation is used. This is described in the paper by Reit (1997). A very clear
mathematical explanation for those interested is given in the on-line Australian documentation
(see below).
The only system which is truly universal is that used in the Global Positioning System (GPS).
For many years, the GPS positions themselves were deliberately made less accurate for
military reasons. Nowadays, accuracy depends on the system itself and the hardware used to
receive signals. For a good discussion of the problem of Earth measurement see:
http://www.ordnancesurvey.co.uk/oswebsite/products/georeferencing/aboutpopup.htm
l
In AirPhoto, "Number crunching" for all conversion is done in Maplib32.dll It may be copied
and used independently of AirPhoto by any program or database which can run procedures or
functions in a 32 bit Windows dynamic link library. Maplib32.dll is installed in your Windows
System directory by the AirPhoto installation program. In AirPhoto for all grid systems, a 7
parameter high precision (sub-centimetre error) Helmert 3D transformation between national
and GPS datums are available with a few exceptions.
A 3 parameter lower precision (Ca 2-3 meters) transformation between national and GPS
datums is offered for all other supported systems. The North American Datum, NAD27 is
supported with an average value for the whole of the USA and Canada, giving an error of the
order of 5-6 meters. These low precision conversions use the constants from the Molodensky
transformation offered in the US Defence Mapping Agency's MADTRAN and its successors
for Windows from the National Imagery and Mapping Agency (NIMA) DTCC and GeoTrans
(details below). Whenever more accurate 7 parameter Helmert 3D constants become
available, these will be replaced.
In AirPhoto, Norway-Sweden-Finland GPS (WGS84 Datum) compatible grids are supported
directly with sub-millimetre precision and require no conversion. Special transformation
techniques worked out by Reit and Ollikainen (see references) are used. Norway is currently
the only country using GPS compatible coordinates directly 1993 to construct the grid system
used on its large scale maps, but others may change over during the coming years.
For highest accuracy, map calibration points should also be given a height above the geoid.
As a first approximation, height above mean sea level obtained from local system contours
may be used, since geoid heights are rarely known. If zero height is given for a national
system, conversion errors to GPS values will be somewhat higher than those described
above. Height above the geoid can be obtained for many areas using the DTCC program
from NIMA (see below).
Maps as transformations:
Maps must represent the ellipsoidal shape of the earth on a plane surface. This cannot be
done without some distortion. Small scale maps of large regions were historically 'projected'
from the sphere on to the plane before it was realised in the mid-18th century that the Earth is
not spherical. Thus, the term, "Map Projection" is widely used.
However, the large scale maps used for precise plotting of sites or finds are usually designed
so that angles and distances are distorted as little as possible. This is not possible using most
"projections". Since measurement of angles was and to some extent still is essential in survey
303
operations using theodolites, cartographers from the 18th century onward were concerned
with creating mappings which are mathematical transformations of points on the ellipsoid to
points on the plane constructed such that angles were preserved correctly. This was also of
extreme importance to the military after the development of long range artillery in the 19th
century. Although latitudes and longitudes are usually shown on the map borders, it is
customary to superimpose a rectangular grid on the map whose values can be read as coordinates. This grid is usually designed to preserve angles. Thus, in nearly every, an angle
preserving or 'conformal' grid system was developed for the national map grid.
These grid systems are not 'map projections' , because they are purely mathematical
transformations of the latitude and longitude of points to grid co-ordinates and the inverse.
Each country developed one or more grid systems during the last two centuries with little
regard to what was being done in neighbouring countries. They are widely entrenched and
are not readily changed, since they are incorporated in all land survey data for property
ownership and appear directly or indirectly in millions of documents. They are also the
primary references for the positions of sites found through aerial photography or conventional
means.
A rectangular grid system cannot cover a wide area without severe distortion. Therefore the
surface must be broken up into segments or strips which can be treated in a planar fashion
without too much error. The numbering in such grid systems used in the large scale maps of
all large countries undergoes sudden changes. At the borders of countries using differing map
projection schemes, co-ordinate systems are not the same and transformations are required
from one system to another. In North America, completely different systems were used in the
countries concerned and even within most of the 50 US states in the past. In Africa, Asia and
South America, the colonial heritage is preserved in many different incompatible mapping
schemes. In Europe, there are still as many different systems as there are countries.
These non-conformities make it impossible to conduct a geographic search in a database
across national boundaries or to apply spatial statistical methods to the grid co-ordinates for
sites taken from large scale maps from a wide area. Map numbering and grid reference
schemes are alphanumeric in many countries which also complicates searching in a database
when distance information is required.
One solution lies in appropriate transformations for the various national co-ordinates from the
national ellipsoids to a common reference. In many areas, the GPS (WGS84) datum is the
most reasonable one to use. In Europe, a reference point, the European Datum of 1950
(ED50) was decided upon by international convention. It is located at the geodetic
observatory at Potsdam near Berlin and uses the International Ellipsoid of 1924. However,
most European national mapping systems do not use this datum. In North America, a
common reference point was chosen in 1927 (NAD27) at Mead's Ranch in Kansas with the
Clarke Ellipsoid of 1866. Now, with satellite measurements of precise position available, many
advanced countries are beginning to refer their national systems to the WGS Ellipsoid of 1984
under various local names whose parameters, will not be subject to significant further change.
Small adjustments which account for movements of tectonic plates and crustal uplift in deglaciated regions are needed in high precision geodesy, but these are not significant for most
purposes.
Peter Dana at the University of Texas estimates that almost 1000 different datums have been
in use at one time or another. Parameters for conversion of over 200 of these to WGS 84 are
readily available. The WGS84 system references the gravitational centre of the Earth. Almost
all western countries have readily available maps at scales of 1:25000 or larger, and the sites
are usually referenced to the grid systems used on these maps. In less well mapped areas,
GPS measurements are now widely used to obtain positions.
Ellipsoids:
Although the real shape of the Earth is obtained through accurate satellite measurements
304
today, older ellipsoid approximations obtained astronomically are still widely used in
cartography. One of the early models was due to Bessel whose name is known more by the
functions named after him, than for his activity as director of the Prussian state mapping
service in the early 19th century. The Bessel ellipsoid of 1841 despite its errors survives to
this day in the German, Austrian, Swiss, Dutch, and Swedish mapping systems. The British
physicist Airy made major contributions to the theory of optics, but he too was concerned with
cartography. The Airy ellipsoid of 1822, one of the very first, is still used in the UK and in a
modified form in the Irish Republic. In 1909, J. F. Hayford of the US Coast and Geodetic
survey made measurements within the continental USA which were adopted by the
International Union of Geodesy and Geophysics as the International Ellipse of 1924. This
was used until very recently in Scandinavia, Italy, the USA and is still used in Luxembourg,
Belgium and until 1993 in Norway and Finland. The British geodesist Clarke made several
sets of measurements in widely different parts of the world in the mid-19th century and the
Clarke Ellipsoid of 1866 is still used in the USA while that of 1880 is used in France. In 1942,
Krassovsky published further measurements based on the Pulkovo observatory near
Leningrad and the Krassovsky ellipsoid of 1940 became the standard of the former Warsaw
Pact. All these ellipsoids differ slightly from each other in the values for the Earth's major and
minor axis radii. And all have one or more reference points from which latitudes and
longitudes have been assigned in the past.
Almost every country uses a different ellipsoid and a different datum for its mapping system.
Although differences are small, they are significant enough so that latitudes and longitudes for
the same point will differ somewhat when the ellipsoid and the datum is changed. National
maps usually use an ellipsoid model which provides a best fit for the local system.
Transformations for large scale maps:
Several major types of transformation or projection are used commonly in large scale
mapping, Snyder (1982). The common transformations are to a cylinder wrapped
transversally around the Earth either tangentially or cutting through two parallels of longitude
(Transverse Mercator), to a cone either tangent to or cutting through two parallels of latitude
(Lambert Conic Conformal), and more rarely to a cylinder lying obliquely along a meridian
(Oblique Mercator), and still more rarely to a plane just touching the surface with co-ordinates
projected from the opposite point on the other side of the Earth (Stereographic).
Sometimes the chosen ellipsoid model is first transformed to a sphere, and then another
geometric figure which can be unrolled is mapped from the sphere. Usually, this two stage
process is avoided through direct analytical calculation based on the work of Gauss in the
early 19th century. However there are almost as many methods as there are and were
cartographers! J.H. Lambert, the Alsatian mathematician and cartographer invented or
analysed a number of these projections including the two major ones and published in 1772.
The major mappings are (Grossman (1976), Hake, (1982), Maling (1973), Snyder (1982). :
•
To a cone with a transformation, the cone being then unrolled. These belong to the
family of Lambert mappings and are in use in countries which have a greater eastwest than north-south extent.
•
Mapping to a cylinder which is then unrolled by means of a transformation formula
which is not a geometric projection. These are the Gauss-Krüger mappings invented
by Lambert and their derivative in the UTM or UK national grid system.
305
•
Transformation mapping to a tangent plane from the opposite side of the ellipsoid.
These are Stereographic mappings as used in the Netherlands and a few other
countries and known since antiquity Snyder (1982) states "that it was probably known
in its polar form to the Egyptians, while Hipparchus was apparently the first Greek to
use it." Until the early 16th century it was only used for star maps.
306
•
Transformation of the ellipsoid to a sphere, then taking a transverse cylinder mapping
rotated so that the meridian at a point near the centre of the country becomes the
zero meridian, as used in Switzerland.
•
Purely mathematical transformations which cannot be described by a geometric
figure. These offer lower distortion than the four classical methods above. An
example is the grid system used in New Zealand.
Most countries which have a greater North-South than East-West extent use a transverse
cylinder tangent to a meridian with axis east-west. This is called a transverse Mercator
mapping in English-speaking countries, and a Gauss - Krüger (GK) mapping elsewhere. It is
the most popular for large scale maps. Countries having greater east-west extents sometimes
use a Lambert conformal conic projection originally described by the Alsatian mathematician
J. H. Lambert (1722-1777).
C.F.C. Gauss may have earned his fame in many other ways in statistics and mathematics,
but he earned his living as director of the mapping service of the Hanoverian Kingdom.
Krüger (1912) systematised and revised the original Gauss (1822) design. It is used in the
German speaking and the former Warsaw Pact countries, though with different ellipsoids.
Meridian strips of either 3° or 6° are used as discussed below.
When the transverse cylinder is made slightly smaller than the ellipsoid, it cuts two meridians.
This is the basis for the Universal Transverse Mercator (UTM) system which is the NATO
standard for military maps and is used for recent maps in Denmark, Norway, Italy and the
USA. The UTM system has an advantage over the GK method in that only half the number of
map strips are required to cover the globe with lower distortion than a GK system would
produce for strips of the same width. In the UK and the Irish Republic, a modified form of UTM
is in use.
Both the GK and the UTM systems have the major virtue that angles are preserved locally,
distance distortion is minimised, and the co-ordinate system is Cartesian on a given map
sheet so that only a straight line drawn from border to border in each direction is needed to
obtain the co-ordinates of any point on the sheet. UTM co-ordinates are ambiguous north and
307
south of the Equator, because 10,000,000 is added to them in the southern hemisphere to
avoid negative quantities.
The truncated cone is used for mapping in Belgium, Estonia, France and in some of the older
USGS maps among others. This leads to the Lambert Conformal mapping. It had the
advantage of being expressible in closed analytic form as opposed to the GK and UTM
systems which require series expansions of functions of a complex variable. Back in the 18th
century when it was invented, this was important, since the more sophisticated conformal
techniques which use the series expansions were invented several generations later by
Gauss. In the Lambert Conformal system, angles are preserved, and distance distortion is not
excessive. France uses four truncated cones with slightly different scale factors for the
northern, central, southern parts of the country plus Corsica for its four zones. These are
separate Lambert Conformal mappings.
Belgium uses a modified Lambert Conformal system which has its origin at the old Royal
Observatory near Brussels. It uses the International (Hayford) ellipsoid of 1924 and has but
one zone. To prevent negative values, 15000 is added to the east-west and 5400000 to the
north-south axis. Belgian Lambert co-ordinates are incompatible with the French Lambert
system described above.
The Netherlands is one of the few countries in the world to use the Stereographic projection,
in theory a true projection to a plane from a point opposite The Hague on the other side of the
ellipsoid. Stereographic projections are also standard for polar latitudes above 80° north and
south. Practically, however, a series expansion form is always used. This system should not
be used at even minor distances outside the Netherlands, or significant errors will occur.
The Swiss system is one of a very few countries to use an oblique transverse Mercator
scheme. This offers high accuracy in one single co-ordinate system for the whole country, but
it too should not be used outside the Swiss borders.
All of the commonly used transformations preserve angles well enough and are of sufficiently
low distortion so that linear distance measurements can be made on a map sheet of scales
1:50000 and larger. However, on Lambert Conformal maps, the horizontal lines of the grid are
in fact arcs with such large radii that the departure from a straight line is hardly noticeable.
An exhaustive and well-maintained database giving the parameters of thousands of grid
systems from all over the world can be found at:
http://spatialreference.org/ref/epsg/
It is largely based on the collection of the defunct European Petroleum Survey Group with
user-contributed additions.
Grid reference letter and number combinations:
Grid references are a convenient short-cut to refer to map positions. They are usually two
numbers which are in the Cartesian co-ordinates of the map transformation used. However,
In Britain and Ireland, they are preceded by a two letter code which designates a 100 km side
length square in a modified transverse Mercator system. The first two digits of the 100 km
reference grid are usually dropped. There is also a Military Grid Reference System (MGRS)
for the whole globe with alpha-numeric prefixes. MGRS is used in the MADTRAN-DTCC
program package. In western Germany, Austria, Luxembourg, Italy, the Scandinavian
countries and the former Warsaw Pact, the co-ordinates may be given as x and y values
(sometimes designated R and H for the German 'rechts' and 'hoch') within a given 1:5000 or
1:25000 map sheet. For historical reasons, cartographers outside France use X for northsouth and Y for east-west co-ordinates. In France, the kilometre digits of the Lambert coordinate system appear along the border of the map, but either the name or number or conic
segment of the map must also be supplied to prevent ambiguity. The borders of the French
308
1:25000 maps give geographic co-ordinates in "gon", 1/400th of a circle, but the conversion
by multiplying by 0.9 to get degrees is trivial. The map border markings are based on the
meridian of Paris rather than Greenwich on the older maps, so that a constant has to be
subtracted as well. Newer maps have both Greenwich and Paris meridian markings.
Map naming conventions:
Maps at scales of 1:100000 or larger have widely different nomenclatures, depending on the
country of origin.
A few examples:
Austria bases the zero meridian of its GK mapping system according to the convention of
1634 in the Hapsburg monarchy in the westernmost Canary island Ferro and numbers the
1:25000 maps in 1:50000 squares from 1 to 4 on the military grid. Since 1976, the 1:25000
maps are merely enlargements of the 1:50000 and have a sequential numbering system
starting at the northernmost tip of Austria and proceeding to the south from west to east.
In Britain, the maps are given the two letter combination from the 100 Km national grid, plus
the numbers of the lower left co-ordinates on that grid. Ireland uses a similar scheme but with
different letters and with some squares not implemented.
In Belgium the newer 1:50000 maps are numbered sequentially from north to south on with
1:25000 subdivisions with sub numbering. The Lambert projection is a national one and is not
compatible with the French projection. The 1924 international ellipsoid is used instead of the
Clarke 1880 ellipsoid used in France.
Denmark uses Arabic numbers for the 1:100000, Roman numerals for the numbering of the
1:50000, and for the 1:25000 sub numbers these as Northwest, North-east, South-west and
South-east, using a UTM model although the standardised UTM notation is not followed for
the map names.
In France, the 1:50000 maps are numbered with Arabic numerals for the rows and Roman
numerals for the columns, and these are further divided into four sheets of two half-sheets
each at 1:25000, numbered from 1 to 8, each bearing the name of the principal town in the
1:50000 sheet.
The 1:25000 (TK) maps in Germany are bounded by 6' and 10' latitude and longitude, but the
GK grid is shown. The 1:5000 maps use the GK grid as a border and are numbered using the
first four digits of the x and y co-ordinates in that system. The German 1:25000 maps for
historical reasons are numbered separately with four digits starting in the north and
terminating in the south of the country. AirPhoto's Maplib32.dll offers conversions between
TK numbers and the GK grid. These conversions do not appear in the program.
Luxembourg numbers its maps from 1 to 30 and uses a GK system passing through the
meridian of the city of Luxembourg.
In Switzerland, maps at 1:100000 have two, 1:50000 three, and 1:25000 four digit numbers.
The mapping transformation is a unique variant of GK (see below).
Meridian and latitude strips:
Given this map maker's Tower of Babel, it is not surprising that geographical databases on or
across international boundaries are not easily implemented. Even within a given country,
searches for sites on adjacent but non-numerically named maps is a major chore. The
situation is made even more complicated by the fact that a given transformation may
introduce too much distortion in a large country. Therefore both the transverse Mercator and
the Lambert Conformal methods break the ellipsoidal surface up into a series of meridian or
309
latitude strips. This is shown for the Gauss – Krüger German case in:
for the whole globe.
Seen in detail for a given country like Germany, the strip boundaries at 3° intervals are:
310
The strips numbs begin at the Greenwich meridian according to the central meridian of the
strip, so that West Germany has three strips numbered 2 to 4 corresponding to the 6°, 9° and
12° strips. At the strip boundaries, the map co-ordinate numbers jump abruptly and no
database query system can find adjacent map co-ordinates by simple arithmetic. In fact, none
of the requirements stated above for distance and co-ordinate measurements can be met
near such strip boundaries. For the Gauss-Krüger system used in eastern Europe and
Russia, the strips are at 6° intervals. To add to confusion, the GK maps used in the former
German Democratic Republic have 3° interval strips but use the former Warsaw Pact ellipsoid
and datum so that co-ordinates are incompatible with those across the former Iron Curtain to
the west.
Britain is fortunate in being elongated from north to south, so that only one strip is used
tangentially to 2° west of Greenwich. Although computed using the UTM method, the map
lettering is incompatible with standard UTM nomenclature. Austria has three strips, with the
zero meridian at Ferro as mentioned below and is compatible only with older maps of Spain
(the Hapsburg connection!). The Swiss system with a inclined transverse cylinder centred on
the old Observatory in Bern is independent of all its European neighbours. Like that of the
Netherlands, it is unique in Europe.
Similarly, the UTM map has an overlapping wedge shaped boundary zone every 6° as shown.
Fortunately for the Danes, their country is contained almost entirely within one UTM strip.
311
Norway has the only exceptions in the UTM sysem: These grid zones are uniform over the
globe, except in two areas. On the southwest coast of Norway, grid zone 32V (9° of longitude
in width) is extended further west, and grid zone 31V (3° of longitude in width) is
correspondingly shrunk to cover only open water. Also, in the region around Svalbard, the
four grid zones 31X (9° of longitude in width), 33X (12° of longitude in width), 35X (12° of
longitude in width), and 37X (9° of longitude in width) are extended to cover what would
otherwise have been covered by the seven grid zones 31X to 37X. The three grid zones 32X,
34X and 36X are not used.
312
Grid systems
Nearly all maps use a transformation from the ellipsoid shape of the Earth to a flat surface.
Positions on this surface are given by coordinates which are defined by national and
international mapping agencies. Well over a thousand different grid systems have been
invented in the past, and many are still in use today. Each country has one or more grids and
in some countries these may differ in various regions. See above 3 for further details of the
terms used.
AirPhoto offers direct support for common national grids in Setup and on the Grid menu
from the main toolbar.
For a complete list of national mapping agencies see:
http://whc.unesco.org/en/mapagencies
Some details of AirPhoto supported grids are given here:
Australia:
The Australian grid (ANG84) is standard UTM using the WGS84 ellipsoid and a 10,000,000
offset added to the 'northing', to prevent negative numbers, since all of Australia lies south of
the equator. The older AGD66 grid which is used on the maps of Tasmania is not supported,
since it cannot be readily converted to WGS84.
Austria:
The Austrian calculations use the Bessel ellipsoid of 1841, but the geographic co-ordinates
are shifted to 17° 40' west (Ferro island in the Canaries). A modified Gauss-Krüger
calculation is used for the three meridian strips covering Austria at 28°, 31° and 34° east of
Ferro. The Austrian GK has no added constants, so the R values may be negative and are
duplicated in each strip. Therefore either the strip or 1:50000 map number must be specified
to compute lat/lon from the Austrian co-ordinates. Austrian co-ordinates should only be used
within Austria's national boundaries.
Lloyd A. Brown, "The Story of Maps," p. 283 writes: "In 1634 Louis XIII decreed the island of
Ferro (Hierro) in the Canaries as the prime meridian to be used on all French maps, and so it
remained until about 1800." Also, in the Encyclopaedia Britannica, 11th-13th ed., p. 985,
under "Time, Measurement of": "... a scientific congress, assembled by Richelieu at Paris in
1630, selected the island of Ferro for this purpose [prime meridian] .... Ferro, which received
the authorisation of Louis XIII. on the 25th of April 1634, gradually superseded the others."
(personal communication from the late J. P. Snyder to the author).
Recent medium scale maps of 1:25000 and higher use the UTM grid described below. See:
http://www.bev.gv.at/pls/portal/docs/page/bev_portal_content_allgemein/0200_produkt
e/pdf/utm_folder.pdf
(User registration required)
Belgium:
The Belgian grid uses a modified single zone Lambert Conformal mapping with the
International Ellipsoid of 1924 for the 1972 veresion and a GRS8 ellipsoid for the 2008
version Offsets are added as described above.
313
Egypt:
The Egyptian mapping system of 1907 is divided into four areas called Belts, two west of the
29th meridian, and two east of it.
There is a fifth undocumented “Belt” at the southern end of the Red Belt below 22° 45' N
which has a false Northing designed to prevent negative grid numbers. This is fully supported
in AirPhoto where it has been given the name Red Extended.
Each uses a transverse Mercator projection with different central meridians and different false
Eastings and Northings. The grids appear on maps from scales 1:25000 - 1:100000.
Estonia:
Estonia uses a standard Lambert Conformal system with central meridian at 24° E and two
standard parallels at 58° N and 59° 20' N, with the origin at 57° 31' 0.31945" N with a false
northing of 637500 m. and a false easting of 500000 m. for maps of scale l1:20000 or larger.
A GRS-80 ellipsoid which differs slightly from the WGS84 ellipsoid is employed. For small
scale maps the TM Baltic'93 common reference for Estonia, Latvia and Lithuania with a
transverse Mercator transformation having its central meridian also at 24° E and the GRS-80
ellipsoid. Older maps from the Soviet period use the Gauss-Krueger 6° standard and a
Krassovsky ellipsoid.
314
Finland:
The Finnish grid uses a 3° Gauss-Krüger system with the International Ellipsoid of 1924, but
with a special Finnish Datum, abbreviated KKJ. The KKJ Datum is a slightly rotated, scaled
and translated version of the European Datum of 1950 datum. For compatibility with
neighbouring countries grid systems, the KKJ datum is first transformed to ED50 before
carrying out the Lat/Lon to ED50 calculations, and the inverse transformation is used to
convert Finnish co-ordinates to equivalent ED50 co-ordinates before returning Lat/Lon in the
WGS84 datum. There are three strips, and zone numbers 1-4 are inserted in front of the
500000 central meridian for each, such that the strip meridians are at 15000000, 25000000
etc.
France and Corsica:
France has four currently used grid systems for large scale maps. The first based on the
triangulation of the country during the first third of the 20th century (NTF, Nouvelle
Triangulation Française) uses the Clarke Ellipsoid of 1880. A two parallel (secant) Lambert
conic projection is used with four zones including Corsica. The Lambert zone number (1-4)
must be specified when computing lat/lon from Lambert co-ordinates. It is retained in
AirPhoto to support older maps, but otherwise it should not be used.
315
The modern system, called Lambert 93 is based on the modern GRS80 ellipsoid which differs
only slightly from WGS84. It uses a single Lambert conic secant projection (two parallels of
latitude) and covers the whole country. It is used on modern maps, orthophotos and other
products from the IGN (Institut National de Geographie). A third system uses the Clarke
Ellipsoid like the older NTF grid and the same two parallels of latitude as the NTF zone 2
system, but with a modified false northing so that it covers the whole of the mainland part of
the country. It is called Lambert Extended (étendu) II. It is abbreviated in AirPhoto dialogue
boxes to Lambert E2. A fourth grid of highest precision also uses the Lambert conic secant
with 9 zones, but it is not implemented in AirPhoto.
See:
http://professionnels.ign.fr/DISPLAY/000/526/700/5267002/transformaton.pdf
and the very useful web site Géoportail:
http://www.geoportail.fr/visu2D.do?
ter=metropolehttp://www.geoportail.fr/visu2D.dometropole?ter=
which also offers orthophotos and the French Cadastral Survey maps showing field
boundaries at very high resolution while displaying grid coordinates in Lambert 93, Lambert
316
E2 or lat/lon in real time. 3D terrain display with the boundaries superimposed is also
implemented.
Other maps use a UTM grid:
with three strips covering the country.
Germany: Gauss-Krüger 3° (DHDN):
DHDN is still used on large scale maps in many places. However the rest of the country is a
patchwork of older systems based on the period before World War 1.
In AirPhoto Gauss-Krüger conversion is based on the original equations due to Krüger
(1912) as implemented by Reit (personal communication) and modified for fast Clenshaw
summation of series expansion following a little known method worked out at the Danish
Cadastre in the author's program. Since 8th order coefficients are used, accuracy is in the
sub-millimetre range. The GK calculations use the Bessel Ellipsoid of 1841. It should always
be used in the former west Germany and may be used anywhere else in the world. In
Colombia, South America, offsets based on a datum at the Observatory in Bogotá are added
to the north and east values, but Columbia can not be chosen directly because of
inconsistencies in the documentation.
For historical reasons, Germany is a patchwork quilt of datums and grid systems. Ultimately,
this is scheduled for replacement using a single ETRS89 (GRS80) based UTM grid, but this is
not likely to be completed in the near future.
For details see:
http://www.geodatenzentrum.de
317
Greece:
HGRS87: Hellenic Grid Reference System (EGSA87) uses the GRS80 ellipsoid and a UTM
transformation with a special central meridian at 24 degrees E. longitude so that one zone
covers the whole of Greece and its islands.
HATT: Equidistant Azimuthal HATT projection with the origin point at the National
Observatory of Athens with the Bessel Ellipsoid. Number of map sheets: 189
However, a serious disadvantage of this system is when more than one sheet are necessary
to cover a specific geographical area. In this case, all coordinates must be converted so as to
refer to the same map sheet (this procedure is known as Map Sheet Change). Moreover, the
metrics that are derived from such a single map sheet (which is larger than the normal size of
30' x 30') are significantly distorted and must be adjusted to the correct ones that refer to the
ellipsoid. Hellenic Military Geographic Service (HMGS) for the map series of scale 1:100000,
1:50000 and 1:5000 which cover all of Greece. It is obsolete and being replaced by HGRS87.
It will not be supported by AirPhoto.
TM3: 3 degrees Transverse Mercator projection, Geodetic reference system, with the origin
point located at the National Observatory of Athens (23° 2' 58''.815), Bessel Ellipsoid, nonstandard Scale factor 0.9999, Number of zones covering Greece: 3. This projection system
had been used by the Hellenic Ministry of Environment, Planning and Public Works for the
purpose of the Planning Reconstruction Project and for the photogrammetric compilation of
1:5000 and 1:10000 scale diagrams. False easting 200000m. The origin of the coordinate
system is assumed to be the intersection of the 34° degree parallel with the central meridian.
It may be supported by AirPhoto if there is demand for it.
Hungary:
Before the collapse of the Soviet Empire, Hungary used the Gauss-Krueger 6° grid in
common with all Warsaw Pact countries for military mapping.
In 1972, the HD-72 datum was introduced for civil mapping. This datum uses a very slightly
318
modified version of the GRS67 ellipsoid. The grid is based on an oblique Mercator projection
similar to that used in Switzerland, but with foreshortening of 0.99993. The centre of the
coordinate system is roughly at the average of the latitudes and longitude for Hungary at
Gellérthegy and false easting of 650000 and false northing of 200000 is used to permit all of
Hungary to be covered by a single zone without negative values.
In addition, in 1991, parameters for the transformation of HD-72 to EUREF-89 (GPS) were
determined for a Helmert transformation. AirPhoto provides full support for these changes. If
the military maps have to be used for whatever reason, then the Gauss-Krueger 6° grid
should be selected. However all large scale modern mapping is now done in the EOV
(Uniform National Projection system in Hungarian) coordinate system.
Iceland:
Five different grids have been in use in Iceland since 1900. The Reykjavik 1900 grid used
Copenhagen instead of Greenwich as the prime meridian as well as a unique Danish ellipsoid
with different length units employed by the surveyors. The 1:100000 maps of the island drawn
during the first four decades of the 20th century still use this grid. It is not supported in
AirPhoto.
In 1955, a new datum based on the International Ellipsoid of 1924 was chosen and some
1:25000 maps still offer a Gauss-Krüger 6° grid based on this along with a single meridian
Lambert conformal grid. However coordinates increase in value from east to west for
historical reasons.
Later maps and georeferenced aerial photos use a two-parallel Lambert grid based on the
1993 geodetic study of the island and the GRS80 ellipsoid. Coordinates increase from west to
east. Iceland, lying on the mid-Atlantic ridge, expands at roughly 20 cm. per decade
horizontally, so that re-surveys at 10 year intervals at nearly 140 stations are required to
account for its shape which changes at a spectacular rate. The 1955 and 1993 datum maps
are supported by AirPhoto. Datum transformation in AirPhoto uses parameters supplied by
DMA-NIMA for Hjörsey55 to WGS84 (= GRS80 in 1993) with roughly 3-6 meter accuracy
which is just barely adequate for the 1:25000 map series. AirPhoto supports both the 1955
and 1993 datum based grids.
Ireland:
The Irish national grid calculations are also a variant of UTM with the origin shifted to 8° W
longitude, 53.5° N latitude and a modified Airy Ellipsoid, with false easting of 200,000 and
false northing of 250,000 and modified central scale factor of 1.000035. Irish co-ordinates
should only be used within the Republic of Ireland. Although both the UK and the Republic
use an Airy Ellipsoid, the two are not quite the same, nor is the datum point, so that there is a
discordance along the border with Ulster of considerable importance.
Italy (Gauss-Boaga):
Italy uses a standard UTM mapping, but with a datum point located at Mount Mario near
Rome based on the Hayford Ellipsoid and offsets of 1,500000 and 2500000 added to the
'eastings' for the two strips which cover the whole country and its adjacent islands. The strips
are given names, called Fuso Ouest and Fuso Est, not numbers. An older system used in
Sardinia is not supported.
Japan:
For large scale maps (1:5000 or better) up to April 1, 2002, Japan used a Bessel ellipsoid with
19 separate regions each with its own centre point. A meridian foreshortening of 0.9999 is
used at each centre. Coordinates may be negative to the west or south of the 0,0 point at the
centre. After April 1, 2002, a GRS80 ellipsoid is used, but the region numbers and centres
319
remain the same. The coordinates and their corresponding latitudes and longitudes change.
The 19 regions are spread out over more than 30° of longitude and 25° of latitude to include
outlying islands in the eastern Pacific and the China sea. They follow the boundaries of the
administrative prefectures or the outlines of the smaller islands, 47 in all. The region number
must be specified along with the coordinates which are local to the individual region.
Although it is possible to convert between the old and new datums, this can be done only
within a given region. Unfortunately, there is no way to use adjacent maps from two regions
simultaneously, because the precise regional boundaries are not available to construct a
suitable database for a search algorithm which, given the latitude and longitude can uniquely
determine the region in which it lies. Either the grid from one or the other region must be used
for all points and the region number must always be specified. Thus, in contrast to other types
of multi-strip maps supported by AirPhoto, jumps in coordinates at region boundaries can not
be automatically displayed.
The new regional values can be converted to UTM with a GRS80 ellipsoid used on small
scale maps (1:10000 and higher) taking the 0.9996 meridian foreshortening of UTM into
account, but since no grid is shown on these maps, there appears to be no need to do this. In
any event, there is no way to convert from a point on such a map back to the large scale map
coordinates, since the region number can not be determined from the latitude and longitude.
AirPhoto supports both the old and new datum for all regions. If, in the future, a regional
boundary database with sufficient resolution becomes available, then AirPhoto will be
modified so that maps from adjacent regions can be shown in a single image.
For the positions of the 19 regional centres, see:
http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku3.gif
The precise coordinates of the central points for each region may be found at:
http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif
Conversion software for any coordinate pair between the old and new datums (in Japanese)
at higher resolution than that used in AirPhoto may be found at:
http://vldb.gsi.go.jp/sokuchi/tky2jgd/download/agreement.html
320
Lithuania:
The post-Soviet Lithuanian system uses a UTM mapping, but with a foreshortening of 0.9998
and a central meridian of 24° to prevent a meridian strip boundary from passing through the
middle of the country.
Luxembourg:
The Luxembourg single strip Gauss-Krüger system is centred on 49° 50' north latitude, 6° 10'
east longitude using the International ellipsoid of 1924. Numerical offsets of 80000 and
100000 meters are added to the east-west and north-directions respectively.
Netherlands:
The Dutch grid system is based on a Schreiber - Gauss conformal mapping of the Bessel
1841 Ellipsoid to a sphere, followed by a stereographic projection. The zero point is based on
Amersfoort, with offsets of 155000.0 and 463000.0. A bivariate quintic polynomial is used for
the conversions with constants as given in the on-line reference due to Schut below.
Norway:
Recent Norwegian maps use the WGS84 GPS datum and a UTM Grid. Older Norwegian
maps prior to 1993 use UTM with the ED50 Hayford Ellipse and Potsdam datum. If required,
this can be chosen by selecting UTM International instead of UTM WGS84.
Poland:
Pre-World War II maps of Poland used a variety of grids, see the bibliography (Mugnier). The
military maps of the Soviet era used the Krassovsky ellipsoid and the Soviet military grid.
Beginning in 1965, Poland continued to use the Krassovsky 1942 ellipsoid., The country was
divided into 5 irregular zones. In the first four, and a grid based on a Roussilhe oblique
stereographic projection was used with different false eastings and northing in each of them.
This projection was published in 1922. Apart from Poland, the only other use as far as the
author knows was in Syria between the two world wars. In the fifth zone, a Gauss-Krüger
projection with still other false eastings, northings and central shortening parameter was
employed.
321
The 1:10000 scale maps of this period continue in use until today with numbering:
The first digit of the System 65 map number shows the zone, and in AirPhoto, this must be
entered manually, since the outlines of the zones are not available digitally. Because the
grids in each zone (Polish "Strefa") are not concordant it is not possible to combine maps
along zone boundaries without converting the datum to WGS84 or GRS80.
For its new 1:10000 map series, Poland now uses a GRS80 ellipsoid and a UTM grid with
53,000,000 subtracted from the northing value and the central meridian at 19° East as well as
a non-standard foreshortening of 0.9993 so that all of Poland is now covered by a single grid.
The earlier grid used on Soviet-era military maps is that of the Gauss-Krüger 6° system and
both it and the newer grid are supported in AirPhoto. A large collection of other grids may be
found on older maps. For further historical details see the web site at the American Society of
Photogrammetry and Remote Sensing by Clifford Mugnier:
http://www.asprs.org/resources/grids/
Portugal:
As befits a country with a long cartographic and seafaring tradition, Portugal has had a series
of incompatible systems which have been updated during the course of the centuries. These
include:
1- Cartographic series 1:50000; 1:100000 and some old cadastral plans: Geodetic Datum:
Lisboa, old S. Jorge Castelo; ellipsoid: Bessel; projection: Bonne; Central point:latitude 39°
40' N; longitude: 8° 07' 54.862" W (not supported by AirPhoto).
2 - Series 1: 25000 of the Portuguese army and the great majority of older cadastral plans:
Geodetic Datum: Lisboa (DLx); ellipsoid: International (Hayford1924); projection:
Gauss Krüger; Central point: latitude 39° 40' N; longitude: 8° 07' 54.,862" W;
Earlier, no offsets, later maps use false Easting 200000, false Northing 300000.(not
supported by AirPhoto, but available in MapLib32.dll).
322
3 - Orthophotos 1:10000. Geodetic Datum D73: Melriça (Datum 1973); ellipsoid:
International (Hayford 1924); projection: Gauss Krüger; Central point: latitude 39° 40' N;
longitude: 8° 07' 54.862" with false Eastings and Northings the same as those for the
1:25000 series and additionally since 1973 false Northing -86.990 m., false Easting 180.598
m. added to the military offsets, cadastral digital plans with these false Eastings and
Northings since 1994. Fully supported by AirPhoto
.
4 - Madeira and the Azores: standard UTM with the ED50 Potsdam datum.
AirPhoto supports both the D73 and the older DLX datum in Maplib32.dll, but only D73 is
interfaced.
Romania:
The civil maps at large scales (1:5000 and better) use a stereographic projection with grid
system centred at lat 46° lon 25° with foreshortening of 0.99975 and false eastings and
northings of 500000, and a Krassovsky ellipsoid.
The 1:5000 maps are not oriented to the grid, but rather are at 1'15" latitude and 1' 52.5"
longitude intervals. The grid is supported by AirPhoto without a guarantee for accuracy, since
precision test data could not be obtained from the Romanian authorities, but since the values
are similar to those of nearby countries, they are probably nearly correct. The conversions
WGS84 is based on the October 1997 TR 8350.2 US National Imagery and Mapping Agency
revised value and the grid parameters and projection formulae have been obtained from the
European Petroleum Survey Group's documentation.
Russia et al. Gauss-Krüger 6°:
The GK6 calculations use the Krassovsky Ellipsoid of 1942. The method is the same as that
used for the GK3 calculations modified for a 6° meridian strip. It should be used in all former
of the Warsaw Pact countries and may be used elsewhere if desired, although the errors near
the strip boundaries are slightly higher than in the UTM system. Please note that this grid was
not used in the former German Democratic Republic, where the GK 3° grid appears on the
1:10000 maps. The datum there is, however, a Krassovsky ellipsoid with origin at-Pulkovo
near St. Petersburg and not the Bessel ellipsoid as used with GK3 in the rest of western
Germany. The result is that there may be differences of hundreds of metres or more in the
area along the old Iron Curtain where the two systems are adjacent. Thus, within the reunited
Germany, there is a serious discordance in the local maps.
GK6 was also used in the following countries:
Czech Republic, Estonia, Hungary, Latvia, Lithuania, Poland, Slovakia, Slovenia for
Soviet-era maps. These have since been largely replaced with local grids.
South America:
For the countries in the western and northern part of the continent, Bolivia; Chile; Colombia;
Ecuador; Guyana; Peru; Venezuela using the Provisional South American Datum of 1956
(PSAD56, La Canoa), the Hayford 1924 ellipse is employed with standard UTM conventions
both north and south of the Equator. GeoTiff input/output in AirPhoto supports zones 18 to
21 North and 17 to 22 South.
For Argentina, Bolivia, Brazil, Chile, Colombia, Ecuador, Guyana, Paraguay, Peru, Trinidad &
Tobago, Venezuela, the SAD69 Datum using the GRS67 ellipse with non-truncated decimal
precision is available and standard UTM conventions both north and south of the Equator.
GeoTiff input/output in AirPhoto supports zones 18 to 22 North and 17 to 25 South.
The Brazilian Polyconic and the Colombian Bogotá Gauss-Krüger grid are not yet supported.
323
Slovenia:
Slovenia commonly uses two grid systems, D48 and D96. These are both transverse
Mercator projections using a central longitude of 15° East, false Easting of 500,000, false
Northing of -5,000,000 and foreshortening of 0.9999. They differ only in the use of a Bessel
1841 (D48) and a GRS80 (D96) ellipsoid. AirPhoto supports both grids and offers conversion
from D48 to D96.
Switzerland:
Until recently, the Swiss calculations use the Swiss Bessel Ellipsoid of 1903. The co-ordinate
system is based on a conformal mapping of the ellipsoid to a sphere, followed by an oblique
transverse Mercator mapping centred on the Old Observatory at Bern with zero meridian
passing through Bern, offset by 200000 and 600000 in the longest north-south and east-west
directions in Switzerland. They are based on Odermatt's modification of the original
Rosenmund method. The author's program uses the official equations provided by the Swiss
Federal land survey department (SwissTopo).
Sweden:
Sweden uses a Bessel Ellipsoid with a single strip having a central meridian at 15° 48' 29.8"
and a false Easting of 1500000. This is the RT90 grid. Routines are offered for conversion to
latitude and longitude with WGS84 compatibility for use with GPS co-ordinates. In this case, a
special unpublished set of offsets and scaling supplied by Bo Gunnar Reit of the National
Land Survey of Sweden is used avoiding the need for a Helmert transform.
United Kingdom:
The UK national grid calculations are a variant of the UTM calculation with the origin shifted to
49° N Latitude, 2° W longitude and false easting of 500,000 and northing of - 100,000 added
to the constant computed to obtain the latitude shift. The Airy Ellipsoid is used with a Central
scale factor = 0.9996012717. The UK 100 km map sheet names maybe specified and the 100
km digit dropped when computing lat/lon from the UK grid co-ordinates, or the full grid coordinates may be given instead. UK co-ordinates should only be used within the United
Kingdom. Map names are quickly found via binary search on a sorted array. Although the
official calculations used in the UK are based on equations due to Hotine (Snyder 1982), the
author's program uses the more accurate Swedish-Danish technique based on 8th order GK
method.
UTM, WGS84, GRS80, International (ED50), and Clarke 1866 Ellipsoids:
The UTM conversions are based on the original Krüger (1912) method, using the International
Ellipsoid of 1924 or the Clarke ellipsoid of 1866 or the WGS ellipsoid of 1984. In the USA,
when a transverse Mercator projection is used, it is used with the Clarke ellipsoid of 1866.
The datum used for UTM International calculations is the European Datum of 1950. With the
Clarke calculations, the datum used is the North American of 1927 (NAD27). For WGS84,
only the ellipsoid parameters are used. GPS data may be entered directly however and
mapped in UTM co-ordinates. GRS80 is almost the same as WGS84 and is used with the
NAD83 system in the USA and the Hellenic Grid Reference System HGRS87 in Greece
(zones 34, 35).
The zone number must be specified when computing lat/lon from UTM. Since 10,000,000 is
added to a UTM northing if a point is south of the equator, a flag must be set true when this is
the case. It should be used in Scandinavia, the USA and almost any place else in the world.
Again, be warned that UTM here is based on the International Ellipsoid, but that some USA
state maps use the Clarke Ellipsoid of 1866 with different offsets.
Other grid systems are added to AirPhoto and the underlying mapping transformations when
the need arises.
324
Rectification
Algorithm:
The main rectification algorithm used by the programme adapts to the number of selected
points when Automatic is chosen in Setup. Control points are first checked for consistency.
Then a modified projective transformation (Kraus, 1997 or Hartley and Zisserman 2003) is
used to produce approximate correspondence between source and target based on singular
value decomposition global optimisation (Press et. al. 1986) using the selected control points.
If there are between 4 and 7 points, a pure projective transformation is computed, If there are
more, additional bi-variate polynomial correction factors are introduced, the order of the
correction polynomial depending on the available number of points up to a maximum order of
five (Scollar et al. 1990), with: 8 to 9, order 2, 10 to 12, order 3, 13 to 17 order 4, 18 or more,
order 5. The relative quality of the transformation is obtained by computing the differences
between forward and inverse transformation at each control point and displaying these values
either numerically or as a histogram. Bi-variate polynomial rectification of orders up to 5 are
also available, mainly for use on satellite imagery with unknown geometry.
Computation traverses the target in the projected area of the source and computes the
position of a corresponding source pixels. Interpolation is then used to compute the colour or
grey value from the nearest or near neighbours of the calculated position.
Local Stretch:
If Local Stretch is chosen, after an approximate correction offered by the preceding operation
ends, the sets of points in the rectified target image which now becomes a new source and
those of the original target are used to compute a Delaunay triangulation (Fortune, 1987,
Sibson, 1981). The points of the triangulation for the new source are the original control
points from the old source forward transformed to the old rectified target.
Then, for each corresponding triangle in rectified and original target, an affine transformation
is computed and applied to transfer the data from the previously rectified target image to the
original target. This produces an additional small local stretch around each of the control
points which improves on the global result of the first phase so that source and target control
points now correspond and any errors in the other image picture element positions are
confined locally to the immediate area around the point. This technique builds on the original
work of Goshtasby 1986 modified for greater stability outside the convex hull of the control
points by adding additional triangulation points outside the corners of the source image.
325
Local stretch, details
Unlike aerial imagery made with a lens, old maps and other pictorial sources such
as satellite scanner data do not obey optical laws which can be described by a
global mathematical transformation applied to the entire image. For well over a
quarter of a century, satellite imagery made with line ("push-broom") scanners has
been treated using bi-variate polynomials (Bernstein 1976), usually of order 2. This
method is frequently incorporated in the "rubber stretch" plugins available for GIS
programmes. It is adequate for the application for which it was designed, but it may
produce very large errors when the object to be transformed is an ancient map with
irregular distortion to a modern large scale digital map. Programmes like ERMapper
offer local triangulation rectification of satellite imagery similar to that to be
described, as do some GIS plugins, but these are either very expensive or useful
only for near-vertical imagery.
Old maps may contain valuable information about archaeological sites which have
been destroyed by modern agriculture or construction. The problem of fitting old
property boundary maps to modern ones is well known to cartographers who call the
process "conflation", but many solutions are considered to be unsatisfactory.
Transformation of such data requires a localised approach which restricts operations
to small regions around corresponding points. It is desirable that errors at these
points be minimal or zero, and that the distribution of errors in the intervening areas
be a linear function of the distance between the nearest points. It is also desirable
that straight lines crossing the boundaries of local regions not be broken. It was
shown that transforming small corresponding triangles drawn from the control points
with a linear (affine) transformation would meet these conditions (Goshtasby, 1986) .
However, practical implementation of this method for real-world imagery is rather
more complex. The process of drawing non-intersecting lines between a set of
points is called triangulation. An optimal triangulation was described by the Russian
mathematician Delaunay and carries his name (Delaunay, 1934). The Delaunay
triangulation has the desirable property that it maximizes the smallest angle at any
vertex over all triangles. No vertex in the vertex set falls in the interior of the
circumcircle (circle that passes through all three vertices) of any triangle in the
triangulation:
For example, there are three ways of triangulating 5 points:
but only one of them obeys the rule cited above:
326
A related problem is the construction of a polygon around each point which delimits
its surrounding area relative to all near neighbour points. This problem was
discussed earlier by another Russian mathematician, Voronoi (Voronoi, 1908). The
partitioning of a plane with n points into n convex polygons such that each polygon
contains exactly one point and every point in a given polygon is closer to its central
point than to any other is a Voronoi diagram. It is sometimes also known as a
Dirichlet or Theissen tessellation. A Delaunay triangulation is said to be the dual of a
Voronoi tessellation, because the lines of the triangulation intersect those of the
tessellation at right angles and one diagram can easily be constructed from the
other.
This is a Voronoi tessellation of a collection of points:
and this is the dual Delaunay triangulation constructed by drawing lines at right
angles to the Voronoi lines to connect the points:
Geometric construction of such figures for large numbers of points was greatly
speeded up by the development of "sweep-line" or "divide and conquer" algorithms
which reduce the number of operations to a linear multiple of the number of points
times the logarithm of that number (Fortune, 1987). This improved on earlier less
efficient methods (Sibson, 1981).
Once the triangulation has been carried out, transformation of the corresponding
327
triangles may proceed one pair at a time along with suitable interpolation from the
modern map to the old map, pixel by pixel. Goshtasby recognised that a problem
arises about what to do with the area outside the lines connecting the outermost
points. This polygon is called the convex hull of the control points. He suggested a
technique for dividing up the remaining area into triangles outside the hull which
might be ambiguous for two images. A Voronoi tessellation of the whole space
which is consistent right out to the corners might be used followed by affine
transformation on the triangles contained within the Voronoi polygons, but there is
an easier way.
Unlike the artificial examples given in Goshtasby's publication, it is likely that the
corresponding control point set of an old map or non-optical image is randomly
oriented with respect to those on the modern map. A preliminary projective
transformation to bring these into approximate correspondence is needed or it won't
be possible to be sure which pairs of triangles correspond. If that is done first, then
one might as well use the corners of the whole image of the old map as artificial
control points with a transformation to project them on to the new map which would
then use these exterior points as the outer boundary. That puts all real control points
inside the convex hulls of the four artificial points in image and map. The resulting
artificial triangles on the outer boundaries should not be not too narrow, hence a
constant should be added or subtracted from the coordinates of the corner points all
around the original image.
Local error in the projective transformation due to hilly terrain may be partially
compensated with the secondary bi-variate polynomial correction already available
in the AirPhoto Multi-Point method due to Weidner (Scollar et al, 1990). The degree
of the polynomial may be chosen automatically as a function of the available number
of control points. Since transformation with a polynomial greater than degree five
fails due to rounding errors caused by hardware limitations, that is the most that is
needed regardless of how many additional control points may be available.
In addition, there is a problem of stability of the independent triangulations in old and
new images, with the possibility of degeneracy. Triangles become degenerate if
three adjacent points lie on a straight line or when four points lie exactly on a circle,
since there are two ways of drawing the pair of triangles depending on the
orientation of the diagonal. These may have opposite orientations in old and new
images. Degeneracy can be prevented by using a small random linear
transformation on each control point before triangulation as suggested by (Beichl,
2002), but triangles which are inconsistent between old and new images may still
result. Occasionally, a triangle may be created in one image which does not exist in
the other. A scan through the triangle lists prior to transformation must therefore
reorder all entries for correspondence where needed, since the Delaunay algorithm
may not create triangles in the same sequence for both sets of points. Furthermore,
the vertex coordinates of corresponding triangles may come in any order. By
comparing the ratios of the areas to the perimeters of each pair of triangles,
remaining inconsistency may be detected. Offering a user-chosen threshold to
select those which differ by more than a chosen percentage for separate treatment
is then appropriate. A dual pass approach, flagging the consistent triangles in the
first pass as 'don't touch', then using only the orientation of the new map triangles for
the second pass is a simple solution.
In AirPhoto 3, control points are first checked for consistency. Then a Multi-Point
Weidner transformation is used to produce approximate correspondence between
source and target using constants determined by Singular Value Decomposition
(Press et. al. 1986) with all control points. If there are between 4 and 7 points, a
pure projective transformation (Kraus, 1997) is computed, If there are more, the
additional bi-variate polynomial correction described above is introduced, the order
of the correction polynomial depending on the available number of points (Scollar et
328
al. 1990). With 8 to 9 points, order 2 is used, 10 to 12, order 3, 13 to 17 order 4, 18
or more, order 5. This completes the first correction phase.
The set of points in the preliminary image now become a new source and those of
the modern map are used to compute Delaunay triangulations for each. Then for
corresponding triangles, an affine transformation is computed and applied to transfer
the data from the previously rectified source image to the original modern map. This
produces the desired additional small local stretch around each of the control
points. Any errors in the other image picture element positions are confined locally
to the immediate area around the point.
Several different options for displaying the result are offered, including merging of
the lines of the old with the new map where the new has priority over the old,
overwriting the new map with the old one leaving other areas unchanged, creating
an undistorted version of the old map or mixing the lines both in user-selectable
proportions. A diagnostic option is also included to aid with placement of control
points. It shows either all the triangles in both images or only those which are
inconsistent.
The method may also be used on oblique aerial images if there are a fairly large
number (10 or more) of visible control points. This may be used to improve the
accuracy of single image rectification if desired.
329
Behind the scenes in DTM creation
A calibration point describes the relationship between geographic coordinates and the pixel
coordinates of the bitmap. A control point with the same ID number in two images says that
the pixel coordinates at those points are the same point in the image to be rectified and the
map. A height point gives the height in meters at a pixel coordinate pair in a map is.
Calibration points have nothing to do with rectification. Control points have nothing to do with
geographic coordinates. Height points have nothing to do with either of the others.
All three are stored internally in what are called self-balancing binary trees indexed on the
pixel coordinates so that they can be found quickly when moving the mouse and transformed
to whatever may be required.
When heights are imported rather than making them interactively from displayed contour
lines, the program uses the calibration points to compute the geographic coordinates of the
corners of the bitmap. Only those imported points which lie within these geographic
coordinates are entered in the height tree. The others are rejected. It doesn't matter where the
calibration points are located. Only the geographic coordinates of the corners are significant
here for checking the data as it comes in.
A DTM is constructed from the height points. Control and calibration points may also contain
heights, but this is not required, and if these values are left unchanged at zero on entry, they
are not used for surface calculations. The values stored in the height and optionally, the
calibration and control trees are written to an intermediate file with the name you have given
to your map and the extension .tmp. This temporary file is erased when the calculation has
terminated.
The surface interpolation technique offered is called Natural Neighbour and due to Ronald
Sibson (see the bibliography)
Sibson's Method:
The implementation is due to Sambridge and Braun. Here is a brief summary of their paper:
Geophysical parametrization and interpolation of irregular data using natural neighbours,
Malcolm Sambridge, Jean Braun and Herbert McQueen, Research School of Earth Sciences,
Institute of Advanced Studies, Australian National University, Canberra, ACT 0200,
Australia. Geophysical Journal International v. 122, pp. 837-857, 1995.
An approach is presented for interpolating a property of the Earth (e.g. temperature, or
seismic velocity) specified at a series of `reference' points with arbitrary distribution in two or
three dimensions. The method makes use of some powerful algorithms from the field of
computational geometry to efficiently partition the medium into Delaunay triangles (in 2-D) or
tetrahedra (in 3-D) constructed around the irregularly spaced reference points.
The field can then be smoothly interpolated anywhere in the medium using a method known
as natural neighbour interpolation. This method has the following useful properties: the
original function values are recovered exactly at the reference points the interpolation is
entirely local (every point is only influenced by its natural neighbour nodes), and the
derivatives of the interpolated function are continuous everywhere except at the reference
points.
In addition, the ability to handle highly irregular distributions of nodes means that large
variations in the scale lengths of the interpolated function can be represented easily. These
properties make the procedure ideally suited for 'gridding' of irregularly spaced geophysical
data, or as the basis of parametrization in inverse problems such as seismic tomography. We
have extended the theory to produce expressions for the derivatives of the interpolated
330
function. These may be calculated efficiently by modifying an existing algorithm which
calculates the interpolated function using only local information. Full details of the theory and
numerical algorithms are given. The new theory for function and derivative interpolation has
applications to a range of geophysical interpolation and parametrization problems. In addition
it shows much promise when used as the basis of a finite element procedure for numerical
solution of partial differential equations.
Implementation:
In AirPhoto, first a set of Voroni cells around the set of irregular data points with known
heights is computed:
From this, a Delaunay triangulation of the set of points is computed as the dual of the Voronoi
tessellation:
331
A new Voronoi Cell around the red test point overlapping the previous Voronoi Cells of its
natural neighbours is then computed. The red test point is on a regular grid of points. The aim
is to compute the height at this point.
The method takes the what Sibson calls the "Natural Neighbour" influence region about a
node into account:
332
Perspective view of the influence region above from the direction of the arrow at the top left
The natural neighbour interpolation at the regular grid point is simply the sum of the heights of
the surrounding irregular points contributing an amount weighted by their respective
proportions of the area of the secondary Voronoi polygon around the regular point. Thus,
when the regular point is identical with an irregular point, its interpolated value is that of the
irregular point, and elsewhere differs smoothly with continuous first derivatives in all directions
across the polygon boundaries as Sibson has shown.
The implementation in AirPhoto differs from that given in the code offered by Sambridge and
Braun in that the computation of the original Delaunay and Voronoi tessellations is carried out
with the faster algorithm due to Fortune as implemented by Teller (bibliography).
The major problem solved by the Sambridge-Braun algorithm is finding the triangles in which
333
the regular points are located without having to search through all triangles for each point,
with a directed 'walk' based on work due to Lawson and Sloan:
Computing the contributions to the secondary Voronoi polygon around it in a highly efficient
manner is due to Watson.
Details are given in the Sambridge and Braun paper and on their web sites:
http://rses.anu.edu.au/~malcolm/na/na.html
and
http://rses.anu.edu.au/geodynamics/nn/nn.html
334
Other data structures and algorithms
Image Processing:
The algorithms used for image enhancement (Wallis) and for median filtering are described in
the references cited below in Appendix 6.
Image Measurement:
The measurement of the area and perimeters of polygons follow the algorithm described by
Bashein et. al. using the modification described by O'Rourke cited below.
Data Structures:
Image Storage:
Images are stored internally as Windows memory mapped files. This permits treating full
colour images which are larger than available physical memory without significant delays
once they are loaded. They are copied to other memory mapped files which may be recalled
for an unlimited number of undo operations.
The Microsoft Developer Network Library defines memory mapped files as follows:
Memory-mapped files (MMFs) offer a unique memory management feature that allows
applications to access files on disk in the same way they access dynamic memory-through
pointers. With this capability you can map a view of all or part of a file on disk to a specific
range of addresses within your process's address space. And once that is done, accessing
the content of a memory-mapped file is as simple as dereferencing a pointer in the
designated range of addresses. So, writing data to a file can be as simple as assigning a
value to a dereferenced pointer as in:
*pMem = 23;
Similarly, reading from a specific location within the file is simply:
nTokenLen = *pMem;
In the above examples, the pointer pMem represents an arbitrary address in the range of
addresses that have been mapped to a view of a file. Each time the address is referenced
(that is, each time the pointer is dereferenced), the memory-mapped file is the actual memory
being addressed.
Note:
While memory-mapped files offer a way to read and write directly to a file at specific
locations, the actual action of reading/writing to the disk is handled at a lower level.
Consequently, data is not actually transferred at the time the above instructions are
executed. Instead, much of the file input/output (I/O) is cached to improve general system
performance....
One advantage to using MMF I/O is that the system performs all data transfers for it in 4K
pages of data. Internally all pages of memory are managed by the virtual-memory manager
(VMM). It decides when a page should be paged to disk, which pages are to be freed for use
by other applications, and how many pages each application can have out of the entire
allotment of physical memory. Since the VMM performs all disk I/O in the same mannerreading or writing memory one page at a time-it has been optimized to make it as fast as
possible. Limiting the disk read and write instructions to sequences of 4K pages means that
several smaller reads or writes are effectively cached into one larger operation, reducing the
number of times the hard disk read/write head moves. Reading and writing pages of memory
at a time is sometimes referred to as paging and is common to virtual-memory management
operating systems.
335
Another advantage to using MMF I/O is that all of the actual I/O interaction now occurs in
RAM in the form of standard memory addressing. Meanwhile, disk paging occurs periodically
in the background, transparent to the application. While no gain in performance is observed
when using MMFs for simply reading a file into RAM, other disk transactions can benefit
immensely. Say, for example, an application implements a flat-file database file structure,
where the database consists of hundreds of sequential records. Accessing a record within the
file is simply a matter of determining the record's location (a byte offset within the file) and
reading the data from the file. Then, for every update, the record must be written to the file in
order to save the change. For larger records, it may be advantageous to read only part of the
record into memory at a time as needed. Unfortunately, though, each time a new part of the
record is needed, another file read is required. The MMF approach works a little differently.
When the record is first accessed, the entire 4K page(s) of memory containing the record is
read into memory. All subsequent accesses to that record deal directly with the page(s) of
memory in RAM. No disk I/O is required or enforced until the file is later closed or flushed.
Note:
During normal system paging operations, memory-mapped files can be updated
periodically. If the system needs a page of memory that is occupied by a page
representing a memory-mapped file, it may free the page for use by another application. If
the page was dirty at the time it was needed, the act of writing the data to disk will
automatically update the file at that time. A dirty page is a page of data that has been
written to, but not saved to, disk...
Control, calibration and height point storage:
Control points are stored internally in self-balancing binary tree objects. These are streamed
to files for loading and unloading as required. For undo operations, the tree object with the
current control configuration is pushed onto a dequeue stack and popped off that stack when
an undo is requested. This permits an unlimited number of control points and an unlimited
number of undo operations, provided that the operation does not change the size of the
image (re-sampling, rotation), in which case only one undo operation which restores the initial
state is permitted. If images are cropped, rotated or re-sampled, control points are scaled and
transformed appropriately (Rosenfeld, 1982).
Control points are made visible by writing directly to the visible bitmap. When a change takes
place, e.g. deletion, the bitmap is redrawn from the memory mapped file and all control points
redrawn on top of it. This avoids the need for the transparent mask layer with its increased
storage requirement on top of the visible image to which such data was written in earlier
programmes.
Interpolation, Blending:
Bi-cubic spline interpolation uses the constants proposed by Park and Schowengerdt, 1983.
Bilinear interpolation uses the method given by Pratt, 1991. Inverse transformation from the
target to the source is used to find the approximate source pixel position and obtain the
indices of near or further neighbours for the interpolation methods.
Blending uses a version of the method due to Milgram, 1975 modified for colour imagery,
whereby in the area of overlap between two images, the red, green and blue components are
modified by a linear gradient to determine the proportions of each image pixel to use,
depending on position in the overlapping area.
Median filtering:
In (Scollar, Weidner, Huang 1984, see references), it was suggested that the median should
replace a suspected outlier pixel if the value of that pixel lay above or below what are called
the inter-quartiles rather than always replacing it as others had done before. Those inter-
336
quartiles are the numbers at 1/4 and 3/4's of the total count for the whole distribution of
intensities. This has been improved in AirPhoto 3 by permitting the user to move the threshold
out or in from the inter-quartiles with the slider, thus making them inter-quantiles, so that the
rejection and replacement by the median can be made more or less frequent. This means in
effect that the outlier replacement adapts to local contrast, since the spread of the interquantiles is a measure of that contrast, equivalent to the spread of variance about the mean
when using averaging. However the computation of variance or standard deviations are more
corrupted by outliers is that they involve squares and square roots, whereas medians are just
linear comparisons. Squaring something exaggerates the result compared to linear
comparison. When the median always replaces all pixels as in the option in a number of
imaging packages, this can result in some blurring, and the inter-quantile threshold method is
designed to reduce this as far as possible.
Try setting the threshold higher until the effects of dirt removal and sharpness reduction are
optimised. This preserves edge information while removing dust, dirt, scratches and lint from
pictures. You can vary the threshold with the slider to control the degree of filtering. Setting it
to the lowest value will always replace all pixels with the median of their surroundings. You
can also set the size of the moving window in the image used to find the local median within
it. This may blur edges to some extent. A larger window will tend to smooth an image more
than a smaller one. Hence setting the threshold to some intermediate value will preserve
them while removing dirt or scratch outliers.
Another application for the median calculation is sharpening an image. If the central pixel in
the moving window is multiplied by a constant and the median of the surrounding area
subtracted, the edges present in the picture are sharpened. This is the second option offered
in this dialogue box. At the same time you may change the overall brightness of the result if
you wish.
Finally, if the median is always subtracted from the central window point and the result
threshold, edges are extracted. The size and appearance of the edges are affected by the
window size, the choice of threshold and the overall contrast in the local window. These may
be chosen to obtain different effects. In AirPhoto, other methods for edge extraction are
offered which provide different results.
Median Enhancement-Thresholding is similar in its result for windows of similar sizes, but
since larger windows are possible with the algorithm used there, appearance will be different
when this is chosen. Thin edges with better continuity are offered by the option in the main
tool menu for edge extraction. However, these may be too visible for every minor feature in an
image. It is advisable to remove dust, dirt and scratches using median filtering before applying
either of these other techniques or when using the edge extraction via median filtering itself.
337
Appendix 5
Airphoto File Formats
338
Binary formats
This section is intended for programmers who want to read the special files created by
AirPhoto for use with other programmes.
Integers are 32 bit signed integers. Extended values are IEEE 80 bit floating point values with
a 15 bit signed exponent and 63 bit signed mantissa with 19-20 digits of precision, the native
type for an Intel floating point processor. The Boolean type is a single byte. The records are
not packed, so that where required, each item is padded to the nearest four byte boundary.
Comments are shown in curly brackets thusly {comment} and are not part of the record.
Control Points:
Control point files are binary files with the extension .ctl. Each control point is contained in a
streamed record with the format:
ControlPtRecord = record
Id: Integer;
{pixel coordinates}
X: Integer;
Y: Integer;
Z: Integer; {-1 if off screen, otherwise 0}
{geographic coordinates in lat/lon if any}
CoordX: Extended;
CoordY: Extended;
CoordZ: Extended;
IsEnabled: Boolean;
end;
Control points may contain a height in the CoordZ value.
Calibration Points:
Calibration point files are binary files with the extension .cal. Each point is contained in a
streamed record with the format:
PCalPtRecord = ^CalPtRecord;
CalPtRecord = record
Id: Integer;
X: Integer;
Y: Integer;
Z: Integer; {-1 if off screen, otherwise 0}
CoordX: Extended;
CoordY: Extended;
CoordZ: Extended;
IsEnabled: Boolean;
case Kind: Integer of
0: (CalCoordinates: CoordinateType);
1: (CalCoordInt: Integer);
end;
Where CalCoordinates are one of the enumerated types:
CoordinateType = (Australian, Austrian, Belgian, LatLong, {Decimal} Degrees, Denmark,
FinlandKKJ, Finland, {WGS84} French, GaussKrueger, GaussKrueger6, Irish, Italy,
Luxemburg, Dutch, {Netherlands} NorwayED50, Norway, {WGS84} Pixels, Spanish,
SwedenRT90, Sweden, {WGS84} Swiss, UK, UTM, UTM_Clarke, GRS80, WGS84, XY,
339
CzechRepublic, Estonia, EstoniaGK, Hungary, Latvia, Lithuania, Poland, Portugal, Russia,
Slovakia, Greece, Romania, JapanBessel, JapanGRS80, AustrianBMN, IsraelPB, IsraelTM,
Jordan, PSAD56, SAD69, Iceland55, Iceland93, PolandGRS80, PolandS65, Egypt,
SloveniaD48, SloveniaD96, FrenchL93, FrenchLE2, Belgian2008);
equivalenced to an integer for stream writing. Calibration points may contain a height in the
CoordZ value. CoordX, CoordY are always in lat/lon in decimal degrees with sign for greater
or less than 90 degrees. The latitudes and longitudes are in the datum used by the
CoordinateType.
Height Points:
Height point files are binary files with the extension .hgt. Each point is contained in a
streamed record with the format:
HeightPtRecord = record
Id: Integer;
{pixel coordinates}
X: Integer;
Y: Integer;
Z: Integer; {-1 if off screen, otherwise 0}
{geographic coordinates in lat/lon if any}
CoordX: Extended;
CoordY: Extended;
{the actual height}
CoordZ: Extended;
IsEnabled: Boolean;
end;
Digital Terrain Model:
A streamed binary file containing a zero based array defined as:
DTMArrayType = array[0..400, 0..400] of Extended;
Standard File Types:
File types assigned in Setup may be one of:the enumerated types:
FileType = (None, Tiff, Jpeg, Pcx, Bmp, Png, Emf, Wmf, Tga, Pxm, Jp2, J2k, Ecw, Gif);
Imported and Exported File Types:
See the list on the File menu, Import and when an image is loaded, Export. Georeferencing
information is written only to file types which support this internally.
340
Appendix 6
Bibliography & Acknowledgements
341
General:
Bashein. G., Detmer, P. R. ,Centroid of a Polygon, in Graphics Gems IV, P. S. Heckbert (ed.),
Academic Press 1994, ISBN 0-12-336155-9. 3-6
Doytsher, Y. A Rubber Sheeting Algorithm for Non-Rectangular Maps, Computers &
GeoSciences, 26(9),. 1001-1010, 2000
Goshtasby, A. Piecewise linear mapping functions for image registration, Pattern Recognition,
19, 1986, 459-466.
Hartley, R., Zisserman, A. Multiple View Geometry in computer vision, Cambridge University
Press 2003, Second Edition, ISBN 0521 54051 8
Kraus, K. Photgrammetrie, Band 1-3 F. Duemmler Verlag, Bonn, 1997-2000.
Huang, T.S., Yang, G.J., Tang, G.Y., A fast two dimensional median filtering algorithm,
Proceedings IEEE Conference Pattern Recognition and Image Processing, Chicago, 1978,
128 ff.
Milgram, D.L. Computer methods for creating photo mosaics, IEEE Transactions on
Computers, 24, 1975, 1113-1119.
O'Rourke, J. Computational Geometry in C, Cambridge University Press, 2nd ed. 1998 16-24.
ISBN 0 521 64976 5
Park, K., Schowengerdt, R.A. Image reconstruction by parametric cubic convolution,
Computer Vision, Graphics and Image Processing, 23, 1983, 258-272.
Pratt, W.K. Digital Image Processing, 2nd. ed. John Wiley & Sons, New York, 1991, 248, 503
Press, W.H. Flannery, B.P. Teukolsky, S.A. Vetterling, W.T., Numerical Recipes Cambridge
University Press, 1986.
Rosenfeld, A., Kak, A.C. Digital Picture Processing, 2nd. ed. Vol 2., Academic Press, New
York, 1982, 38-41, 48-49.
Scollar, I., Tabbagh, A. Hesse, A. Herzog, I. Archaeological Prospecting and Remote
Sensing, Chapter 5, Cambridge University Press
1990.
Scollar, I., Weidner, B., Huang, T.S., Image enhancement using the median and the
interquartile distance, Computer Vision, Graphics and Image Processing, 25 1984 236-251
Wallis, R. An approach to the space variant restoration and enhancement of images.
Proceedings, Symposium on Current Mathematical Problems in Image Science, Monterey
CA, 1976 10-12 reprinted in C.O. Wilde E. Barrett, eds. Image Science Mathematics,
Western Periodicals, North Hollywood,CA, 1977. Summarised in Pratt (above).
For a general survey see:
http://en.wikipedia.org/wiki/Digital_image_processing
Edge Detection:
Canny, J., A Computational Approach to Edge Detection, IEEE Transactions on Pattern
Analysis and Machine Intelligence, Vol. PAMI-8, No. 6, November, 1986. 679-698.
342
Deriche, R. Using Canny's criteria to derive an optimal edge detector recursively
implemented, International Journal of Computer Vision, Vol. 1, April 1987, 167-187.
Pratt, W.K., Digital Image Processing, 2nd ed. John Wiley & Sons, New York. 1992, Chapter
16
Shen, J. and Castan, S., An Optimal Linear Operator for Step Edge Detection, Computer
Vision, Graphics, and Image Processing: Graphical Models and Understanding, Vol. 54, No.
2, March, 1992. 112-133.
For comparison of some of the many hundreds of available edge extraction/detection
algorithms see:
Heath, M.D. et. al. A robust visual method for assesing the relative performance of edge
detection algorithms, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.
PAMI-19, No.12, December, 1997. 1338-1359.
An on-line overview can be found at:
http://en.wikipedia.org/wiki/Edge_detection
Surface Construction:
Beichl, I. Dealing with degeneracy in triangulation, Computing in Science &
Engineering, 4, 2002, 70-74.
Bernstein, R. Digital image processing of earth observation data, IBM Journal of
Research and Development, 20, 1976, 40-57.
Delaunay, B. Sur la sphere vide. A la mémoire de Georges Voronoi, Izv. Bull. Acad.
Sci. USSR: Class. Sci. Math. Nat., 7, 1934, 793-800.
Fortune, S. A sweep line algorithm for Voronoi diagrams, Algorithmica 2, 1987, 153174.
Goshtasby, A. Piecewise linear mapping functions for image registration, Pattern
Recognition, 19, 1986, 459-466.
Kraus, K. Photgrammetrie, F. Duemmler Verlag, Bonn, 1997-2000.
Press, W.H. Flannery, B.P. Teukolsky, S.A. Vetterling, W.T., Numerical Recipes,
Cambridge University Press, 1986.
Scollar, I., Tabbagh, A. Hesse, A. Herzog, I., Archaeological Prospecting and
Remote Sensing, Chapter 5, Cambridge University Press 1990.
Sibson, R. A brief description of natural neighbour interpolation. Interpreting
Multivariate Data, p. 21-36 ed. V. Barnet, Wiley, Chichester, 1981.
Voronoi GF. Nouvelles applications des paramètres continus à la théorie des formes
quadratiques. Deuxième Mémoire, Recherche sur les parallélopèdres primitifs.
Journal Reine u. Angewandte Mathematik, 1908 134 198-287.
Acknowledgements:
Michael Doneus, Vienna, Austria, and the author discussed a new user interface to be used in
a successor to the author's early AirPhoto which has been implemented here with appropriate
modifications and additions.
343
Ardeshir Goshtasby, Dayton, Ohio, USA and the author had an extensive e-mail
discussion in 1999 concerning improvements to be made to his 1986 algorithm for
local image stretching.
David Motkin, Isle of Wight, UK, patiently tested the programme on his data. His
helpful comments led to the recognition of many of the complications in local
stretching and aided in their solution.
Rog Palmer, Cambridge, UK was instrumental in testing the programme during all phases of
development and his many suggestions for improvement have been incorporated wherever
possible.
Armin Schmidt, Bradford, UK patiently tested the network version. His careful observation of
the problems involved in a large university environment were essential in clearing the initial
bugs and obtaining a satisfactory solution.
Bernd Weidner, Interactive Instruments GmbH, Bonn, Germany, when at the
author's laboratory in the early 1980's, invented the polynomially modified projective
transformation. He offered valuable advice and efficient sample code for the affine
transformation used in the local stretching algorithm, and he suggested using the
area-perimeter ratio as a measure of triangle similarity.
Colour References
The most authoritative work on the color instabilities of films and papers is:
Henry Gilmore Wilhelm, The Permanence and Care of Color Photographs, Preservation
Publishing Company, Grinell, Iowa, USA, 1993
The full 20 chapter volume is available for downloading in PDF format from the
http://www.wilhelm-research.com
This book is essential reading for anyone who has to deal with older colour pictures. Henry
Wilhelm is hereby thanked for granting permission to use the graphs in the first part of this
help file and to quote from his book.
Some of methods used in AirPhoto are described in:
L. Meylan, D. Alleysson and S. Süsstrunk, A Model of Retinal Local Adaptation for the Tone
Mapping of Color Filter Array Images, Journal of the Optical Society of America A (JOSA A),
Vol. 24, Nr. 9, pp. 2807-2816, 2007.
L. Meylan and S. Süsstrunk, High Dynamic Range Image Rendering Using a Retinex-Based
Adaptive Filter, IEEE Transactions on ImageProcessing, Vol. 15, Nr. 9, pp. 2820-2830, 2006.
L. Meylan, S. Daly and S. Süsstrunk, Tone Mapping For High Dynamic Range Displays, Proc.
IS&T/SPIE Electronic Imaging: Human Vision and Electronic Imaging XII, Vol. 6492, 2007.
B. Thompson, Z. Rahman, S. Park, A Multiscale retinex for improved performance in
multispectral image classification. Visual Information Processing IX, Proc. SPIE, 2000
The many papers of Prof. Rizzi and his colleagues may be found at:
http://www.dti.unimi.it/rizzi/paper.htm
344
Acknowledgements:
Fabrizio Di Vittorio of HiComponents, Ladispoli, Italy is hereby thanked for implementing and
adding a fast version of the ACE algorithm of Rizzi et al. and an MRSCR version of the
Retinex algorithm to the HiComponents package at the author's request.
Laurence Meylan, formerly of the EPFL, Lausanne, Switzerland kindly placed her Matlab
code at the author's disposal for porting to Delphi Pascal.
Grid Systems:
References:
Benzing, A., Kimmig, M. 1987, Geographische Koordinaten und Gitterkoordinaten
-Formelsammlung zur Koordinatentransformation für Gauß -Krüger-, UTM und Schweizer
Landesgitter, Geographisches Taschenbuch, Stuttgart
Benzing, A., Kimmig, M. 1987, Das Kartengitter der topographischen Karten Frankreichs,
Kartographische Nachrichten, 6 1987 229-231
Boðhvarsson Á., 1971, Explanatory Remarks Concerning Iceland's Geodetic Survey, Review
of the Iceland Engineering Corporation, Vol.56, No. 2/3
Bolliger, J. 1967, Die Projektion der schweizerischen Plan- und Kartenwerke, Winterthur
Boucher, C. 1979, Les répresentations planes conformes de Lambert, Institute Géographique
Nationale, Paris
Buchwald F. 1976, Den Danske Kortporjektion,System 1934, Dansk Kartografisk Selskab,
Publikation Nr.5, 1976
Brandenberger, C.G. 1985, Koordinatentransformation für digitale kartographische Daten mit
Langrange und Spline Interpolation, Thesis, Institut Kartographie, Eidgenossische Technische
Hochschule, Zürich
Bugayevskiy, L. M., and Snyder, J. P., Map Projections - A Reference Manual: London,
Taylor & Francis, 1995
DMA (Defence Mapping Agency) Technical Manual 8358.1, 1990, Datums, Ellipsoids, Grids,
and Grid Reference Systems. USA Department of Defence, Washington, DC.
DMA Technical Report TR 8350.2, DoD World Geodetic System September, 1991, USA
Department of Defence, Washington, D.C.
Gauss, C.F.C. 1822, Allgemeine Auflösung der Aufgabe, die Teile eine gegebenen Fläche auf
eine andere gegebene Fläche abzubilden, Schumachers Astronomische Abhandlungen, 3
1822 Wagnerin, 1921 reprint, Altona
Ewald, D. 1988, Geodätische Grundlagen und ihr Einfluß auf die topographischen
Kartenwerke in Europa Thesis, Institut für Kartographie der Universität Bonn, Bonn
Fischler, M.A., Bolles, R.C. 1981, Random sample consensus: a paradigm for model fitting
with applications to image analysis and automated cartography. Association for Computing
Machinery Communications, 24, 1981, 381-395
Großmann, W. 1976, Geodätische Rechnungen und Abbildungen in der Landesvermessung,
3rd ed., Konrad Wittwer Verlag, Stuttgart
345
Hake, G. 1982, Kartographie, Sammlung Göschen, Walter de Gryuter, Berlin
Hake G., Grünreich D. 1994, Kartographie, 7. Auflage, Verlag Walter de Gruyter, Berlin - New
York
Harley, J.B. 1975, Ordnance Survey Maps - a descriptive manual, The Ordnance Survey,
Southampton
Heitz, S. 1985, Koordinaten auf geodätischen Bezugsflächen, Ferd. Dümmler's Verlag, Bonn
Hooijberg M. 1997, Practical Geodesy, Spinger-Verlag, Berlin - Heidelberg 1997
Insitute Géographique Nationale, Bruxelles, Systèmes de référence et formules de
transformation en usage en Belgique, IGN, Bruxelles, 1989
Jordan, W., Eggert, O., Knießel, M. 1958, Handbuch der Vermessungskunde, 10te. Aufl., 4
1958 478-489 J.B. Metzler Verlag, Stuttgart
Krüger, L. 1912, Konforme Abbildung des Erdellipsoids in der Ebene., Veröffentlichung des
Kgl. Preuß. Geodätischen Instituts, N.F, 52 1912 Teubner Verlag, Leipzig
Kuntz, E. 1983, Kartennetzentwurfslehre, Sammlung Wichmann, Band, 15 1983 201 Herbert
Wichmann Verlag, Karlsruhe
Kuntz E. 1990, Kartennetzentwurfslehre, 2. Auflage, Herbert Wichmann Verlag GmbH,
Karlsruhe
Maling, D.H. 1973, Co-ordinate Systems and Map Projections, George Philip & Son, Ltd.,
London
Mugnier, C. J. The Republic of Poland, ,Photogrammetric Engineering & Remote Sensing 2000, p.
1063-4.
Ollikainen, M. 1996, The Finnish National Grid Co-ordinate System and the Realisation of the
EUREF-89 in Finland in (Vermeer, see below), p 151-167. World Wide Web page at:
www.nls.fi/maa/papers/kkj.html.
Ordnance Survey 1967, Projection Tables for the Transverse Mercator Projection of Great
Britain, Her Majesty's Stationery Office, London
Poder, K. Implementation of Co-ordinate Transformations. NKG Nordiske Forskarkurser,
Ebeltoft September 1988, Moderne Teknik i Geodaesi og Opmaling, 243 - 280. Kort &
Matrikelstyrelsen, Copenhagen 1989.
Press, W.H., Flannery, B.P., Teukolsky, S.A., Vetterling, W.T., Recurrence relations and
Clenshaw's Recurrence Formula, in: Numerical Recipes, The Art of Scientific Computing,
Cambridge University Press, 1986, 141-145.
Reignier, F. 1957, Les systèmes de projection et leurs applications, Vol. 1, Institut
Géographique Nationale, Paris
Reit, B.G. 1995, Swedish co-ordinate systems, in (Vermeer, see below) p. 145-151.
Reit, B.G. 1997, A simple way of introducing a global reference frame in surveying and
mapping. Survey Review, 34(264) 1997 87-90.
Rennen, M. Basics on Coordinates and their Reference. Akranes, 2002, updated March 2004
On-line, see below:
346
Rennen, M. Map Datum and GPS Navigation in Iceland. Akranes, n.d. On-line, see below.
Roussilhe, H. Emploi des coordonnées rectangulaires stéréographiques pour le calcul de la
triangulation dans un rayon de 560 kilomètres autour de l'origine. International Union of
Geodesy and Geophysics, Section of Geodesy, Travaux, May, v. 1 1922
Schödlbauer, A. 1980, Berechnung von Längen und Azimuten geodätischer Linien auf
Bezugsellipsoiden durch Zurückführung der Gauß-Helmertschen Formeln auf strenge
Formeln der sphärischen Trigonometrie, Allgemeine Vermessungsnachrichten, 4 1980 61-69
Schödlbauer, A. Rechenformeln und Rechenbeispiele zur Landesvermessung, Herbert
Wichmann Verlag, Karlsruhe, Teil 1 ISBN 3-87907-120-9 1981 and Teil 2 ISBN 3-87907-1217 1982
Scollar, I., Weidner, B. 1979, Computer production of orthophotos from single oblique images
or from rotating mirror scanners, Aerial Archaeology, 4 1979 17-28
Scollar, I., Herzog, I., Aniol, R. 1986, Grossmaßstäblich digitale archäologische Kartographie
auf der Basis von Luftbildern, geophysikalischen Messungen und einer Datenbank, Bonner
Jahrbücher, 186 1986 535-556 Rheinland Verlag, Köln
Scollar, I. 1988, An integrated system for large scale digital cartography based on oblique
aerial photographs and a data bank, in: Télédétection et Cartographie Thématique en
Archéologie, Notes et Monographies Techniques, 18 1988 59-76 C.N.R.S., Paris
Scollar, I. 1989, Geodetic and cartographic problems in archaeological data bases at and
within the boundaries of some countries, Computer Applications in Archaeology, 548 1989
251-273 BAR, Oxford
Scollar, I., Tabbagh, A., Hesse, A., Herzog, I. 1990, Archaeological Prospecting and Remote
Sensing in Archaeology, Cambridge University Press, Cambridge ISBN 0 521 32050 X, 673 .
Schut, T.G. Transformatie van rechthoekige RD-coördinaten op de ellipsoïde van Bessel.
NGT Geodesia 92 6 1992 243-247.
Schweizerisches Projektionssystem. Bundesamt für Landestopographie, CH 3084 Wabern,
Switzerland: Formeln für die Umrechnung von Landeskoordinaten in geographische
Koordinaten und umgekehrt. 1984 (no author)
Sigl, R., Torge, W. 1981, Berichte zur XVII Generalversammlung der IUGG, Dezember 1979,
Zeitschrift für Vermessungswesen, 106 1981 53-100
Snyder, J.P. 1982, Map Projections Used by the US Geological Survey, 2nd ed., Geological
Survey Bulletin 1532, U.S. Government Printing Office I 19.3:1532, Washington, D.C.
Snyder, J.P. 1985, Computer - Assisted Map Projection Research, Geological Survey Bulletin
1629, U.S. Government Printing Office I 19.3:1629, Washington, D.C.
Snyder, J. P., Map Projections - A Working Manual, U.S. Geological Survey Professional
Paper 1395, 1987, corrected reprint 1994
Torge W., 2001, Geodesy, 3rd Edition, Verlag Walter de Gruyter, Berlin - New York
United Nations 1976, The status of world topographic mapping, World Cartography, 14 1976
United Nations Publication E76 I13, New York
Vermeer, M.,ed. Co-ordinate Systems, GPS and the Geoid, Reports of the Finnish
Geodetic Institute, 95:4, ISBN 951-711-187-8 Helsinki, 1995
347
Zarraoa, N. Coordinate systems in Norway. in (Vermeer, above), p. 125-138.
On-Line Grid References:
Some of the links below may be no longer available. They were used in compiling this help
text, but recent checking has shown that a fair proportion are dead. However, it won't hurt to
try them in turn.
For a good general explanation of co-ordinate systems the following contains useful links:
http://www.colorado.edu/geography/gcraft/notes/gps/gps_f.html
For datum transformations and their mathematics see the superb Australian documentation at
http://www.anzlic.org.au/icsm/gdatm/gdatm.htm
and
http://www.auslig.gov.au
For detailed references to European systems see Stefan A. Voser's very useful:
http://www.geocities.com/CapeCanaveral/1224/mapref.html
For DMA TM 8358.1 and many other useful references are available in PDF and HTML
format on the Web:
http://164.214.2.59/GandG/pubs.html
There is also a link for downloading GeoTrans ver. 2, a free batch plus single point datum
conversion program for many different datums which replaced the old DOS MADTRAN and
the earlier Windows DTCC programs.
http://164.214.2.59/GandG/geotrans.htm
A very clear and concise summary of many of the formulae needed for major grid systems
based on Snyder can be found in the file POSC7.DOC issued by the Petrotechnical Open
Software Corporation entitled "POSC literature pertaining to Geographical and Projected
Coordinate System Transformations." See the POSC Web site:
http://www.posc.org
Download the file gnote7.zip which contains gnote7.doc, a Word for Windows 6 formatted
paper which may be printed using WordPad or many versions of Word for Windows or
equivalents. The latest revision is dated September 2000.
Raivo Aunap, of the University of Tartu, Department of Geography maintains a site with
Estonian data:
http://www.geo.ut.ee/~raivo/ESTCOORD.HTML
See also the web page from R. Burtch for links to a number of datum sources and other
relevant references:
http://www.pharmacy.ferris.edu/faculty/burtchr/index.htm
For recent information on Hungary see:
348
http://lazarus.elte.hu/gb/geodez/geodind.htm
For an excellent discussion of mapping and grids in Iceland and a very detailed explanation of
the Icelandic grid systems and a programme for transformation between them can be found in
the manual for the Iceland coordinate on-line conversion programme at:
http://www.lmi.is
For experienced programmers who wish to use the Maplib32.dll, the computational
component of AirPhoto for co-ordinate transformation, the documentation for the interface can
e examined and printed if desired. The dynamic link library may be used freely without
AirPhoto from any compatible programming language or database which can use standard
Windows dynamic link libraries for other purposes.
Acknowledgements:
R. Aunap, of the University of Tartu, Estonia provided data for the new L-EST'92 grid system
and the most up-to-date values for the Bursa-Wolf transformation as well as data for other
grid systems used in the past.
C. Bartha, Termékfelelõs/product manager Guards Rt. SATCOM division provided correction
data for the Hungarian system.
G. Chalaris, geodesist and GIS specialist at Hellenic Military Geographical Service, Athens
provided the data needed to implement the new Greek system.
R. Degeest of the University of Louvain kindly provided the difficult to come-by documentation
from the Institut Géographique Nationale needed to include the Belgian Lambert Conformal
system.
P. Dana of the University of Texas provided valuable advice on translating from one datum to
another. He also graciously granted permission to use quite a number of the illustrations from
his web pages here. This World Wide Web page on mapping, co-ordinate and datum systems
is an invaluable introduction to the subject (see below).
M. Doneus of the University of Vienna kindly supplied detailed documentation for the Austrian
grid.
E. Grissom of ZI-Imaging Inc. Huntsville, Alabama, is heartily thanked for much useful advice
on GeoTiff. The GeoTiff reader and writer is based on code authored by Niles Ritter, formerly
of NASA, Jet Propulsion Laboratory, Pasadena, California now maintained by Frank
Warmerdam of GDAL, Richmond Hill, Ontario, Canada. He too has offered useful advice and
has kindly updated the code to include the Swedish RT90 and Finnish KKJ grids at my
request. For exhaustive details on GeoTiff and links to samples and source code see the web
site of the:
J. Gyorffy of the Department of Cartography, Eötvös University, Budapest provided vital test
data for the Hungarian system.
B.G. Harsson of Statenskartverk, Hönefoss, Norway kindly provided test data for checking the
UTM ED50 and WGS84 calculations used in Norway and pointed out the anomalous
extension of UTM Zone 32 to the west to include Norway's west coast.
R. Hafiez, hydrogeologist at the National Egyptian Drilling and Petroleum Services Co.
(DASCO), Cairo, provided the data needed for programming the Old Egyptian grids of 1907
and made GPS readings to check the accuracy of the results in each area for visible Google
Earth points.
349
J. Leckebusch, formerly Baudirektion Kanton Zürich, Kantonsarchaeologie, provided code
programmed by an unknown author at the ETH Zurich for the unique Rosenmund-Odermatt
oblique transverse Mercator mapping used in Switzerland. He also provided copies of the
official documentation along with test data from the Bundesamt fuer Landestopographie,
Wabern, Switzerland
A. Müller of the Bundeswehr Militärgeographisches Institut provided unpublished data
concerning the grid system used in the former Warsaw pact countries and in those along the
northern rim of the Mediterranean. He also gave details of the mapping systems and BursaWolff transform contents for a number of the more obscure systems in south-east Europe.
F. Madsen of Kort & Matrikelstyrelsen, Copenhagen most kindly supplied a photocopy of the
unpublished lecture notes of Knud Poder given in the bibliography which contained Algol code
for the fast Clenshaw summation method of Gauss-Krüger calculation on which the routines
used in the programs were based.
H. Masaharu, of the Geographic Information Analysis Research Division Geography and
Crustal Dynamics Research Centre, Geographical Survey Institute, Tsukuba, supplied the
information needed to programme the conversions to and from lat/lon from both the old and
new Tokyo datum for all 19 Japanese regions and was very helpful in explaining the intricate
details of the regional system used.
P. Martins, Portuguese Institute for Cartography and Cadastre advised on details of the older
and more recent Portuguese cadastral maps.
Y. Nishimura of the Nara National Cultural Properties Research Institute, provided test data
and was most helpful in obtaining access to those able to provide all required details on the
complex Japanese cartographic system.
I. Oltean of Cluj provided 1:5000 data for Romania and tested the routines for conversion
between the GK6 grid and WGS84.
J. T. Pinto, Portuguese Institute for Cartography and Cadastre furnished extensive
documentation on all Portuguese datums and parameters for Bursa-Wolf and Molodensky
transformation as well as the equations and programs used in his institution.
A. Portnoi, Moscow State University of Geodesy and Cartography advised via e-mail on
details of the Russian and Baltic nation grids.
B. G. Reit, Senior Research Geodesist, The National Land Survey of Sweden, Gavle
provided all the details concerning the Swedish RT90 Datum and offered valuable advice and
help on conversions with a special technique to the WGS84 Datum (see ref. 'A simple...'
below). I am especially grateful to him for extended e-mail advice, almost amounting to a
correspondence course in high precision geodesy, and for the source code for the high
precision Helmert 3D conversion.
He also called attention to the fast Clenshaw summation method used in most GK and UTM
routines according to the unpublished lecture notes of Knud Poder of the National Survey and
Cadastre in Copenhagen. He advised freely on many of the arcane details of datum
transformation and provided Fortran code for the linearized and non-linear versions of the
Helmert transform which was readily translated to the Delphi Pascal code used in the
program.
J. Schoppmeyer of the Bonn University Cartographic Institute called attention to an
unpublished master's thesis by D. Ewald. It summarises the geodetic properties and
nomenclature of all of the readily accessible European mapping systems and contains a
copious bibliography which we have freely drawn upon here. Dr. Schoppmeyer also provided
a number of other references which were found extremely useful in preparing this help file
and the program.
350
M. Rennen of Landmaelingar Islands provided important documentation for the family of
Iceland grids, and his web pages at the national mapping agency of Iceland (see below) offer
a wealth of current and historical information.
The late J. P. Snyder of the US Geological Survey who passed away in 1997 while this work
was being planned, offered much useful e-mailed advice on the details of grid systems. He
was a great source of inspiration in the completion of Winbasp which contained the
predecessor of the mapping components of AirPhoto. The author is eternally grateful to him.
His 'Working Manual' is a major source of information for all those who wish to know more
about the history and mathematics of almost every widely used map projection, and it has an
exhaustive bibliography. A great man has left us a great work. He is sorely missed.
J. Steed of the Australian Surveying and Land Information Group (Auslig) kindly sent the data
for the Australian national grid which was used to test Winbasp and then incorporated into
AirPhoto for that continent thanks to the intervention of Ian Johnson of the University of
Sydney.
M. Tobita of the Space Geodesy Laboratory of the Geographical Survey Institute at Tsukuba
provided the official conversion programmes between the old and new Tokyo datums.
J. Thiel of Luxembourg provided the unpublished data for the Luxembourg national grid.
O. van Vlijmen of the Netherlands provided an unpublished corrected version of the Polish
System 65 grid code which could be converted for use in AirPhoto.
M. Vermeer, National Land Survey, Helsinki, Finland offered details of the Baltic national
grids.
S. S. Villadsen, Kort & Matrikelstyrelsen, Copenhagen, Denmark provided further information
on the east European and east German grids.
F. Warmerdam provided many updates for the GeoTiff conversion code at the author's
request. His web site contains a number of very useful utilities.
http://www.gdal.org/index.html
B. Weidner programmed Fortran subroutines for conversions between geographic and GK coordinates and for operations on German map numbers which were used in the Bonn
Denkmälerdatenbank at the end of the 1970's . These were revised by I. Scollar and
reprogrammed in Pascal for Winbasp then modified for other systems. Weidner's routines for
the German 1:25000 map numbering system remain in the Maplib32.dll, but the others have
been replaced by Reit-Poder-Clenshaw or Schoedelbauer techniques.
P. Zoetbrood of Archis, Amersfoort provided the 1993 publication by T.G. Schut for the new
high precision revision of the Stereographic co-ordinate system used in the Netherlands using
quintic polynomials.
351
Appendix 7
Mapping Library
352
The Map library interface
This section will only be of interest to experienced programmers who want to use the number
crunching capabilities of Maplib32.dll in conjunction with a database supporting dll's or
another Windows program which needs these calculations.
Maplib uses extended (10 byte Floating) arithmetic for maximum precision on Intel
processors. This may have to be changed to Double or Quad or with other processors if you
use the Maplib32.dll in a database program or on a non-Intel platform with Windows
emulation.
Input and output latitudes and longitudes are always in max. ± 90 and ± 180 decimal degrees
respectively for all systems.
If you use Paradox, dBase for Windows, Access and a few others, you can write code in
Object Pal or an equivalent to translate the decimal latitude and longitude into any of the
supported coordinate systems via the Maplib32.dll.
To do this, you must write a small interface program which can communicate with
Maplib32.dll, similarly for C programs, where the extended floating point conversion to double
precision may have to be implemented in assembler if not supported by the compiler. The
same applies to Visual Basic. This requires only two instructions, since the floating point
hardware does the conversion:
If a is an extended floating point variable and b is a double precision variable then:
a:= b: is equivalent to:
fld qword ptr [b]
fstp tbyte ptr [a]
conversely, b: = a: is equivalent to:
fld tbyte ptr [a]
fstp qword ptr [b]
If the language used permits in-line assembler but doesn't have extended floating point, then
an array with 10 bytes may be used in place of a, or object code must be generated with an
assembler and linked appropriately.
If the language has only 8 byte floating point (64 bit), e.g. Visual Basic, then use the routines
ExtToDbl and DblToExt for each 10 byte floating point variable which must be interfaced. As
an example for that language,
Type Extended
bytData(0 To 9) As Byte
End Type
Public Declare Sub ExtToDbl Lib "MapLib32.dll" (ByRef extValue As Any, ByRef dblValue As
Double)
Public Declare Sub DblToExt Lib "MapLib32.dll" (ByVal dblValue As Double, ByRef extValue
As Any)
and pass dblValue or extValue as needed to these routines for conversion.
Before you use this interface, test the current version of the dll. The dll version control
constant should always be tested before using the procedures. This will prevent crashes
353
when an attempt is made to address non-extant procedures in an older version of the dll
which Windows may find first.
An interfaced 4 byte signed integer variable in Maplib32 sets the primary and secondary
version numbers in hexadecimal. Use an equivalent of the routine shown below. The current
version is always shown here. FunctionExists and GetMaplibVersion are built into
Maplib32.dll for this testing operation.
W. Terreblanche, Somerset West, South Africa, has provided the following example for use
with C# and .NET:
EntryPoint numbers are always one less than in the Delphi original. For example to declare
ExtToDbl and DblToExt use:
public class DllWrapper
{
[DllImport(@"C\Program Files\AirPhoto\maplib32.dll",EntryPoint="#109")]
public static extern void ExtToDbl(out decimal ExtValue,out double DblValue);
[DllImport(@"C\Program Files\AirPhoto\maplib32.dll",EntryPoint="#110")]
public static extern void DblToExt(double DblValue, out decimal ExtValue);
[DllImport(@"C\Program Files\AirPhoto\maplib32.dll",EntryPoint="#24")]
public static extern void GeotoBelgian(out decimal B,out decimal L);
}
Then the following example code applies:
private void ConvertToBelgian(out double Lng,out double Lat)
{
decimal B,L;
DllWrapper.DblToExt(Lng,out B);
DllWrapper.DblToExt(Lat,out L);
DllWrapper.GeotoBelgian(out B,out L);
DllWrapper.ExtToDbl(out B,out Lng);
DllWrapper.ExtToDbl(out L,out Lat);
}
Gauss-Krueger and UTM or equivalent calculations are done using coefficients up to the 8th
order in the original Krueger 1912 equations, modified for Clenshaw summation of the series
expansions. For other transformations, the equations used are those of the respective
national mapping services.
Sample Code for Initialisation:
Procedure CheckVersionNumber;
{Always check for the presence of the dll and its hexadecimal version number before anything
else!!!}
Const
RequiredVersion: Integer = $02110000;
Var
Handle: Thandle;
Begin
Handle := LoadLibrary('MAPLIB32.DLL');
If Handle > 31 Then
354
If FunctionExists('MAPLIB32.DLL', 'GetMapLibVersion') Then
If (GetMapLibVersion < RequiredVersion) Then
ShowMessage('MapLib32.Dll is an old version. Calibration may fail!');
End;
{*************************************************************************
*
* U N I T N A M E - Maplib32
*
*-------------------------------------------------------------------------* Purpose: Interface to Maplib32.dll
Conversions of International and National coordinates to Lat/Lon
or the inverse.
Author: I. Scollar, Last Revised 11 - April - 2009
References:
See the AirPhoto Help file under the topic GIS and Coordinate
Systems.
Notes:
For languages other than Borland Pascal and Delphi, this file serves
only as an example for programming an interface to the Maplib32.dll. The
function and procedure calls must be rephrased in a way appropriate
to the language used.
Types:
Extended:
For languages and processors which do not support the Intel
hardware extended 10 byte floating point format, suitable
conversions to double or quad floating point must be written for the
calling program in assembler if need be.
Integers:
4 bytes, signed, Intel high bit order.
Pchar:
A pointer to memory with sufficient room for a null terminated string
of at least 4 bytes.
WordBool:
An 16 bit boolean variable; 0=False;
Boolean:
An 8 bit boolean variable, 0=False;
355
Enumerated Types (8bit, Pascal convention):
CoordinateType = (Australian, Austrian, Belgian, LatLong, {Decimal}
Degrees, Denmark, FinlandKKJ, Finland, {WGS84} French, GaussKrueger,
GaussKrueger6,
Irish, Italy, Luxemburg, Dutch, {Netherlands} NorwayED50, Norway, {WGS84} Pixels,
Spanish, SwedenRT90, Sweden, {WGS84} Swiss, UK, UTM, UTM_Clarke, GRS80,
WGS84, XY, CzechRepublic, Estonia, EstoniaGK, Hungary, Latvia, Lithuania,
Poland, Portugal, Russia, Slovakia, Slovenia, Greece, Romania, JapanBessel,
JapanGRS80,
AustrianBMN, IsraelPB, IsraelTM, Jordan, PSAD56, SAD69,
Iceland55, Iceland93, PolandGRS80, PolandS65, Egypt, SloveniaD48, SloveniaD96);
EllipsoidType = (AIRYIR, AIRYUK, AUST84, BESSEL, CLARK6, CLARK8, ED50,
ETRF89,
KRASOV, SPHERE, WGS84T, GRS80T, GRS67H, CLARKB, GRS67T);
Stdcall:
Standard Windows API calling order.
**************************************************************************}
unit MapLib32;
interface
uses
Windows;
Const
indexGeomap
indexMisc
= 1;
= indexGeomap + 100;
function GetMaplibVersion: Integer;
function FunctionExists(Dll, Func: PChar): WordBool;
procedure GeotoAustrian(var B, L: Extended; var k, MapNumber: Integer); stdcall;
procedure AustrianToGeo(var R, H: Extended; k, MapNumber: Integer); stdcall;
procedure GeotoAustrianBMN(var B, L: Extended); stdcall;
procedure AustrianBMNToGeo(var R, H: Extended); stdcall;
procedure GeotoAustralian(var B, L: Extended; var Zone: Integer); stdcall;
procedure AustraliantoGeo(var E, N: Extended; Zone: Integer); stdcall;
procedure GeotoBelgian(var B, L: Extended); stdcall;
procedure BelgiantoGeo(var X, Y: Extended); stdcall;
procedure GeotoDutch(var B, L: Extended); stdcall;
procedure DutchtoGeo(var R, H: Extended); stdcall;
procedure GeotoEgypt(var B, L: Extended; var Zone: integer); Stdcall;
procedure EgypttoGeo(var E, N: Extended; Zone: Integer); Stdcall;
procedure GeotoEstonian(var B, L: Extended); Stdcall;
procedure EstonianToGeo(var E, N: Extended); Stdcall;
procedure GeotoFrench(var L, M: Extended; var Zone: Integer); stdcall;
procedure FrenchtoGeo(var X, Y: Extended; Zone: Integer); stdcall;
356
procedure GeotoFinland(var B, L: Extended); stdcall;
procedure FinlandtoGeo(var R, H: Extended); stdcall;
procedure GeotoFinlandWGS(var B, L: Extended); stdcall;
procedure FinlandWGStoGeo(var R, H: Extended); stdcall;
procedure GeotoGK(var B, L: Extended; var k: Integer); stdcall;
procedure GKtoGeo(var R, H: Extended); stdcall;
procedure GeotoGK6(var B, L: Extended; var Zone: Integer); stdcall;
procedure GK6toGeo(var E, N: Extended); stdcall;
procedure GeotoGreekGRS80(var B, L: Extended); stdcall;
procedure GreekGRS80toGeo(var E, N: Extended); stdcall;
procedure GeotoHungarian(var B, L: Extended); Stdcall;
procedure HungariantoGeo(var E, N: Extended); Stdcall;
procedure GeotoIcelandHjorsey(var B, L: Extended); Stdcall;
procedure IcelandHjorseyToGeo(var E, N: Extended); Stdcall;
procedure GeotoIcelandISN93(var B, L: Extended); Stdcall;
procedure IcelandISN93ToGeo(var E, N: Extended); Stdcall;
procedure GeoToIrish(var B, L: Extended; var MapName: PChar); stdcall;
procedure IrishtoGeo(var E, N: Extended; InMapName: PChar); stdcall;
procedure GeotoIsraelTM(var B, L: Extended); Stdcall;
procedure IsraelTMtoGeo(var E, N: Extended); Stdcall;
procedure GeotoIsraelPB(var B, L: Extended); Stdcall;
procedure IsraelPBtoGeo(var E, N: Extended); Stdcall;
procedure GeotoItalian(var B, L: Extended; var Zone: Integer); stdcall;
procedure ItaliantoGeo(var E, N: Extended; Zone: Integer); stdcall;
procedure GeotoJapanBessel(var B, L: Extended; var k: Integer); stdcall;
procedure JapanBesseltoGeo(var R, H: Extended; k: Integer); stdcall;
procedure GeotoJapanGRS80(var B, L: Extended; var k: Integer); stdcall;
procedure JapanGRS80toGeo(var R, H: Extended; k: Integer); stdcall;
procedure GeotoJordan(var B, L: Extended); Stdcall;
procedure JordantoGeo(var E, N: Extended); Stdcall;
procedure GeotoLithuanian(var B, L: Extended); Stdcall;
procedure LithuaniantoGeo(var E, N: Extended); Stdcall;
procedure GeotoLuxemburg(var B, L: Extended); stdcall;
procedure LuxemburgtoGeo(var R, H: Extended); stdcall;
procedure GeotoPolandGRS80(var B, L: Extended); stdcall;
procedure PolandGRS80toGeo(var E, N: Extended); stdcall;
procedure GeotoPolandR65(var B, L: Extended; var Zone: Integer); stdcall;
procedure PolandR65toGeo(var E, N: Extended; Zone: Integer); stdcall;
procedure GeotoPortugalD73(var B, L: Extended); Stdcall;
357
procedure PortugaltoGeoD73(var E, N: Extended); Stdcall;
procedure GeotoPortugalDLx(var B, L: Extended); Stdcall;
procedure PortugaltoGeoDLx(var E, N: Extended); Stdcall;
procedure GeotoRomanian(var Lat, Lon: Extended); Stdcall;
procedure RomaniantoGeo(var East, North: Extended); Stdcall;
procedure GeotoSloveniaD96(var B, L: Extended); Stdcall;
procedure SloveniaD96toGeo(var E, N: Extended); Stdcall;
procedure GeotoSloveniaD48(var B, L: Extended); Stdcall;
procedure SloveniaD48toGeo(var E, N: Extended); Stdcall;
procedure GeotoSweden(var B, L: Extended); stdcall;
procedure SwedentoGeo(var R, H: Extended); stdcall;
procedure GeotoSwedenWGS(var B, L: Extended); stdcall;
procedure SwedenWGStoGeo(var E, N: Extended); stdcall;
procedure GeoToSwiss(B, L: Extended; var X, Y: Extended); stdcall;
procedure SwissToGeo(X, Y: Extended; var B, L: Extended); stdcall;
procedure GeotoTK(B, L: Extended; var Itk: Integer); stdcall;
procedure TKtoGeo(Itk: Integer; var B, L: Extended; var k: Integer); stdcall;
procedure GeoToUK(var B, L: Extended; var MapName: PChar); stdcall;
procedure UKtoGeo(var E, N: Extended; InMapName: PChar); stdcall;
procedure GeotoUTM(var B, L: Extended; var Zone: Integer); stdcall;
procedure UTMtoGeo(var E, N: Extended; Zone: Integer; South: Boolean); stdcall;
procedure GeotoUTMClarke(var B, L: Extended; var Zone: Integer); stdcall;
procedure UTMClarketoGeo(var E, N: Extended; Zone: Integer; South: Boolean); stdcall;
procedure GeotoUTMGRS67(var B, L: Extended; var Zone: Integer); stdcall;
procedure UTMGRS67toGeo(var E, N: Extended; Zone: Integer; South: Boolean); stdcall;
procedure GeotoUTMGRS80(var B, L: Extended; var Zone: Integer); stdcall;
procedure UTMGRS80toGeo(var E, N: Extended; Zone: Integer; South: Boolean); stdcall;
procedure GeotoUTMWGS84(var B, L: Extended; var Zone: Integer); stdcall;
procedure UTMWGS84toGeo(var E, N: Extended; Zone: Integer; South: Boolean); stdcall;
procedure DegreestoDecimal(BDegrees, BMinutes: Integer; BSeconds: Extended;
LDegrees, LMinutes: Integer; LSeconds: Extended;
var B, L: Extended); stdcall;
procedure DecimaltoDegrees(var BDegrees, BMinutes: Integer;
var BSeconds: Extended;
var LDegrees, LMinutes: Integer;
var LSeconds: Extended;
B, L: Extended); stdcall;
procedure Molodensky(var alat, alon, H, a, f, adb, bda, esq, da, df, dx, dy, dz,
tlat, tlon, th: Extended); stdcall;
procedure Helmert(var B, L, Z: Extended; DX, DY, DZ, RX, RY, RZ, Scale: Extended;
Inverse, Linear: Boolean; EllipseIn, EllipseOut: Integer); Stdcall;
358
procedure DistAzim(EllipseIn: Integer; lat1, lon1, lat2, lon2: Extended; var az1, az2, s:
extended); Stdcall;
procedure Gauss_inv(EllipseIn: Integer; lat1, lon1, lat2, lon2: Extended; var az1, az2, s:
extended); Stdcall;
procedure ExtToDbl(var ExtValue: Extended; var DblValue: Double); stdcall;
procedure DbltoExt(DblValue: Double; var ExtValue: Extended); stdcall;
implementation
const
RequiredVersion: Integer = $02110000;
function FunctionExists(Dll, Func: PChar): WordBool;
{-Return True if Func exists in Dll}
var
M: THandle;
begin
M := GetModuleHandle(Dll);
if M <> 0 then
FunctionExists := GetProcAddress(M, Func) <> nil
else
FunctionExists := False;
end;
procedure TKtoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 1;
procedure GeotoTK; external 'MAPLIB32.DLL' Index indexGeomap + 2;
procedure GeotoGK; external 'MAPLIB32.DLL' Index indexGeomap + 3;
procedure GKtoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 4;
procedure GeotoUTM; external 'MAPLIB32.DLL' Index indexGeomap + 5;
procedure UTMtoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 6;
procedure GeotoDutch; external 'MAPLIB32.DLL' Index indexGeomap + 7;
procedure DutchtoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 8;
procedure GeoToSwiss; external 'MAPLIB32.DLL' Index indexGeomap + 9;
procedure SwissToGeo; external 'MAPLIB32.DLL' Index indexGeomap + 10;
procedure GeotoFrench; external 'MAPLIB32.DLL' Index indexGeomap + 11;
procedure FrenchtoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 12;
procedure GeotoAustrian; external 'MAPLIB32.DLL' Index indexGeomap + 13;
procedure AustrianToGeo; external 'MAPLIB32.DLL' Index indexGeomap + 14;
procedure GeoToUK; external 'MAPLIB32.DLL' Index indexGeomap + 15;
procedure UKtoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 16;
procedure GeoToIrish; external 'MAPLIB32.DLL' Index indexGeomap + 17;
procedure IrishtoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 18;
procedure GeotoGK6; external 'MAPLIB32.DLL' Index indexGeomap + 19;
procedure GK6toGeo; external 'MAPLIB32.DLL' Index indexGeomap + 20;
procedure GeotoUTMClarke; external 'MAPLIB32.DLL' Index indexGeomap + 21;
procedure UTMClarketoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 22;
procedure GeotoBelgian; external 'MAPLIB32.DLL' Index indexGeomap + 23;
procedure BelgiantoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 24;
procedure GeotoLuxemburg; external 'MAPLIB32.DLL' Index indexGeomap + 25;
procedure LuxemburgtoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 26;
procedure GeotoAustralian; external 'MAPLIB32.DLL' Index indexGeomap + 27;
procedure AustraliantoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 28;
procedure GeotoFinland; external 'MAPLIB32.DLL' Index indexGeomap + 29;
procedure FinlandtoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 30;
359
procedure GeotoFinlandWGS; external 'MAPLIB32.DLL' Index indexGeomap + 31;
procedure FinlandWGStoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 32;
procedure GeotoSweden; external 'MAPLIB32.DLL' Index indexGeomap + 33;
procedure SwedentoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 34;
procedure GeotoSwedenWGS; external 'MAPLIB32.DLL' Index indexGeomap + 35;
procedure SwedenWGStoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 36;
procedure GeotoUTMWGS84; external 'MAPLIB32.DLL' Index indexGeomap + 37;
procedure UTMWGS84toGeo; external 'MAPLIB32.DLL' Index indexGeomap + 38;
procedure GeotoItalian; external 'MAPLIB32.DLL' Index indexGeomap + 39;
procedure ItaliantoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 40;
procedure GeotoUTMGRS80; external 'MAPLIB32.DLL' Index indexGeomap + 41;
procedure UTMGRS80toGeo; external 'MAPLIB32.DLL' Index indexGeomap + 42;
procedure GeotoEstonian; external 'MAPLIB32.DLL' Index indexGeomap + 43;
procedure EstoniantoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 44;
procedure GeotoGreekGRS80; external 'MAPLIB32.DLL' Index indexGeomap + 45;
procedure GreekGRS80toGeo; external 'MAPLIB32.DLL' Index indexGeomap + 46;
procedure GeotoPortugalD73; external 'MAPLIB32.DLL' Index indexGeomap + 47;
procedure PortugaltoGeoD73; external 'MAPLIB32.DLL' Index indexGeomap + 48;
procedure GeotoPortugalDLx; external 'MAPLIB32.DLL' Index indexGeomap + 49;
procedure PortugaltoGeoDLx; external 'MAPLIB32.DLL' Index indexGeomap + 50;
procedure GeotoHungarian; external 'MAPLIB32.DLL' Index indexGeomap + 51;
procedure HungariantoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 52;
procedure GeotoLithuanian; external 'MAPLIB32.DLL' Index indexGeomap + 53;
procedure LithuaniantoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 54;
procedure GeotoRomanian; external 'MAPLIB32.DLL' Index indexGeomap + 55;
procedure RomaniantoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 56;
procedure GeotoJapanBessel; external 'MAPLIB32.DLL' Index indexGeomap + 57;
procedure JapanBesseltoGeo; external 'MAPLIB32.DLL' Index indexGeomap + 58;
procedure GeotoJapanGRS80; external 'MAPLIB32.DLL' Index indexGeomap + 59;
procedure JapanGRS80toGeo; external 'MAPLIB32.DLL' Index indexGeomap + 60;
procedure GeotoAustrianBMN; external 'MAPLIB32.DLL' Index indexGeomap + 61;
procedure AustrianBMNToGeo; external 'MAPLIB32.DLL' Index indexGeomap + 62;
procedure GeotoJordan; external 'MAPLIB32.DLL' Index indexGeomap + 63;
procedure JordanToGeo; external 'MAPLIB32.DLL' Index indexGeomap + 64;
procedure GeotoIsraelTM; external 'MAPLIB32.DLL' Index indexGeomap + 65;
procedure IsraelTMToGeo; external 'MAPLIB32.DLL' Index indexGeomap + 66;
procedure GeotoIsraelPB; external 'MAPLIB32.DLL' Index indexGeomap + 67;
procedure IsraelPBToGeo; external 'MAPLIB32.DLL' Index indexGeomap + 68;
procedure GeotoUTMGRS67; external 'MAPLIB32.DLL' Index indexGeomap + 69;
procedure UTMGRS67toGeo; external 'MAPLIB32.DLL' Index indexGeomap + 70;
procedure GeoToIcelandHjorsey; external 'MAPLIB32.DLL' index indexGeoMap + 71;
procedure IcelandHjorseyToGeo; external 'MAPLIB32.DLL' index indexGeoMap + 72;
procedure GeoToIcelandISN93; external 'MAPLIB32.DLL' index indexGeoMap + 73;
procedure IcelandISN93ToGeo; external 'MAPLIB32.DLL' index indexGeoMap + 74;
procedure GeoToPolandGRS80; external 'MAPLIB32.DLL' index indexGeoMap + 75;
procedure PolandGRS80ToGeo; external 'MAPLIB32.DLL' index indexGeoMap + 76;
procedure GeoToPolandR65; external 'MAPLIB32.DLL' index indexGeoMap + 77;
procedure PolandR65ToGeo; external 'MAPLIB32.DLL' index indexGeoMap + 78;
procedure GeotoEgypt; external 'MAPLIB32.DLL' Index indexGeomap + 79;
procedure EgyptToGeo; external 'MAPLIB32.DLL' Index indexGeomap + 80;
procedure GeotoSloveniaD96; external 'MAPLIB32.DLL' Index indexGeomap + 81;
procedure SloveniaD96ToGeo; external 'MAPLIB32.DLL' Index indexGeomap + 82;
procedure GeotoSloveniaD48; external 'MAPLIB32.DLL' Index indexGeomap + 83;
procedure SloveniaD48ToGeo; external 'MAPLIB32.DLL' Index indexGeomap + 84;
function GetMaplibVersion: Integer; external 'MAPLIB32.DLL' Index IndexMisc + 1;
procedure DegreestoDecimal; external 'MAPLIB32.DLL' Index IndexMisc + 2;
procedure DecimaltoDegrees; external 'MAPLIB32.DLL' Index IndexMisc + 3;
360
procedure Molodensky; external 'MAPLIB32.DLL' Index IndexMisc + 4;
procedure Helmert; external 'MAPLIB32.DLL' Index IndexMisc + 5;
procedure DistAzim; external 'MAPLIB32.DLL' Index IndexMisc + 6;
procedure Gauss_inv; external 'MAPLIB32.DLL' Index IndexMisc + 7;
procedure ExtToDbl; external 'MAPLIB32.DLL' Index IndexMisc + 8;
procedure DblToExt; external 'MAPLIB32.DLL' Index IndexMisc + 9;
end.
361
Datum Transformation:
Procedure TransformToOrFromWGS(Var X, Y, Z: Extended; Coordinates: CoordinateType;
Inverse: Boolean);
Const
OneSecRho: Extended = Pi / (180.0 * 3600);
EllipsoidType = (AIRYIR, AIRYUK, AUST84, BESSEL, CLARK6, CLARK8, ED50, ETRF89,
KRASOV, SPHERE, WGS84T, GRS80T, GRS67H, CLARKB, GRS67T);
Var
Dx, Dy, Dz, Scale, Rx, Ry, Rz : Extended;
EllipsoidIn: EllipsoidType;
EllipsoidOut: EllipsoidType;
Begin
case Coordinates of
Australian:
begin
DX := -117.763;
DY := -51.510;
DZ := 139.061;
RX := -0.292 * OneSecRho;
RY := -0.443 * OneSecRho;
RZ := -0.277 * OneSecRho;
SCALE := 1.0 + 0.191E-06;
if Inverse then
begin
EllipsoidIn := AUST84;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := WGS84T;
EllipsoidOut := AUST84;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Austrian:
begin
DX := 575.0;
DY := 93.0;
DZ := 466.0;
RX := -5.1 * OneSecRho;
RY := -1.6 * OneSecRho;
RZ := -5.2 * OneSecRho;
SCALE := 1.0 + 2.5E-06;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := Bessel;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
362
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Bessel;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Belgian:
begin
DX := -99.059;
DY := 53.322;
DZ := -112.485;
RX := -0.419 * OneSecRho;
RY := 0.830 * OneSecRho;
RZ := -1.885 * OneSecRho;
SCALE := 1.0 - 1.0E-06;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := ED50;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := ED50;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
CzechRepublic, Poland, Slovakia:
begin
DX := 24.0;
DY := -123.0;
DZ := -94.0;
RX := -0.02 * OneSecRho;
RY := 0.25 * OneSecRho;
RZ := 0.13 * OneSecRho;
SCALE := 1.0 + 1.1E-06;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := Krasov;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Krasov;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
363
end;
end;
Denmark, NorwayED50: {Generic North Sea}
begin
DX := -84.87;
DY := -96.49;
DZ := -126.95;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := ED50;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := ED50;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Estonia:
begin
DX := 0.055;
DY := -0.541;
DZ := -0.185;
RX := -0.0183 * OneSecRho;
RY := 0.0003 * OneSecRho;
RZ := 0.007 * OneSecRho;
SCALE := 1.0 - 0.014E-06;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := GRS80T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := GRS80T;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
EstoniaGK:
begin
DX := 21.58719;
DY := -97.54127;
DZ := -60.92546;
364
RX := -1.01378 * OneSecRho;
RY := -0.58117 * OneSecRho;
RZ := -0.2348 * OneSecRho;
SCALE := 1.0 - 4.6121E-06;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := Krasov;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Krasov;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
FinlandKKJ:
begin
DX := -89.611;
DY := -104.626;
DZ := -118.241;
RX := -4.224 * OneSecRho;
RY := -0.248 * OneSecRho;
RZ := 0.852 * OneSecRho;
SCALE := 1.0 + 1.1E-06;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := ED50;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := ED50;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
French:
begin
DX := -168.0;
DY := -60.0;
DZ := 320.0;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0 + 1.0E-06;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := CLARK8;
365
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := CLARK8;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
GaussKrueger:
begin
DX := 586.0;
DY := 87.0;
DZ := 409.0;
RX := -0.52 * OneSecRho;
RY := -0.15 * OneSecRho;
RZ := 2.82 * OneSecRho;
SCALE := 1.0 + 9.0E-06;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := Bessel;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Bessel;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
GaussKrueger6: {ex-DDR}
begin
DX := 24.0;
DY := -123.0;
DZ := -94.0;
RX := -0.02 * OneSecRho;
RY := 0.25 * OneSecRho;
RZ := 0.13 * OneSecRho;
SCALE := 1.0 + 1.1E-06;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := Krasov;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Krasov;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
366
Integer(EllipsoidOut));
end;
end;
Greece:
begin
dx := -199.870000;
dy := -74.790000;
dz := 246.620000;
rx := 0.0;
ry := 0.0;
rz := 0.0;
Scale := 1.0;
Z := 0.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := GRS80T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := GRS80T;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Hungary: {EOV-GRS67H}
begin
dx := 56.0;
dy := -75.77;
dz := -15.31;
rx := 0.37 * OneSecRho;
ry := 0.20 * OneSecRho;
rz := 0.21 * OneSecRho;
Scale := 1.0 - 1.01E-06;
Z := 0.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := GRS67H;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := GRS67H;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
367
Irish:
begin
DX := -506.0;
DY := 122.0;
DZ := -611.0;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := AIRYIR;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := AIRYIR;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
IsraelPB:
begin
DX := 235.0;
DY := 85.0;
DZ := -264.0;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0;
Z := 0.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := CLARKB;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := CLARKB;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Italy:
begin
DX := -225.0;
DY := -65.0;
DZ := 9.0;
RX := 0.0;
RY := 0.0;
368
RZ := 0.0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := ED50;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := ED50;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
JapanBessel:
begin
{ bracketed parameters from EPSG modified experimentally on four fixed points}
dx := 151.0; { 148.0;}
dy := -510.0; {-507.0;}
dz := -685.0;
rx := 0.0;
ry := 0.0;
rz := 0.0;
Scale := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := BESSEL;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := BESSEL;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
JapanGRS80:
begin
{no Helmert transformation parameters for GRS80 to WGS84}
end;
Jordan:
begin
{NIMA}
{
DX := -103.0;
DY := -106.0;
DZ := -141.0;
}
{Savage-Jordan Valley Authority}
369
DX := -86.0;
DY := -98.0;
DZ := -119.0;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := ED50;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := ED50;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Latvia:
begin
DX := 24.0;
DY := -124.0;
DZ := -82.0;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := Krasov;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Krasov;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Lithuania:
begin
{old Pulkovo Krassovsky, replaced with ETRF89 GRS80
DX := -40.595;
DY := -18.550;
DZ := -69.339;
RX := 2.5080 * OneSecRho;
RY := -1.8319 * OneSecRho;
RZ := -2.6114 * OneSecRho;
370
SCALE := 1.0 - 4.3E-06;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := Krasov;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Krasov;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
}
end;
Luxemburg: {from Mapinfow.prj 2001}
begin
DX := -185.836;
DY := 13.479;
DZ := -14.527;
RX := 0.441203 * OneSecRho;
RY := 3.027399 * OneSecRho;
RZ := -2.607685 * OneSecRho;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := ED50;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := ED50;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Spanish, UTM: {Generic Western Europe}
begin
DX := -87.0;
DY := -98.0;
DZ := -121.0;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := ED50;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
371
end
else
begin
EllipsoidIn := ED50;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Dutch: {Netherlands}
begin
DX := 565.04;
DY := 49.91;
DZ := 465.84;
RX := 0.4094 * OneSecRho;
RY := -0.3597 * OneSecRho;
RZ := 1.8685 * OneSecRho;
SCALE := 1.0 + 4.0772E-06;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := Bessel;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Bessel;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Portugal: {D73}
begin
DX := -239.749;
DY := 88.181;
DZ := 30.488;
RX := -0.26 * OneSecRho;
RY := -0.08 * OneSecRho;
RZ := -1.21 * OneSecRho;
SCALE := 1.0 + 2.23E-06;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := ED50;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := ED50;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
372
end;
Romania:
begin
{from NIMA TR8350.2 of October 1977, quoted in EPSG .csv data}
DX := 28.0;
DY := -121.0;
DZ := -77.0;
RX := 0;
RY := 0;
RZ := 0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := Krasov;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Krasov;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Russia:
begin
DX := 25.0;
DY := -141.0;
DZ := -78.5;
RX := -0.0;
RY := 0.35 * OneSecRho;
RZ := 0.736 * OneSecRho;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := Krasov;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Krasov;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Slovenia:
begin
DX := -678.0;
DY := -179.0;
DZ := -586.0;
373
RX := -14.4 * OneSecRho;
RY := -0.4 * OneSecRho;
RZ := -18.0 * OneSecRho;
SCALE := 1.0 - 2.5E-06;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := Bessel;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Bessel;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
SwedenRT90:
begin
DX := -419.3750;
DY := -99.3520;
DZ := -591.3490;
RX := 0.850458 * OneSecRho;
RY := 1.817245 * OneSecRho;
RZ := -7.862245 * OneSecRho;
SCALE := 1.0 + 0.99496E-06;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := Bessel;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Bessel;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
Swiss:
begin
DX := 660.077;
DY := 13.551;
DZ := 369.344;
RX := 0.805 * OneSecRho;
RY := 0.578 * OneSecRho;
RZ := 0.952 * OneSecRho;
SCALE := 1.00000566;
if Inverse then
begin
EllipsoidIn := ETRF89;
EllipsoidOut := Bessel;
374
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := Bessel;
EllipsoidOut := ETRF89;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
UK: {OSGB 1936 England, Scotland Mean}
begin
DX := 384.0;
DY := -111.0;
DZ := 425.0;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := AIRYUK;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := AIRYUK;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
PSAD56: {Provisional South American Datum 1956}
begin
DX := -288.0; {Average for South America}
DY := 175.0;
DZ := -376.0;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := ED50;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := ED50;
EllipsoidOut := WGS84T;
375
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
SAD69: {South American Datum 1969}
begin
DX := -57.0; {Average for South America}
DY := 1.0;
DZ := -41.0;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := GRS67T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := GRS67T;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
UTM_Clarke: {NAD27, Mean USA}
begin
DX := -8.0;
DY := 160.0;
DZ := 176.0;
RX := 0.0;
RY := 0.0;
RZ := 0.0;
SCALE := 1.0;
if Inverse then
begin
EllipsoidIn := WGS84T;
EllipsoidOut := CLARK6;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end
else
begin
EllipsoidIn := CLARK6;
EllipsoidOut := WGS84T;
Helmert(Y, X, Z, DX, DY, DZ, RX, RY, RZ, Scale, Inverse, False, Integer(EllipsoidIn),
Integer(EllipsoidOut));
end;
end;
end; {case coordinates}
end;
End;
376
Maplib32.dll national & international conversions
Latitude/longitude to grid and grid to latitude/longitude
(*********************************************************************
G e o t o Australian - convert geographical to Australian UTM coordinates
AGD84 ellipsoid
calling sequence:
GeotoAustralian(b,l,Zone)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
Zone - meridian strip number on return
(***********************************************************************
Australian t o G e o - convert Australian UTM to geographical coordinates
calling sequence:
AustraliantoGeo(E,N,Zone)
Zone - UTM Zone number on input
R
- "east" value, latitude upon return
H
- "north" value, longitude upon return
(*********************************************************************
G e o t o Austrian - convert geographical to Austrian Gauss-Krueger
coordinates
calling sequence:
GeotoAustrian(b,l,k, MapNumber)
b
- decimal latitude of point
"rechts" value on return
l
- decimal longitude of point
"hoch" value on return
k
- Meridian strip
MapNumber - 1:50000 Austrian civilian map number
Note:
Austrian GK coordinates may be negative as well as positive. They
are ambiguous unless the meridian strip or map number is also specified.
There are 3 possible strip numbers, 28, 31, 34 (degrees east of Ferro
at 17 40' W). There are 213 maps, sequentially numbered at .25 degree
longitude and latitude intervals relative to the Ferro meridian, beginning
with 27 Ferro degrees = 9.333334 E Greenwich and 46.25 N. Along the
borders of Austria with neighbouring countries, only those map sheets
containing Austrian territory are numbered. Thus, a complex table look-up
rather than a simple transformation algorithm has to be used to determine
the map number from the geographic coordinates. Austrian military maps
have a different even more ambiguous map numbering scheme which is not
377
supported here.
Constants from Schödelbauer 1982, Part 1, p. 2 & 14
(***********************************************************************
AustrianToGeo - convert Austrian Gauss-Krueger to geographical coordinates
calling sequence:
AustrianToGeo(r,h,k, MapNumber)
r
- "rechts" value, latitude upon return
h
- "hoch" value, longitude upon return
k
- Meridian W. of Ferro
MapNumber 1:50000 map number, required if k = 0
(*********************************************************************
G e o t o AustrianBMN - convert geographical to Austrian Gauss-Krueger BMN
(BundesMeldeNetz)coordinates
calling sequence:
GeotoAustrianBMN(b,l)
b
- decimal latitude of point
"rechts" value on return
l
- decimal longitude of point
"hoch" value on return
(***********************************************************************
AustrianBMN t o G e o - convert Austrian BMN Gauss-Krueger to geographical
coordinates
calling sequence:
AustrianBMNtoGeo(r,h)
r
- "rechts" value, latitude upon return
h
- "hoch" value, longitude upon return
(*********************************************************************
G e o t o B e l g i a n - convert geographical to Belgian coordinates
calling sequence:
GeotoBelgian(b,l)
b
- decimal latitude of point
"X" value on return
l
- decimal longitude of point
"Y" value on return
Constants from Systèmes de référence et formules de transformation en
usage en Belgique, La Direction de la Géodesie, Institut Géographique
Nationale, Abbaye de la Cambre, Bruxelles, Mai 1989, Lambert projection.
(***********************************************************************
B e l g i a n T o G e o - convert Belgian to geographical coordinates,
378
calling sequence:
BelgianToGeo(X,Y)
X
- "east" value, longitude upon return
Y
- "north" value, latitude upon return
(*********************************************************************
G e o t o D u t c h - convert geographical to Dutch stereographic
coordinates, new maps
coefficients from T.G. Schut, Transformatie van rechtkoekige RDcoördinaten naar geografische coördinaten op de ellipsoïde van Bessel
NGT Geodesia 92 6 1992 243-247.
calling sequence:
GeotoDutch(b,l)
b
- decimal latitude of point
"y" value on return
l
- decimal longitude of point
"x" value on return
(***********************************************************************
D u t c h t o G e o - convert Dutch to geographical coordinates
coefficients from T.G. Schut, Transformatie van rechtkoekige RDcoördinaten naar geografische coördinaten op de ellipsoïde van Bessel
NGT Geodesia 92 6 1992 243-247.
calling sequence:
DutchtoGeo(R,H)
R
- "x" value, decimal longitude upon return
H
- "y" value, decimal latitude upon return
(*********************************************************************
G e o t o E g y p t - convert geographical to Old Egyptian Coordinates
Helmert 1906 ellipsoid
calling sequence:
GeotoEgypt(b,l, zone)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
zone - Blue, Red, Purple, Purple Extended Belt on return
(*********************************************************************
E g y p t t o G e o - convert Old Egyptian to geographical coordinates
Helmert 1906 Ellipsoid
379
calling sequence:
EgepttoGeo(E,N,Zone)
E
N
- "east" value, latitude upon return
- "north" value, longitude upon return
**********************************************************************)
G e o t o E s t o n i a n - convert GRS80 geographical to Estonian
coordinates
calling sequence:
GeotoEstonian(B,L)
B
- decimal latitude of point
"East" value on return
L
- decimal longitude of point
"North" value on return
Standard Lambert Conformal 2 parallel coordinate transformation
for Estonia L-EST'92 using the method described in Snyder, US Geological
Survey Professional Paper 1395, 4th Ed. 1987, pp. 107-109. All map constants
are precomputed.
Data from Raivo Aunap, University of Tartu, Department of Geography
http://www.geo.ut.ee/~raivo/ESTCOORD.HTML
(*******************************************************************
E s t o n i a n T o G e o - convert Estonian to GRS80 geographical
coordinates
calling sequence:
EstonianToGeo(E,N)
E
- "east" value on input, longitude upon return
N
- "north" value on input, latitude upon return
(*********************************************************************
G e o t o F i n l a n d - convert geographical to Finland coordinates
calling sequence:
GeotoFinland(b,l)
b
- decimal latitude of point in ED50 datum
"X" value on return
l
- decimal longitude of point in ED50 datum
"Y" value on return
Following data from Web Page http://www.nls.fi/maa/papers/kkj.html by
Matti Ollikainen
National Land Survey
Geographical Data Centre
Opastinlilta 12, PO Box 84
FIN-00521 Helsinki, Finland
380
Hayford ellipsoid of 1924
The KKJ Finnish Datum is first converted to ED50 Datum before calculations
begin following the rotation, scaling and translation formula given
in a publication of the Finnish Geodetic Institute:
Matti Ollikainen, GPS-koordinaattien muuntamien
kartastokoordinaattijäjestelmaän
taken from the English translation on the WWW page cited. This makes the
Finnish latitudes and longitudes compatible with the others in Europe,
but will give slightly different values of the order of 3 arc seconds from
those given on Finnish maps.
(***********************************************************************
F i n l a n d T o G e o - convert Finland to geographical coordinates,
ED50 Datum (see GeoToFinland)
calling sequence:
FinlandToGeo(R,H)
R
- "east" value, longitude upon return, ED50 Datum
H
- "north" value, latitude upon return, ED50 Datum
The Finnish KKJ Coordinates are first converted to Gauss-Krüger ED50
Coordinates before calculations begin as described above. The inverse
of the Ollikainen transformation has been computed.
(*********************************************************************
G e o t o F i n l a n d W G S - convert geographical to Finland coordinates
calling sequence:
GeotoFinland(b,l)
b
- decimal latitude of point, WGS84 Datum
"X" value on return
l
- decimal longitude of point, WGS84 Datum
"Y" value on return
Following data from Web Page http://www.nls.fi/maa/papers/kkj.html by
Matti Ollikainen
National Land Survey
Geographical Data Centre
Opastinlilta 12, PO Box 84
FIN-00521 Helsinki, Finland
Hayford ellipsoid of 1924
The WGS84 lat/lon is first converted to ED50 then to KKJ Finnish Datum,
following the rotation, scaling and translation formula given
in a publication of the Finnish Geodetic Institute:
Matti Ollikainen, GPS-koordinaattien muuntamien
381
kartastokoordinaattijäjestelmaän
taken from the English translation on the WWW page cited.
(***********************************************************************
F i n l a n d T o G e o W G S- convert Finland to geographical coordinates,
WGS84 Datum (see GeoToFinland)
calling sequence:
FinlandToGeo(R,H)
R
- "east" value, longitude upon return, WGS84 Datum
H
- "north" value, latitude upon return, WGS84 Datum
The Finnish KKJ Coordinates are first converted to Gauss-Krüger ED50
Coordinates before calculations begin as described above. The inverse
of the Ollikainen transformation has been computed. Lastly, the
ED50 Datum is converted to WGS84.
(*********************************************************************
G e o t o F r e n c h - convert geographical to French Lambert
coordinates
calling sequence:
GeotoFrench(L,M,Zone)
L
- decimal latitude of point
"Y" value on return (North)
M
- decimal longitude (Méridien) of point
"X" value on return (East)
Zone - strip number on return
(***********************************************************************
F r e n c h t o G e o - convert French Lambert to geographical coordinates
calling sequence:
FrenchtoGeo(X,Y,Zone)
Zone - French Zone number on input
X
- "X" value, latitude upon return
Y
- "Y" value, longitude upon return
(*********************************************************************
G e o t o F r e n c h L 9 3- convert GRS80 geographical to French Lambert 93
coordinates
calling sequence:
GeotoFrenchL93(B,L)
B
- decimal latitude of point
"East" value on return
L
- decimal longitude of point
"North" value on return
382
See:
http://professionnels.ign.fr/DISPLAY/000/526/700/5267002/transformaton.pdf
(*********************************************************************
F r e n c h L 9 3 T o G e o - convert French Lambert 93 to GRS80
geographical coordinates
calling sequence:
FrenchL93ToGeo(E,N)
E
- "east" value on input, longitude upon return
N
- "north" value on input, latitude upon return
(*********************************************************************
G e o t o G K - convert geographical to Gauss-Krueger coordinates
calling sequence:
GeotoGK(b,l,k)
b
- decimal latitude of point
"rechts" value on return
l
- decimal longitude of point
"hoch" value on return
k
- meridian strip number on return
(***********************************************************************
G K t o G e o - convert Gauss-Krueger to geographical coordinates
calling sequence:
GKtoGeo(r,h)
r
- "rechts" value, latitude upon return
h
- "hoch" value, longitude upon return
(*********************************************************************
G e o t o G K 6 - convert geographical to Gauss-Krueger coordinates
6 degree strips, Krassovsky Ellipsoid
calling sequence:
GeotoGK6(b,l,zone)
b
- decimal latitude of point
"rechts" value on return
l
- decimal longitude of point
"hoch" value on return
zone - meridian strip number on return
(***********************************************************************
G k t o G e o 6 - convert Gauss-Krueger to geographical coordinates,
6 degree strips, Krassovsky Ellipsoid
calling sequence:
383
Gk6toGeo(R,H)
r
- "east" value, latitude upon return
h
- "north" value, longitude upon return
(*********************************************************************
G e o t o G r e e k G R S 8 0 - convert geographical to Greek coordinates
GRS80 ellipsoid
calling sequence:
GeotoGreekGRS80(b,l)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
(***********************************************************************
G r e e k G R S 8 0 t o G e o - convert Greek GRS80 to geographical coordinates
GRS80 Ellipsoid
calling sequence:
GreekGRS80toGeo(E,N)
Zone - UTM Zone number on input
E
- "east" value, latitude upon return
(*********************************************************************
G e o t o H u n g a r i a n - convert geographical to Hungarian EOV coordinates
HD-72 Datum GRS67 (modified) ellipsoid.
False Easting 650000, False Northing 200000
Uses an oblique Mercator transformation similar to that used for Swiss coordinates,
but with different constants, a normal parallel of 47° 10' and a - 20.958 meter offset
to correct for the sphere-ellipsoid shift at the origin of the coordinate system at
Longitude 19° 2' 54.8584", Latitude 47° 8' 39.8174". The official Hungarian formulae
as given by Sz. Mihaly are not used.
calling sequence:
GeotoHungarian(b,l)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
(***********************************************************************
H u n g a r i a n t o G e o - convert Hungarian EOV to geographical coordinates
HD-72 Datum GRS67 (modified) ellipsoid,
False Easting 650000, False Northing 200000
calling sequence:
HungariantoGeo(E,N)
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
384
(*********************************************************************
G e o t o Irish - convert geographical to Irish coordinates
calling sequence:
GeotoIrish(b,l, MapName)
b
- decimal latitude of point
"east" value on return
l
- decimal longitude of point
"north" value on return
MapName - pointer to character string with 100km grid square name returned
(***********************************************************************
Irish t o G e o - convert Irish to geographical coordinates,
calling sequence:
IrishtoGeo(E,N,InMapName)
e
- "east" value, latitude upon return
n
- "north" value, longitude upon return
InMapName - pointer to character string containing 100km grid name
must be nil if 100km digits E and N present, required
if these digits have been dropped
(*********************************************************************
G e o t o I s r a e l T Mn - convert geographical to Israel TM coordinates
GRS80 ellipsoid
calling sequence:
GeotoIsraelTM(b,l)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
(***********************************************************************
I s r a e l T M t o G e o - convert IsraelTM to geographical coordinates
GRS80 Ellipsoid
calling sequence:
IsraelTMtoGeo(E,N)
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
(*********************************************************************
G e o t o I s r a e l P B - convert geographical to Israel
Palestine Belt coordinates
385
Clarke-Benoit 1880/95 ellipsoid
calling sequence:
GeotoIsraelPB(b,l)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
(***********************************************************************
I s r a e l P B t o G e o - convert IsraelPB to geographical coordinates
Clarke-Benoit 1880/95 Ellipsoid
calling sequence:
IsraelPBtoGeo(E,N)
E
N
- "east" value, latitude upon return
- "north" value, longitude upon return
(*********************************************************************
G e o t o I t a l i a n - convert geographical to Gauss-Boaga coordinates
calling sequence:
GeotoItalian(b,l,Zone)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
Zone - meridian strip number on return in UTM (add/sub 31 for Boaga)
(***********************************************************************
I t a l i a n t o G e o - convert Gauss-Boaga to geographical coordinates
calling sequence:
ItaliantoGeo(E,N,Zone)
Zone - UTM Zone number on input
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
(*********************************************************************
G e o t o J a p a n Bessel - convert geographical to Gauss-Krueger
Japanese coordinates
calling sequence:
GeotoJapanBessel(b,l,k)
b
- decimal latitude of point "east" (y) value on return
l
- decimal longitude of point "north" (x) value on return
386
k
- region number supplied as input
**********************************************************************)
J a p a n Bessel t o G e o - convert Japanese Gauss-Krueger to geographical
coordinates
calling sequence:
JapanBesseltoGeo(r,h,k)
r
- "east" (y) value, latitude upon return
h
- "north" (x)value, longitude upon return
k
- region number (required input)
***********************************************************************)
G e o t o J a p a n GRS80 - convert geographical to Gauss-Krueger
calling sequence:
GeotoJapanGRS80(b,l,k)
b
- decimal latitude of point "east" (y) value on return
l
- decimal longitude of point "north" (x) value on return
k
- region number (required input)
**********************************************************************)
J a p a n GRS80 t o G e o - convert Japanese Gauss-Krueger to geographical
coordinates
calling sequence:
JapanGRS80toGeo(r,h,k)
r
- "east" (y) value, latitude upon return
h
- "north" (x)value, longitude upon return
k
- region number (required input)
(*********************************************************************
G e o t o J o r d a n - convert geographical to Jordanian TM coordinates
ED50 Ellipsoid
calling sequence:
GeotoJordan(b,l)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
(***********************************************************************
J o r d a n t o G e o - convert Jordanian to geographical coordinates
calling sequence:
JordantoGeo(E,N)
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
***********************************************************************)
387
G e o t o L u x e m b u r g - convert geographical to Luxemburg coordinates
calling sequence:
GeotoLuxemburg(b,l)
b
- decimal latitude of point
"X" value on return
l
- decimal longitude of point
"Y" value on return
Following unpublished documentation received from the:
Adminstration du Cadastre et de la Topographie
54, avenue Gaston Diderich, P.P. 1761, L 1017 Luxembourg, 23.02.1996
B0 = 49° 50' L0 = 6° 10': Y0 = 80000.000, X0 = 1000000.000
Hayford ellipsoid of 1924
(***********************************************************************
L u x e m b e r g T o G e o - convert Luxemburg to geographical coordinates,
calling sequence:
LuxemburgToGeo(R,H)
R
- "east" value, longitude upon return
H
- "north" value, latitude upon return
(*********************************************************************
G e o t o P o l a n d 1965 - convert geographical to Polish coordinates
Krassovsky ellipsoid, Roussilhe projection
calling sequence:
GeotoPolandR65(b,l, zone)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
**********************************************************************)
P o l a n d R 6 5 t o G e o - convert Polish 1965 to geographical
coordinates Krassovsky Ellipsoid
calling sequence:
PolandR65toGeo(E,N,Zone)
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
(*********************************************************************
G e o t o P o l a n d - convert geographical to Polish coordinates
GRS80 ellipsoid
calling sequence:
GeotoPoland(GRS80(b,l)
b
- decimal latitude of point
388
"East" value on return
l
- decimal longitude of point
"North" value on return
**********************************************************************)
P o l a n d G R S 8 0 t o G e o - convert Polish GRS80 to geographical
coordinates GRS80 Ellipsoid
calling sequence:
PolandGRS80toGeo(E,N)
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
(*********************************************************************
G e o t o P o r t u g a l D 73 - convert geographical to Portuguese coordinates
D73 Datum, Military Offsets, False Easting 200000, False Northing 300000
(Cadastral maps after 1994)
calling sequence:
GeotoPortugal(b,l)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
Documentation:
Jorge Teixeira Pinto, Sistemas Geo-Cartográficos em uso no I.G.C., Instituto Geográfico e
Cadastral,
Lisboa, 1992.
(***********************************************************************
P o r t u g a l t o G e o D73 - convert Portuguese to geographical coordinates
D73 Datum, Military Offsets, False Easting 200000, False Northing 300000
(Cadastral maps after 1994)
calling sequence:
PortugaltoGeo(E,N)
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
Documentation:
Jorge Teixeira Pinto, Sistemas Geo-Cartográficos em uso no I.G.C., Instituto Geográfico e
Cadastral,
Lisboa, 1992.
(*********************************************************************
G e o t o P o r t u g a l D L x - convert geographical to Portuguese coordinates
Old Lisboa Datum, Military Offsets, False Easting 200000, False Northing 300000
(1:25000 maps and others)
389
calling sequence:
GeotoPortugalDlx(b,l)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
Documentation:
Jorge Teixeira Pinto, Sistemas Geo-Cartográficos em uso no I.G.C., Instituto Geográfico e
Cadastral,
Lisboa, 1992.
(***********************************************************************
P o r t u g a l t o G e o D L x - convert Portuguese to geographical coordinates
Old Lisboa Datum, Military Offsets, False Easting 200000, False Northing 300000
calling sequence:
PortugaltoGeoDLx(E,N)
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
Documentation:
Jorge Teixeira Pinto, Sistemas Geo-Cartográficos em uso no I.G.C., Instituto Geográfico e
Cadastral,
Lisboa, 1992.
(*********************************************************************
G e o t o R o m a n i a n - convert geographical to Romanian coordinates
False Easting 500000, False Northing 500000 1:5000 maps and others.
Stereographic projection, origin 46 N 25 E, using EPSG POSC7.DOC
calculation method.
calling sequence:
GeotoRomanian(Lat,Lon)
Lat
- decimal latitude of point
"East" value on return
Lon
- decimal longitude of point
"North" value on return
(***********************************************************************
R o m a n i a n t o Geo - convert Romanian stereographic coordinates
to Krassovsky lat/lon
calling sequence:
Romanian to Geo(East,North)
East - coordinate
latitude on return
North - coordinate
390
longitude on return
(*********************************************************************
G e o t o S L O V E N I A D 9 6 - convert geographical to Slovenian D96
coordinates GRS80 ellipsoid
calling sequence:
GeotoSloveniaD96(b,l)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
**********************************************************************)
S L O V E N I A D 9 6 t o G e o - convert Slovenian D96 to geographical coordinates
GRS80 Ellipsoid
calling sequence:
SloveniaD96toGeo(E,N)
E
N
- "east" value, latitude upon return
- "north" value, longitude upon return
***********************************************************************)
G e o t o S L O V E N I A D 4 8 - convert geographical to Slovenian D96
coordinates. Bessel ellipsoid
calling sequence:
GeotoSloveniaD48(b,l)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
(***********************************************************************
S L O V E N I A D 4 8 t o G e o - convert Slovenian D96 to geographical
coordinates. Bessel Ellipsoid
calling sequence:
SloveniaD48toGeo(E,N)
E
N
- "east" value, latitude upon return
- "north" value, longitude upon return
***********************************************************************)
G e o t o S w e d e n - convert geographical to Sweden RT90 coordinates
calling sequence:
GeotoSweden(b,l)
b
- decimal latitude of point
"X" value on return
l
- decimal longitude of point
391
"Y" value on return
Following documentation received from:
Bo Gunnar Reit
Lantmateriet, National Land Survey
S 801 - 82 Gavle, Sweden
Bessel ellipsoid of 1841
(***********************************************************************
S w e d e n t o G e o - convert Sweden RT90 to geographical coordinates,
calling sequence:
SwedenToGeo(R,H)
R
- "east" value, longitude upon return
H
- "north" value, latitude upon return
(*********************************************************************
G e o t o S w e d e n W G S - convert WGS84 geographical to Sweden
RT90 coordinates
calling sequence:
GeotoSwedenWGS(B,L)
B
- decimal latitude of point
"East" value on return
L
- decimal longitude of point
"North" value on return
Following documentation received from:
Bo Gunnar Reit
Lantmateriet, National Land Survey
S 801 - 82 Gavle, Sweden
Ellipsoid:
GRS 80 (a=6378137 m., f=1/298.257222101)
Longitude of Central Meridian: 15° 48' 22.591694"
Scale along central meridian:
1.00000570804
False northing:
-668.392 m.
False easting:
1500063.733 m.
(***********************************************************************
S w e d e n W G S t o G e o - convert Sweden to WGS84 geographical
coordinates
calling sequence:
SwedenWGSToGeo(E,N)
E
- "east" value on input, longitude upon return
N
- "north" value on input, latitude upon return
(*********************************************************************
392
G e o t o S w i s s - convert geographical to Swiss oblique Mercator
coordinates
calling sequence:
GeotoSwiss(B,L,x,y)
B
- decimal latitude of point
x
"y" value on return
L
- decimal longitude of point
y
"x" value on return
zero meridian at Bern 46° 57' 08.66" N, 7° 26' 22.50" Greenwich
(***********************************************************************
S w i s s t o G e o - convert Swiss to geographical coordinates
calling sequence:
SwisstoGeo(X,Y,B L)
X
- "x" value
Y
- "y" value
B Decimal latitude upon return
L Decimal longitude upon return
**********************************************************************)
G e o t o S w e d e n - convert geographical to Sweden RT90 coordinates
calling sequence:
GeotoSweden(b,l)
b
- decimal latitude of point
"X" value on return
l
- decimal longitude of point
"Y" value on return
Following documentation received from:
Bo Gunnar Reit
Lantmateriet, National Land Survey
S 801 - 82 Gavle, Sweden
Bessel ellipsoid of 1841
(***********************************************************************
S w e d e n t o G e o - convert Sweden RT90 to geographical coordinates,
calling sequence:
SwedenToGeo(R,H)
R
- "east" value, longitude upon return
H
- "north" value, latitude upon return
393
(*********************************************************************
G e o t o S w e d e n W G S - convert WGS84 geographical to Sweden
RT90 coordinates
calling sequence:
GeotoSwedenWGS(B,L)
B
- decimal latitude of point
"East" value on return
L
- decimal longitude of point
"North" value on return
Following documentation received from:
Bo Gunnar Reit
Lantmateriet, National Land Survey
S 801 - 82 Gavle, Sweden
Ellipsoid:
GRS 80 (a=6378137 m., f=1/298.257222101)
Longitude of Central Meridian: 15° 48' 22.591694"
Scale along central meridian:
1.00000570804
False northing:
-668.392 m.
False easting:
1500063.733 m.
(***********************************************************************
S w e d e n W G S t o G e o - convert Sweden to WGS84 geographical
coordinates
calling sequence:
SwedenWGSToGeo(E,N)
E
- "east" value on input, longitude upon return
N
- "north" value on input, latitude upon return
(*********************************************************************
G e o t o S w i s s - convert geographical to Swiss oblique Mercator
coordinates
calling sequence:
GeotoSwiss(B,L,x,y)
B
- decimal latitude of point
x
"y" value on return
L
- decimal longitude of point
y
"x" value on return
zero meridian at Bern 46° 57' 08.66" N, 7° 26' 22.50" Greenwich
(***********************************************************************
S w i s s t o G e o - convert Swiss to geographical coordinates
calling sequence:
SwisstoGeo(X,Y,B L)
394
X
- "x" value
Y
- "y" value
B Decimal latitude upon return
L Decimal longitude upon return
(*********************************************************************
G e o t o T K - find German TK sheet containing given coordinate
Calling sequence:
GeotoTK(b,l,itk)
itk - TK number returned
b
- extended (real*10) latitude of point
l
"
longitude of point
(**********************************************************************
T K t o G e o - convert German TK map number to longitude/latitude
Calling Sequence:
TktoGeo(itk,b,l,k)
itk
b
l
k
- number of the "topographische karte 1:25000"
- extended (10 byte) latitude of lower left corner
"
longitude of lower left corner
- number of meridian strip for gk coordinates
side length is 6' height, 10' width
(*********************************************************************
G e o t o U K - convert geographical to UK BNG coordinates
calling sequence:
GeotoUK(b,l,Mapname)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
MapName - pointer to character string with 100km grid square name returned
(***********************************************************************
U K t o G e o - convert UK BNG to geographical coordinates,
calling sequence:
UKtoGeo(E,N,InMapName)
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
InMapName - pointer to character string containing 100km grid name
395
must be nil if 100km digits E and N present, required if these digits
have been dropped
(*********************************************************************
G e o t o U T M - convert geographical to UTM coordinates
calling sequence:
GeotoUTM(b,l,Zone)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
Zone - meridian strip number on return
(***********************************************************************
U T M t o G e o - convert UTM to geographical coordinates
calling sequence:
UTMtoGeo(E,N,Zone,South)
Zone - UTM Zone number on input
R
- "east" value, latitude upon return
H
- "north" value, longitude upon return
South - True if south of Equator on input
(*********************************************************************
G e o t o U T M C l a r k e - convert geographical to UTM coordinates
Clarke 1866 ellipsoid
calling sequence:
GeotoUTMClarke(b,l,Zone)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
Zone - meridian strip number on return
(***********************************************************************
U T M C l a r k e t o G e o - convert UTM to geographical coordinates
Clarke 1866 Ellipsoid
calling sequence:
UTMClarketoGeo(E,N,Zone,South)
Zone - UTM Zone number on input
R
- "east" value, latitude upon return
H
- "north" value, longitude upon return
South - True if south of Equator on input
396
(*********************************************************************
G e o t o U T M G R S 6 7 - convert geographical to UTM coordinates
GRS67 ellipsoid
calling sequence:
GeotoUTMGRS67(b,l,Zone)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
Zone - meridian strip number on return
(***********************************************************************
U T M G R S 6 7 t o G e o - convert UTM to geographical coordinates
GRS67 Ellipsoid
calling sequence:
UTMGRS67toGeo(E,N,Zone,South)
Zone - UTM Zone number on input
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
South - True if south of Equator on input
(*********************************************************************
G e o t o U T M G R S 8 0 - convert geographical to UTM coordinates
GRS80 ellipsoid
calling sequence:
GeotoUTMGRS80(b,l,Zone)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
Zone - meridian strip number on return
**********************************************************************)
U T M G R S 8 0 t o G e o - convert UTM to geographical coordinates
GRS80 Ellipsoid
calling sequence:
UTMGRS80toGeo(E,N,Zone,South)
Zone - UTM Zone number on input
E
- "east" value, latitude upon return
N
- "north" value, longitude upon return
South - True if south of Equator on input
397
(*********************************************************************
G e o t o U T M W G S 8 4 - convert geographical to UTM coordinates
WGS84 ellipsoid
calling sequence:
GeotoUTMWGS84(b,l,Zone)
b
- decimal latitude of point
"East" value on return
l
- decimal longitude of point
"North" value on return
Zone - meridian strip number on return
(***********************************************************************
U T M W G S 8 4 t o G e o - convert UTM to geographical coordinates
WGS84 Ellipsoid
calling sequence:
UTMWGS84toGeo(E,N,Zone,South)
Zone - UTM Zone number on input
R
- "east" value, latitude upon return
H
- "north" value, longitude upon return
South - True if south of Equator on input
***********************************************************************)
Utilities:
(***********************************************************************
D e g r e e s to D e c i m a l - convert Old Degrees to decimal coordinates.
calling sequence:
DegreestoDecimal(BDegrees,BMinutes,BSeconds,LDegrees,LMinutes,LSeconds,B,L)
BDegrees,
BMinutes,
BSeconds
- latitude input in old degrees
LDegrees,
LMinutes,
LSeconds
- longitude input in old degrees
B
- decimal latitude upon return
L
- decimal longitude upon return
(***********************************************************************
D e c i m a l t o D e g r e e s - convert decimal coordinates to old degrees
calling sequence:
398
DecimaltoDegrees(BDegrees,BMinutes,BSeconds,LDegrees,LMinutes,LSeconds,B,L)
BDegrees,
BMinutes,
BSeconds
- latitude return in old degrees
LDegrees,
LMinutes,
LSeconds
- longitude return in old degrees plus decimal remainder
B
- decimal input latitude
L
- decimal input longitude
(***********************************************************************
D i s t A z i m - compute distance and azimuth between any two points, any distance
calling sequence:
DistAzim(EllipseIn, lat1, lon1, lat2, lon2, az1, az2, s);
Input:
EllipseIn - Index of input ellipsoid (see supported ellipsoid table)
lat1,lon1 - coordinates of point 1 in decimal degrees
lat2,lon2 - coordinates of point 2 in decimal degrees
Output:
az1 - azimuth from point 1 to point 2 in decimal degrees
az2 - azimuth from point 2 to point 1 in decimal degrees
s - distance from point 1 to point 2 in meters
Reprogrammed from National Imagery and Mapping Agency's DTCC 4.12 source code
dstazfns.c for maplib32.dll.
Reference:
Zhang Xue-Lian (1985) The nested coefficient method for
accurate solutions of direct and inverse geodetic
problems with any length. Proceedings of the 7th
International Symposium on Geodetic Computations,
Direct and inverse distance functions.
Cracow, June 18-21, 1985. Institute of Geodesy and
Cartography. Warsaw, Poland, ul. Jasna 2/4 pp 747-763
(**********************************************************************
F u n c t i o n E x i s t s - Test for the existence of a function or procedure in Maplib32.dll
Function FunctionExists(Dll, Func : PChar) : WordBool;
{-Return True if Func exists in Dll}
Var
M
: THandle;
Begin
M := GetModuleHandle(Dll);
If M <> 0 Then
FunctionExists := GetProcAddress(M, Func) <> Nil
Else
FunctionExists := False;
End;
399
Example for library detection and certification:
Const
RequiredVersion : Integer = $02010000; {current version in hexadecimal}
Var
Handle
: Thandle;
Begin
Handle := LoadLibrary('MAPLIB32.DLL');
if (Handle > 31) Then
If FunctionExists('MAPLIB32.DLL', 'GetMapLibVersion') Then
If (GetMapLibVersion < RequiredVersion) Then
Begin
Writeln(MapLib32.Dll is an old version!');
Halt;
End;
(***********************************************************************
G a u s s _ inv - compute distance and azimuth between any two points
with the Gauss average latitude formula for up to ca. 500 km.
No iteration.
calling sequence:
GaussInv(EllipseIn, lat1, lon1, lat2, lon2, az1, az2, s);
Input:
EllipseIn - Index of input ellipsoid (see supported ellipsoid table)
lat1,lon1 - coordinates of point 1 in decimal degrees
lat2,lon2 - coordinates of point 2 in decimal degrees
Output:
az1 - azimuth from point 1 to point 2 in decimal degrees
az2 - azimuth from point 2 to point 1 in decimal degrees
s - distance from point 1 to point 2 in meters
(**********************************************************************
H e l m e r t - 3D Helmert Transform-convert between different Datums, 7 parameters
Bursa-Wolff linearized and non-linear full matrix, inverse and direct.
May be used with 7 or 3 parameters. The 3 parameter case produces
the same result as Molodensky, see below. 7 parameters are more accurate.
Calling Sequence:
Helmert(b, l, z, dx, dy, dz, rx, ry, rz, Scale, Inverse, Linear, EllipseIn, EllipseOut);
b
l
z
dx
dy
dz
rx
ry
- decimal latitude of point, new latitude on return
- decimal longitude of point, new longitude on return
- decimal height of point, new height on return
- delta x to be applied to geocentric x coordinate of input
- delta y to be applied to geocentric y coordinate of input
- delta z to be applied to geocentric z coordinate of input
- rotation about x geocentric axis
- rotation about y geocentric axis
400
rz
Scale
Inverse
Linear
EllipseIn
EllipseOut
- rotation about z geocentric axis
- scale factor input to output
- True (1) if inverse transform wanted, otherwise False (0)
- True (1)if Bursa-Wolff linearization wanted, False(0) for non-linear full matrix
- Index of input ellipsoid
- Index of output ellipsoid
Ellipsoid Table:
Ellipsoid = record
Name: string[6];
a: Extended; {major axis}
Ex2: Extended; {first eccentricity squared}
f: Extended; {flattening}
Ex2p: Extended; {second eccentricity squared}
c: Extended; {pole curvature}
end;
Constants
{0} AIRYIR: ELLIPSOID = (NAME: 'AIRYIR'; A: 6377340.189; Ex2: 6.67053999998536E0003; F: 299.3249646; Ex2p: 6.71533491011659E-0003; C: 6.39871734795668E0006);
{1} AIRYUK: ELLIPSOID = (NAME: 'AIRYUK'; A: 6377563.396; Ex2: 6.67053976159753E0003; F: 299.3249646; Ex2p: 6.71533466851630E-0003; C: 6.39894130238972E0006);
{2} AUST84: ELLIPSOID = (NAME: 'AUST84'; A: 6378160.000; Ex2: 6.69438002290079E0003; F: 298.257222101; Ex2p: 6.73949677547896E-0003; C: 6.39961670323809E0006);
{3} BESSEL: ELLIPSOID = (NAME: 'BESSEL'; A: 6377397.155; Ex2: 6.67437223123582E0003; F: 299.1528128; Ex2p: 6.71921880493627E-0003; C: 6.39878684809251E0006);
{4} CLARK6: ELLIPSOID = (NAME: 'CLARK6'; A: 6378206.400; Ex2: 6.76865799729110E0003; F: 294.9786982; Ex2p: 6.81478494591509E-0003; C: 6.39990255158769E0006);
{5} CLARK8: ELLIPSOID = (NAME: 'CLARK8'; A: 6378249.145; Ex2: 6.80351128284906E0003; F: 293.465; Ex2p: 6.85011612519566E-0003; C: 6.40005773455772E0006);
{6} ED50: ELLIPSOID = (NAME: 'ED-50 '; A: 6378388.000; Ex2: 6.72267002233332E-0003;
F: 297.0; Ex2p: 6.76817019722425E-0003; C: 6.39993660810811E0006);
{7} ETRF89: ELLIPSOID = (NAME: 'ETRF89'; A: 6378137.000; Ex2: 6.69438003551279E0003; F: 698.25702; Ex2p: 6.73949678826153E-0003; C: 6.39959362590465E0006);
{8} KRASOV: ELLIPSOID = (NAME: 'KRASOV'; A: 6378245.000; Ex2: 6.69342162296594E0003; F: 298.3; Ex2p: 6.73852541468349E-0003; C: 6.39969890178271E0006);
{9} SPHERE: ELLIPSOID = (NAME: 'SPHERE'; A: 6378137.000; Ex2: 0.0; F: 1.0);
{10} WGS84: ELLIPSOID = (NAME: 'WGS84 '; A: 6378137.000; Ex2: 6.69437999014132E0003; F: 298.257223563; Ex2p: 6.73949674227644E-0003; C: 6.39959362575849E0006);
{11} GRS80: ELLIPSOID = (NAME: 'GRS80 '; A: 6378137.000; Ex2: 6.69438002290079E0003; F: 298.257222101; Ex2p: 6.73949677547896E-0003; C: 6.39959362586402E+0006);
{12} GRS67H: ELLIPSOID = (NAME: 'GRS67H'; A: 6378160.000; Ex2: 6.69460535691772E0003; F: 298.247166161869; Ex2p: 6.73972515705832E-0003; C:
6.39961742912323E+0006);
{13} CLARKB: ELLIPSOID = (NAME: 'CLARKB'; A: 6378300.789; Ex2: 6.80348083639380E0003; F: 293.466315538985; Ex2p: 6.85008526018916E-0003; C:
6.40010945704181E+0006);
{14} GRS67: ELLIPSOID = (NAME: 'GRS67 '; A: 6378160.000; Ex2: 6.69460532856765E0003; F: 298.247167427000; Ex2p: 6.73972512832482E-0003; C:
6.39961742903191E+0006);
{Note:
GRS67H uses Hungarian constants
A:6378160.0, B:6356774.516 which gives
F=298.247166161869 which is not quite
the same as EPSG F=298.247167427 used in GRS67}
401
(**********************************************************************
M o l o d e n s k y - convert between different Datums, 3 parameters
Calling Sequence:
Based on Power Basic MADTRAN program of Bradford Drew and R. E.
Ziegler, optimized for Pascal, reducing number of divisions and repetition of
operations. MADTRAN was available for downloading from the US Defense
Department Defense Mapping Agency ftp and Web sites. It has been replaced
by GeoTrans (see references) Accuracy is roughly 3 meters in continental Europe.
Input Arguments:
Variable Name Type Indices Description
---------------- -----------------alat
ext
0
Computation point latitude, radians
alon
ext
0
Computation point longitude, radians
h
ext
0
Computation point height, meters
a
ext
0
Semi-major axis, meters of "from ellipsoid"
f
ext
0
Flattening of "from ellipsoid"
esq
ext
0
Eccentricity squared of "from ellipsoid"
da
ext
0
Change in semi-major axis, meters
sign convention ("to" minus "from" ellipsoid)
df
ext
0
Change in flattening
sign convention ("to" minus "from" ellipsoid)
dx, dy, dz
ext
0
Translations, meters
adb,bda
ext
0
Equatorial radius / Pole radius & inverse
Output Arguments:
Variable Name Type Indices Description
-------------------------------tlat
ext
0
Change in latitude, radians
tlon
ext
0
Change in longitude, radians
th
ext
0
Change in height, meters
Changes to be added to "from" coordinates to
derive "to" coordinates
dx, dy, dz constants from the MADTRAN datum.dat file for around 200
different datums are available. Translation values for the datums shown are for
conversion to WGS84 and back.
The first digit gives the ellipsoid number in the MADTRAN ellipse.dat file.
1=Airy 1822 2=Airy 1936 4=Bessel 1841 15=ED50 16=Krassovsky
The last three digits give the probable x, y, z errors in meters and
the final digit is for internal use in MADTRAN.
"European 1950",15,-104,-101,-140,"Cyprus",15,15,15,4
"European 1950",15,-130,-117,-151,"Egypt",6,8,8,14
"European 1950",15,-86,-96,-120,"England, Channel Islands, Scotland,",3,3,3,40
"European 1950",15,-86,-96,-120," Shetland Islands",3,3,3,40
"European 1950",15,-86,-96,-120,"England, Ireland, Scotland,",3,3,3,47
"European 1950",15,-86,-96,-120," Shetland Islands",3,3,3,47
"European 1950",15,-87,-95,-120,"Finland, Norway",3,5,3,20
"European 1950",15,-84,-95,-130,"Greece",25,25,25,2
"European 1950",15,-117,-132,-164,"Iran",9,12,11,27
"European 1950",15,-97,-103,-120,"Italy (Sardinia)",25,25,25,2
402
"European 1950",15,-97,-88,-135,"Italy (Sicily)",20,20,20,3
"European 1950",15,-107,-88,-149,"Malta",25,25,25,1
"European 1950",15,-87,-98,-121,"MEAN FOR Austria, Belgium, Denmark,",3,8,5,85
"European 1950",15,-87,-98,-121," Finland, France, W Germany,",3,8,5,85
"European 1950",15,-87,-98,-121," Gibraltar, Greece, Italy,",3,8,5,85
"European 1950",15,-87,-98,-121," Luxembourg, Netherlands, Norway,",3,8,5,85
"European 1950",15,-87,-98,-121," Portugal, Spain, Sweden,",3,8,5,85
"European 1950",15,-87,-98,-121," Switzerland",3,8,5,85
"European 1950",15,-87,-96,-120,"MEAN FOR Austria, Denmark, France,",3,3,3,52
"European 1950",15,-87,-96,-120," W Germany, Netherlands, Switzerland",3,3,3,52
"European 1950",15,-103,-106,-141,"MEAN FOR Iraq, Israel, Jordan,",-1,-1,-1,0
"European 1950",15,-103,-106,-141," Lebanon, Kuwait, Saudi Arabia,",-1,-1,-1,0
"European 1950",15,-103,-106,-141," Syria",-1,-1,-1,0
"European 1950",15,-84,-107,-120,"Portugal, Spain",5,6,3,18
"European 1950",15,-112,-77,-145,"Tunisia",25,25,25,4
"European 1979",15,-86,-98,-119,"MEAN FOR Austria, Finland,",3,3,3,22
"European 1979",15,-86,-98,-119," Netherlands, Norway, Spain, Sweden,",3,3,3,22
"European 1979",15,-86,-98,-119," Switzerland",3,3,3,22
"Hjorsey 1955",15,-73,46,-86,"Iceland",3,3,6,6
"Ireland 1965",2,506,-122,611,"Ireland",3,3,3,7
"Observatorio Meteorologico 1939",15,-425,-169,81,"Azores (Corvo & Flores
Islands)",20,20,20,3
"Ordnance Survey Great Britain 1936",1,371,-112,434,"England",5,5,6,21
"Ordnance Survey Great Britain 1936",1,371,-111,434,"England, Isle of Man,
Wales",10,10,15,25
"Ordnance Survey Great Britain 1936",1,375,-111,431,"MEAN FOR England, Isle of
Man,",10,10,15,38
"Ordnance Survey Great Britain 1936",1,375,-111,431," Scotland, Shetland Islands,
Wales",10,10,15,38
"Ordnance Survey Great Britain 1936",1,384,-111,425,"Scotland, Shetland
Islands",10,10,10,13
"Ordnance Survey Great Britain 1936",1,370,-108,434,"Wales",20,20,20,3
"Pulkovo 1942",16,28,-130,-95,"Russia",-1,-1,-1,0
"S-42 (Pulkovo 1942)",16,28,-121,-77,"Hungary",2,2,2,5
"S-JTSK",4,589,76,480,"Czechoslavakia (Prior 1 JAN 1993)",4,2,3,6
403
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement