ICAO Flugplanungsprogramm
mein Flugplanprogramm ist von 1993: ICAO Map von
Martin Pauly. Da habe ich immer mal dran rumprogrammiert und auch ein paar
Garmin Symbole gemalt. Der Knackpunkt für mich ist, daß ich
unterwegs die Symbole auf dem winzigen GPS Schirm kaum erkennen kann.
Je mehr Details, desto besser am PC und um so schlechter unterwegs. So habe
ich im ICAO Map andere, detailliertere Symbole als im GPS. Vor allem sind die
PC Symbole bunt, während die im GPS in schwarzweiß besser ablesbar sind.
Für mich wäre es schön, wenn ich ein paar _besser_lesbare_ Symbole finden
könnte... die müssen überhaupt nicht genauso aussehen wie die auf der ICAO
Karte... wie auch immer. Vielleicht fällt jemand noch etwas ein... schönere hab ich nicht.
Flugplatz
UL Platz
Beleuchtetes Hindernis
Fernsehturm
Windrad
Segelflugplatz
Das Originalprogramm von Martin Pauly
Martin Pauly so um 1993
Mein update: Aktionsradius und Windkeulen
Mein update: Streckenplan automatisch bewerten, abhängig von Wind und Sichtbedingungen
Mein update: Flugzeiten abhängig von Windspeed und Windrichtung bestimmen (alle gleichzeitig!)
Mein GPS ist ein Garmin GPS60 in schwarzweiß. Mein Programm zeichnet die Symbole eh anders als das GPS: die Startbahnen in die jeweilige Hauptstartrichtung gedreht, je nach Zoomfaktor in
anderer Größe, je nachdem ob ich schon mal da war, in anderer Farbe etc... das heißt, das GPS zeichnet eine "bitmap" und dasPC Programm eine "Vektorgrafik". Vektoren sind wesentlich flexibler als
Bitmaps. Dazu kommt, daß ich mir im Flug nur grad drei verschiedene Symbole merken kann, danach wirds schwierig...
Zum Selbermalen fallen mir folgende Symbole als nützlich ein, weil sie bei mir in der Gegend häufig vorkommen, supergut zu sehen sind und in der ICAO Karte hervorgehoben werden:
-Windrad
-Antennenmast
-Fernsehturm
-bekannter, auffälliger Hügel/"Berg"
-große, weithin sichtbare Brücke/Autobahnbrücke
-Wegpunkt, meist nur mir selbst bekannt: Haus vom Kumpel, eine Waldlichtung (zum Notlanden :-) etc
==>Für diese Symbole hat sich das Selbermalen gelohnt
Dann gibts ein paar im GPS, die man wiederverwenden kann:
-das Dach mit Kreuz ("Kapelle") für alle gut sichtbaren Burgen, Kirchen, Schlösser, Türme
-den dicken runden Fleck für Teiche
-den kleinen Punkt für Bahnhöfe und Tankstellen (im Notfall, mit Telefonnummer)
==>die waren oft nützlich und schon vorhanden
Sinnlos waren:
-die unterschiedlichen Typen der Flugplätze (Teer/Gras/Segelflug/DHV). Die Dinger sehe ich unterwegs oft auch nicht, wenn ich direkt drüber stehe. Also dafür täte es auch der kleine Punkt.
-beleuchtetes Hindernis. Wenn ich unterwegs bin, sind sie entweder alle beleuchtet oder keins...
==>kann man sich wohl schenken
GPS-tracks, die ich ins GPS raufgeladen habe:
-Bodensee zur Orientierung und Lufträume zur Planung. Den track muß ich jedes Jahr neu machen.
-Verlauf der Donau
-zwei Eisenbahnlinien und die Autobahn
==>diese tracks werden unterschiedlich dargestellt, im GPS einstellbar. Super Orientierung.
So, das wärs. Damit komme ich schon ziehmlich weit in der Gegend rum. Vielleicht gibt Dir das ja einen Denkanstoß, dann hat es sich schon gelohnt... hier am See bin ich nicht aufgewachsen und kenne
Teile der Umgebung wirklich nur aus der Luft... bin dann mal mit dem Auto lang gefahren, um zu sehen, wie das von unten aussieht. Was für ein Privileg wir doch genießen dürfen mit dem Motorschirm der
gar nicht aussieht wie ein Flugzeug...
Anleitung zur ICAO Software
Chapter 1
Chapter 1 bis 11, ausser 1.3 und 10, sind von Martin Pauly
Introduction
1.1 What is ICAO?
ICAO is the abbreviation of the International Civil
Aviation Organization. If you are a pilot, that wont be
new to you. And the ICAO hasnt got too much to do
with this program. So why is it called ICAO?
Well, work on this application started in December 1992.
I got interested in the mathematics involved with
map projections. A few books from our library provided
me with the knowledge to draw a part of the earth
onto the flat screen of a computer, using the conical
Lambert projection with two standard parallels. It wasb
interesting, nice to watch and useless.
It was about the same time that I got Linux, which I liked
better the longer I used it. Not only could I work
under the same environment I used at the university;
it also seemed to me much more stable and a lot faster
than most other operating systems for IBM clones.
Then I turned to X11 programming. Equipped with
some literature about X, I began rewriting the map
projection program, probably just because I couldnt
think of anything more intelligent.
As an empty map is rather boring, the next step was
to draw some objects on it. The only map handy at that
time was - guess what - the "Aeronautical Chart ICAO
1:500000", simply refered to in Germany as "ICAO
Karte". The first executable that could draw an
airfield symbol was named icao. Thats what it is still
called today, and I guess unless a superb other
name comes to my mind that wont change.
Naturally, Linux had become the development platform
for ICAO. To verify portability, I compiled it on a
HP Apollo Series 700 workstation from time to time,
which worked fine.
Hardcoding the objects to be displayed into the program
was OK for two airports, but impossible for the
600-odd objects that were in the world file in
January 1993. That forced me to have a closer look at YACC
and LEX (or rather BISON and FLEX, the GNU equivalents
of the well-known UNIX tools), which I used
to create the scanner and the parser that read the world file.
Most data currently contained in the world file comes
from the official ICAO map and from the German
AIP (Aeronautical Information Publication). The
coordinates of civil airports and radio navigation facilities
should be precise. Most other coordinates where read
from the map with a digitizer, so that points of
rivers, CTRs and towns are not always quite as precise.
At first, the program didnt have many functions: it
could display the map, you could select new origins of
the map to be displayed, zoom in and out as well as
hide and show certain types of objects. You could also
measure distances and true tracks from one point to
another, and you could display info boxes for most
objects. Many more things were planned for both soaring
and motorized flying, but that would have to wait
a bit - I was still looking for the Release-5-edition
of the OReilly X Toolkit Intrinsics Programming Manual,
which would (according to a lokal book shop) be available
in April 1993. Till then, I improved the
map display and added some more objects to the world file.
Well, the OReilly book finally arrived, and at about
the same time Metrolink announced Motif for Linux.
Not having seen much of Motif at that time, I just
guessed that it could be useful for ICAO, so I ordered it.
The result is what you are currently looking at.
ICAO Map 0.60b -2- November1993
If you have any suggestions about useful functions
for the program, feel free to tell me. If anybody would
like to contribute data to the world file - even better,
I really cant manage it all by myself. If someone is
willing to port ICAO to other (non-UNIX) platforms -
great, contact me! Though I like UNIX, Im aware
of how few pilots have access to a UNIX machine.
1.2 About the Author
Martin Pauly was born in 1971 in Moenchengladbach,
Germany. He is currently a student of computer science
in Aachen. He used to live in Krefeld for a couple of
years, next to two airline captains who would get
him more than just interested in planes. At the age
of 14, he started soaring in a club at the airfield in Grefrath
(EDLF). If you ever see an ASW-15B with the registration
number D-2310, chances are good that he
might be sitting inside it.
As far as computers are concerned, Martin started
hacking on a Commodore VIC-20 in the early 80s. An
ATARI ST followed later, finally an IBM clone.
Fascinated by Linux and the large amount of other public
domain software available for UNIX systems, hed like
to offer ICAO to anyone who might find it useful.
You can contact Martin by E-mail as well as snailmail:
Martin Pauly,
Ruetscherstr. 175/910,
52072 Aachen,
Federal Republic of Germany
Internet: pauly@pool.informatik.rwth-aachen.de
ICAO Map 0.60b -3- November1993
1.3 (Januar 2009)
Kurzbeschreibung neuer Features (Hendrik Maroske)
c-code/Zeile Anmerkung
fvu.c:90: pressure altitude im .igc wird ignoriert
fvu.c:116: Odometer geht nur bei mehr als 5km/h
fvu.c:119: Stoppuhr geht nur bei mehr als 10km/h
fvu.c:156: fvu_read_log liest .igc files
gpssim.c:1444: gps_evaluate: distinguish cruise/climb, statistics...
gpssim.c:1480: assume climbing if delta h in 30 seconds positive
gpssim.c:1496: climb periods that are very close together are united
gpssim.c:1790: gps_read_log liest .nmea files
gpssim.c:1931: if ( (GS_zur >=20) & (GS_hin >= 20) ) {
Wenn GPS Simulator Daten eingetragen sind (Wind
speed, TAS, etc), dann zeichnet icao beim Drücken der
linken Maustaste einen gruener Kreis fuer:
Hin+Rueckweg mit einer Tankfuellung
gpssim.c:1980: if ( GS_hin >= 10) {
Roter Kreis fuer 1.5 Stunden geradeaus...
gpssim.c:1981: t_hin = 1.5;
Roter Kreis fuer 1.5 Stunden geradeaus...
gpssim.c:2034: if ( (GS_zur >=20) & (GS_hin >= 20) ) {
rote Keule fuer Starkwind d.h. nur Flug in diesem
Sektor sinnvoll
icao.c:216: Page UP = Zoom rein (Drawingwindow muss focus haben)
icao.c:228: Page DN = Zoom raus (Drawingwindow muss focus haben)
icao.c:240: Pfeil rechts = in der Karte nach rechts gehen
(Drawingwindow muss focus haben)
icao.c:246: Pfeil links = in der Karte nach links gehen
(Drawingwindow muss focus haben)
icao.c:252: Pfeil hoch = in der Karte nach oben gehen
(Drawingwindow muss focus haben)
icao.c:258: Pfeil runter = in der Karte nach unten gehen
(Drawingwindow muss focus haben)
icao.c:264: fuer Bitmap-Karten: HOME=Adjust Map ON/OFF
icao.c:275: ctrl-F = Suchfunktion
icao.c:283: ' ': bitmap-Karten: <SPACE> = cycle basemap
(Drawingwindow muss focus haben)
icao.c:291: '+': <+> = Longitude Offset +0.01, Anpassung an basemap
(Drawingwindow muss focus haben)
icao.c:296: '-': <-> = Longitude Offset -0.01, Anpassung an basemap
(Drawingwindow muss focus haben)
icao.c:301: '\r': <CR> = beim distanz messen: routenpunkt
erzeugen und strecke weiterlegen
icao.c:340: Shift+Rechte Maustaste = schreibe Cursorposition
in .icao/wpt.iw und ./icao/pos.txt
icao.c:381: Linke Maustaste = zeigt RANGE Keis wenn speed
und windspeed gegeben
icao.c:382: Linke Maustaste = Karte verschieben
icao.c:390: Linke Maustaste = no route button selected -> like
DragDrop, move current map image with mouse
icao.c:407: Linke Maustaste = if a button is selected,
take coordinates of object and deselect
icao.c:408: Linke Maustaste = Wendepunkt in Current Route eintragen
icao.c:449: if (event->xbutton.button == Button2) {
Button2, no DragDrop
icao.c:451: Shift-Mittlere Maustaste: schreibe current route
icao.c:506: Mittlere Maustaste = schreibe Cursorposition
in .icao/wpt.iw und .icao/pos.txt
icao.c:533: right mouse button= display small info box for object
icao.c:534: right mouse button +SHIFT: init rubber line for
distance measuring
icao.c:636: if (event->xbutton.button == Button4) {
Mouse Wheel: Zoom In/out
icao.c:652: if (event->xbutton.button == Button5) {
Mouse Wheel: Zoom In/out
icao.c:1151: if file not found under $ICAOHOME, look in current directory
icao.c:1500: case 0: /* MANUAL auto vfr router hin und zurueck */
icao.c:1506: case 1: /* MANUAL auto vfr router nur hin */
icao.c:1512: case 2: /* MANUAL auto radio router nur hin */
icao.c:1518: case 3: 5-Punkt Route nur auswerten
icao.c:1524: case 4: /* MANUAL draw route */
icao.c:1527: case 5: /* MANUAL undraw route */
icao.c:1565: object browser: double click, show object in map and
write to ".icao/wpt.gpx" */
Waypouint Types
===============
icao.c:1603: Doppelklick auf Objekt in Objektliste laedt dieses in GPS
icao.c:1604: O_INTLAIRPORT "Intl.Airport"
icao.c:1605: O_AIRSPACE "Airspace"
icao.c:1606: O_AIRPORT "Airport"
icao.c:1607: O_AIRPORT_CIV_MIL "Airport"
icao.c:1608: O_AIRPORT_MIL "Airport"
icao.c:1609: O_AIRFIELD "Custom 1"
icao.c:1610: O_SPECIAL_AIRFIELD "Custom 2"
icao.c:1612: O_HELIPORT "Danger Area"
icao.c:1613: O_HELIPORT_AMB "Danger Area"
icao.c:1614: O_GLIDER_SITE "Custom 3"
icao.c:1615: O_HANG_GLIDER_SITE "Custom 4"
icao.c:1616: O_PARACHUTE_JUMPING_SITE "Parachute Area"
icao.c:1617: O_FREE_BALLON_SITE "Parachute Area"
icao.c:1625: O_MARKER_BEACON "Controlled Area"
icao.c:1626: O_BASIC_RADIO_FACILITY "Controlled Area"
icao.c:1628: O_OBSTRUCTION "Custom 7"
icao.c:1629: O_GROUP_OBSTRUCTION "Custom 8"
icao.c:1630: O_FIRED_OBSTRUCTION "Custom 11"
icao.c:1631: O_FIRED_GROUP_OBSTRUCTION "Tall Tower"
icao.c:1633: O_AERO_GROUND_LIGHT "Danger Area"
icao.c:1634: O_REPORTING_POINT "Danger Area"
icao.c:1636: O_VILLAGE "City (Small)"
icao.c:1638: O_TOWN "City (Medium)"
icao.c:1639: O_WAYPOINT "Custom 10"
icao.c:1640: O_ROUTEPOINT "Custom 10"
icao.c:1641: O_SCHLOSS "Scales"
icao.c:1642: O_SEE "Custom 20"
icao.c:1643: O_KIRCHE "Cemetery"
icao.c:1645: O_FTURM "Custom 6"
icao.c:1647: O_KROSES "Golf Course"
icao.c:1648: O_KROSEB "Golf Course"
icao.c:1649: O_WRAD "Custom 9"
icao.c:1651: O_BAHNHOF "Custom 5"
icao.c:1652: O_TANKE "Gas Station"
icao.c:1653: O_BRUECKE "Custom 13"
icao.c:1654: O_GIPFEL "Custom 14"
icao.c:1655: O_DHV "Custom 4"
icao.c:1656: O_BART "Custom 12"
icao.c:1657: O_WETTER "City (Small)"
icao.c:1658: default unknown=1; "unknown type"
icao.c:1676: O_GPSRTE Doppelklick auf gpsroute in Objektliste
zeigt die route (nur) und laedt in GPS als track
icao.c:1706: O_AIRSPACE
icao.c:1707: O_CTR
icao.c:1708: O_CVFR
icao.c:1709: O_STATE_BORDER
icao.c:1710: O_BORDER
icao.c:1711: O_TOWN
icao.c:1712: O_RIVER
icao.c:1713: O_HIGHWAY
icao.c:1714: O_VILLAGE
icao.c:1715: O_LINIE
icao.c:1716: O_GPS
icao.c:1717: O_GPSMY
icao.c:1718: O_GPSOLCPARA
icao.c:1719: O_GPSOLCMOT
icao.c:1720: O_GPSTEMP
icao.c:1721: O_LAKE
icao.c:1722: O_INTLAIRPORT
icao.c:1724: Doppelklick auf airspace, river, town, linie,
gpstrack in Objektliste laedt in GPS
icao.c:1787: Zeichnet das igc file wenn im objectbrowser
ein .iw oder .igc angeklickt wird
icao.c:1841: left click to object panel: test if a route button
is active. if so, note new waypoint
icao.c:1875: change label of a route button. this is used when from the suggest
icao.c:1876: triangle window the user selects a route by a double click.
icao.c:3154: Kommandozeilenparameter
icao.c:3165: load user preferences
icao.c:3192: load map files as specified in /~.icaorc
icao.c:3201: Load map "name.iw" laedt die map name.iw nachdem
die aktuelle fertig geladen ist
mapobjects.c:17: this is where the display of currently visible objects is handled
mapobjects.c:1257: 3pt wide dashed in the middle = GPS route
mapobjects.c:2010: scale >1500000: keine Wegpunkte mehr zeichnen
mapobjects.c:2016: scale <700000: Wegpunkte zeichnen
mapobjects.c:2041: scale >700000: kleine + als Wegpunkte zeichnen
mapobjects.c:2057: scale > 150000: Thermik NICHT zeichnen
mapobjects.c:2090: bei scale < 150000 nur die fetten Bärte
mapobjects.c:2260: scale <700000: bahnhof zeichnen
mapobjects.c:2275: scale >700000: kleine + als Wegpunkte zeichnen
mapobjects.c:2389: scale > 500000: große Kompassrose NICHT zeichnen
mapobjects.c:2411: scale > MaxTextZoom: kleine Kompassrose NICHT zeichnen
mapobjects.c:2435: scale > 300000: normale Kompassrose NICHT zeichnen
objectdetails.c:64: Objectdetails: Button "Polygon" schaltet nopolygon an/aus
objectdetails.c:107: Objectdetails: Button "to GPS" sendet aktuelles Objekt an GPS
openair.c:161: OPENAIR unterstützt Format Xxx:Yy:Zz.zz [NSEW] deg:min:sec.frac
openair.c:178: OPENAIR unterstützt Format Xxx:Yy:Zz.zz [NSEW] deg:min:sec.frac
openair.c:195: OPENAIR unterstützt Format Xxx:Yy:Zz [NSEW] deg:min:sec
openair.c:208: OPENAIR unterstützt Format Xxx:Yy:Zz [NSEW] deg:min:sec
openair.c:221: OPENAIR unterstützt Format Xxx:Yy:Zz [NSEW] deg°min'sec"
openair.c:234: OPENAIR unterstützt Format Xxx:Yy.Zz [NSEW] deg:min.min/100
openair.c:235: OPENAIR unterstützt Format Xxx:Yy.Zzz [NSEW] deg:min.min/1000
openair.c:236: OPENAIR unterstützt Format Xxx:Yy.Zzzz [NSEW] deg:min.min/10000
openair.c:269: OPENAIR unterstützt Format Xxx:Yy.Zz [NSEW] deg:min.min/100
openair.c:270: OPENAIR unterstützt Format Xxx:Yy.Zzz [NSEW] deg:min.min/1000
openair.c:271: OPENAIR unterstützt Format Xxx:Yy.Zzzz [NSEW] deg:min.min/10000
openair.c:304: OPENAIR unterstützt Format Xxx°Yy.Zz [NSEW] deg:min.min/100
openair.c:305: OPENAIR unterstützt Format Xxx°Yy.Zzz [NSEW] deg:min.min/1000
openair.c:306: OPENAIR unterstützt Format Xxx°Yy.Zzzz [NSEW] deg:min.min/10000
openair.c:336: OPENAIR unterstützt Format Xxx.Yyyyy [NSEW] deg:deg/10000
openair.c:352: OPENAIR unterstützt Format Xxx.Yyyyy [NSEW] deg:deg/10000
openair.c:980: openair_read_file liest .air files
popup.c:61: Button "to ICAO" liest aktuell
berechnete Route in ICAO Programm ein
popup.c:68: Button "to GPS" sendet aktuell berechnete Route an GPS
router.c:428: die berechnete route wird in .icao/route.gpx geschrieben
router.c:431: die berechnete route wird auch in .icao/route.iw geschrieben
router.c:637: shift-mittlere-maustaste: make text box describing the current
route, numlines = 0 if none
search.c:17: ctrl-F startet Suchmaske
soaring.c:115: int windspeed = 20;
calc_all_dreiecktimes_at20kmh rechnet für 20km/h
soaring.c:303: if (currentroute[FROM] && totaldistance)
don't try if no start point specified
soaring.c:312: FAI triangle: each side must be at
least 28% of the total distance,
soaring.c:313: no side may be longer then 45% of the total distance:
soaring.c:320: if (maxdist > 500/1.852)
Fai Triangles: 500+ km: shortest side only needs to be 25 %
soaring.c:336: check possible FAI triangles
soaring.c:362: if (temptime1<150) { Soaring Triangles: maximal 150 Minuten
soaring.c:368: if (temptime2<150) { Soaring Triangles: maximal 150 Minuten
soaring.c:378: evaluate ease of route, sort accordingly
soaring.c:380: (still to be done...) aber Flugzeit beruecksichtigt Wind.
soaring.c:381: WICHTIG: Wind und speed muessen auch gesetzt sein (in GPS Simulator)
Chapter 2
Implementation notes
The "original" ICAO application (and by the time this
document is written the only one) is based on Linux
and requires X11R5 and Motif 1.1 or 1.2. The distribution
contains an Imakefile and should be working on
any UNIX/X11R5/Motif environment.
Early versions of ICAO were succesfully compiled on
Hewlett-Packard Series 700 workstations. However,
I had some trouble with the Motif version. Most of
the problems are probably caused by the mixture of
Motif files from different versions of Motif that
were available to me so far. One thing I did experience, too,
is that compiling with gcc seems easier than using cc.
There is also a set of Linux binaries linked for
both shared and static Motif libraries, meaning that Motif
does not have to be installed on your Linux machine
in order to use ICAO.
In October 1993, Oliver Meyer and Stefan Leuker
announced that they started porting ICAO to NeXTstep
486. Any porting attempts to most other platforms
are very much appreciated, as long as they respect the
ICAO licence which you can find at the end of this document.
2.1 History
December 1992: Work on ICAO begins. The roots come
from an MS-DOS program that displays part of
the globe.
January 1993: Version 0.10 of ICAO is running under
X11/Linux. Most object types have been implemented.
February 1993: Version 0.20 of ICAO includes PostScript
output. The master world file contains nearly
700 objects by now.
March 1993: Version 0.50 is a first attempt to use
the X-Toolkit for ICAO. Without any real programming
manuals, writing a map widget was a bit difficult
so that version did not contain any map display. For the
first time, the number of objects contained in the world
file exceeded 1000.
Summer 1993: Like most glider pilots, Martin preferred
spending his spare time at the airfield, not in front
of his computer. No work on ICAO is done.
Oktober 1993: In version 0.60a, a Motif interface serves
as a front-end for the features that version 0.50
already had, combined with the map display of the
older versions. Oliver Meyer and Stefan Leuker start
working on a NeXTstep port.
November 1993: Almost one year after work on ICAO
began, the UNIX/X11 v ersion is uplaoded to a
number of FTP servers. Current version number is 0.60b.
Chapter 3
Running ICAO
To start ICAO, you need the executable icao and a world
file that represents the database containing all the
objects ICAO uses to perform its calculations and to
draw maps. If the world file is called world, start
ICAO from your X11 screen using by
icao world &
The main window will appear, consisting of
" the menu bar that works no different that any other Motif menu
" the map window on the right hand side
" the current route that is made of a take-off location
and a destination, as well as up to three in-between positions
" the object browser that lists all objects that
are contained in the world file by name
" the quick-search entry field in the bottom left corner
of the ICAO window. As the name implies, it can be
used to quickly find an object name in the browser.
If you dont specify a world file, ICAO will attempt
to read it from standard input. Consequently, you can
also start the application using something like
icao < world &
This allows you to have the world-file compressed on
your file system and pipe the output of uncompress to
ICAO.
3.1 The Map Window
Within the map window, mouse buttons perform the
following functions:
left: Makes the current cursor location the new origin of
the map. The map origin is the point in the middle
of the map.
middle: This button is reserved for future use. It
will be needed for the Drag&Drop feature supported by
Motif 1.2.
right: Display additional information (if available)
for an object close to the cursor. I f no object is close
enough, ICAO will tell you what airspace you are in.
The respective information is displayed in a small
popup window that automatically disappears when
you release the mouse button.
The right mouse button is also used to measure distances
and true tracks. Go to the starting point of your
line, hold a shift key on your keyboard, press
the right mouse button and hold it. Then move to whereever
you want to go. The top line will display the exact
distance and track. Releasing the mouse button will quit
this mode. Please note that the "rubber band" you
are moving snaps to objects when you get close enough.
If you dont like the snap function, release the shift
key but keep holding down the right mouse button.
3.2 The Object Browser
The object browser contains the names of all objects
that you could fly to (not necessarily land at). That
includes airports, waypoints, towns and lakes, but
not rivers and roads. The latter objects are to long to
have something that can be called a center or a reference point.
When it comes to waypoints, the type of the object
is sometimes part of the name. You might have the
"Kraftwerk Weisweiler" in your world file. When you
look for it in the object browser, you might also try
to find the name "Weisweiler Kraftwerk". Both names
are listed in the browser to make finding objects easier.
Scrolling through the list is simple. When you double
click on a list item, that item will be brought into the
center of the map. It may be nice for some people to
scroll through the browser and guess where in the
world certain objects are - the answer is only a mouseclick away.
3.3 The Quick-Search Field
If you know the name of an object, you can quickly
select it in the browser by typing its name (usually, the
first couple of letters will be sufficient) into the
quick search field that is located at the bottom left corner of
ICAOs main window. Whenever you select it with the
mouse, it is cleared. Typing in letters will make the
first object name selected that matches the letters
you have typed so far.
3.4 The Route Display
You can select a route by specifying a take-off location,
a destination and up to three points to pass during
your flight. The names of the respective waypoints
are displayed in the top left corner of the ICAO main
window. Please note that the way the route panel
is used will be changed as soon as I figure out how the
Drag&Drop system works.
Anyway, at the time being you choose a waypoint by
clicking into the large button right of the t/o, via or
dest label. The respective label will be bordered
to indicate that the field is now "hot". Clicking on the button
another time will deselect the field.
Once you have selected a waypoint field, the next
object you select from the browser will be selected as a
waypoint for your current route. To clear a waypoint
field, select this field first and then click on the <clear
entry> item at the very top of the object list.
Alternatively, you can select objects directly from the
map. Whenever a route field is selected, pressing the
left mouse button when the pointer is close to an
object of the map will select this object as a waypoint.
Airspace objects, rivers and roads can not be selected that way.
A third way to select objects is to use the quick search
field. Once the desired object is highlighted in the
object browser, press the Return key when the quick
search field is focused to select that object as a waypoint.
Chapter 4
The Menu Bar
4.1 The File Menu
4.1.1 Load World File...
4.1.2 Information...
This displays a small dialog box that shows how many
objects ICAO currently finds in its world file.
4.1.3 Quit
Quits ICAO immediately.
4.2 The Map Menu
4.2.1 Change Scale...
You should be familiar with the term scale, as far as
maps are concerned. Using X11, the X server should
know the dimensions of your physical display. Assuming
that your X setup is correct, you should get a map
onto your screen that shows the same area as a
printed map with the same scale and size.
As you see in the set scale dialog, you can select
scales from 1:35,000 up to 1:2,500,000. Smaller scales
(=larger figure behind the colon) are probably not
too useful on the screen. Still, using the scale directive in
your world file, you may select any scale you like.
When it comes to printing large routes, a scale is automatically
chosen by ICAO without the limitation to the scales
offered in the set scale dialog.
The apply button will use your selection and pop
down the dialog box. Clicking on the close button only
pops down the dialog without changing the current scale.
ICAO Map 0.60b -8- November1993
4.2.2 Select Visible Objects...
For different purposes, the user may want different
type of objects to be visible on the screen. The IFR pilot
wont be too interested in highways and small
VFR-only airfields, whereas a glider pilot will probably not
take much advantage of radio navigation facilities.
Apart from that, the smaller your scale is, the more
objects have to be drawn on the map - its a matter
of course that your screen will be crowded, and the time
it takes to redraw the map increases.
Furtunately, you can choose what object types you
would like to see on the map. A visible objects dialog
box is used for that purpose. Small toggle buttons
can be clicked on and off to enable or disable certain
object types. The result is not only visible on
the screen, it also selects object for printing.
4.2.3 Select Map Projection...
Without going into detail at this point: ICAO supports
two different algorithms to project the three dimensional
surface of the earth onto a two dimensional map.
Depending on what characteristics you require, different
projection algorithms can be more or less useful.
In aviation, the conical Lambert projection and
cylindrical Mercator projection serve most needs
quite well as long as you do not approach the poles
(which you should not try using ICAO - hey, its
damn cold there anyway).
Using the Select Map Projection menu item, a small
dialog box appears that gives you the choice of either
Lambert or Mercator projection. Choose whatever you
like and confirm by clicking on the apply button.
Clicking on the quit button will close the dialog
box without noticing your changes.
4.2.4 Print Current Map...
ICAO can create PostScript files that can be interpreted
by GhostScript or similar programs. If you are the
lucky owner of a PostScript printer, you can of
course send the output file immediately to the printer.
When ICAO prints a map, it doesnt bother what is
currently displayed on the screen. It does, however,
check what scale and what origin (center) has been
selected. It also includes only those objects that are currently
marked in the Select Visible Objects dialog. After
these considerations, ICAO produces a 24.7cm
times 17.6cm sized map that is drawn in either
landscape or portrait orientation, depending on what you
select in the print dialog. The PostScript code that is
generated is sent to a file whose name can be entered
in the dialog. It defaults to map.ps.
When you are planning a flight, you may want a printout
of the complete route, covering the take-off location
and destination as well as all the waypoints in
between. In that case, click on the Print Route button in
the print dialog box. ICAO then selects a scale that
makes your route fit on a single sheet of paper. It also
determines whether landscape or portrait orientation
is preferable. Last but not least, it draws a thin line
indicating your selected route. If the autorouter (s.b.)
was used, its output is drawn to the map, replacing the
direct course.
4.3 The Route Menu
4.3.1 Autorouter
Provided that you have selected a take-off location
and a destination (and optionally via waypoints), the
autorouter can find a short route using radio navigation
facilities. It respects the different ranges of the different
VORs and NDBs. It also knows that you can fly to
and from radials of VORs, but only towards NDB
stations.
The autorouter divides your flight into sections that
usually go from one radio beacon to another one. It
then shows a window listing all these sections with
their respective distances and tracks. Finally, it compares
the lotal length of the suggested route with the
length of the direct connection between start and destination.
If your trip is not very short, ICAO usually finds
a route that has only a rather small detour.
The autorouter will fail to work if you did not
specify a start and a destination point or if the distance
between beacons is too large. It does not always find
the shortest possible route.
4.3.2 Draw Route, Undraw Route
If you like, ICAO can draw the currently selected route
as a thin black line on your display. Simply select
the Draw Route menu item. To remove the lines from
your screen, choose the Undraw Route command
from the menu.
4.4 The Soaring Menu
4.4.1 Suggest Triangle
This function should only be interesting for glider pilots.
When you do a cross country flight, usually
triangles that respect the FAI rules result in the best
score/distance ratio. The Suggest Triangle function was
created to help you finding possible triangles that have
a certain length and match the FAI requirements: the
shortest side of the triangle must be at least 28% of
the total distance (or 25% if the total distance is more
than 500km), whereas the longest side may not exceed 45%.
To use this feature, select a take-off location in the
route panel first. Then call the Suggest Triangle menu
item. A dialog box will appear, allowing you to enter
the desired total length in km. Click on the Suggestbutton
when you have entered a range. A browser will appear
in the dialog, listing all the routes that heve
been found.
Double clicking on the suggested triangles will select
the current waypoints in ICAOs route panel and
draw the route on the map.
Chapter 5
The World File
All the information that is used to display the map comes
from an ASCII file called the world file. It contains
object definitions of most common aviation-related
objects such as airports and radio navigation facilities,
but also of other ground objects that will usually be
found on a pilots map. A world file is read each
time you start the program.
Being an ASCII file, the world file can easily be
extended by anyone whod like to contribute data to the
system, so that maybe one day the term world file
will be justified. You are strongly encouraged to provide
information about areas that you know - the world
is by far too big to be digitized by a single person!
This chapter tries to explain what the world-file
looks like. It uses a meta-language called Backus-Naur-
Form. Very simply, it is this:
" <nonterminal symbol> ::= A | B | C
Assignment: the nonterminal symbol (i.e. an identifier)
is either A, B or C.
" [symbol]
Refers to either what symbol is or to nothing, i.e. you may
either specify symbol or not.
" {symbol}
In this case, symbol may be used any number of times in a row,
including zero times. Parentheses can be used to specify precedences.
5.1 Tokens and Types
A scanner usually has a list of tokens and data types
that can be recongnized. They are the terminal symbols
of the world file language:
intlairport airport airport_civ_mil
airport_mil airfield special_airfield
heliport heliport_amb glider_site
hang_glider_site parachute_jumping_site free_ballon_site
vor vor_dme vortac
tacan ndb marker_beacon
basic_radio_facility obstruction group_obstruction
fired_obstruction fired_group_obstruction waypoint
isogone river lake
highway road village
town ctr cvfr
reporting_point at @
elev range frequency
alias runway gras
asphalt asph concrete
conc out scale
ICAO Map 0.60b -13- November1993
origin parallels show_map
digitize calibrate zeromeridian
The following data types can be processed:
<float> ::= {<digit>} [.] {<digit>}
<string> ::= <alpha> {<alpha>|<digit>|.|_|-}
<latitude> ::= <digit><digit>.<digit><digit><digit><digit>"(N|S)
<longitude> ::= <digit><digit>[<digit>].<digit><digit><digit><digit>"(E|W)
Two nonterminal symbols still need to be defined:
<alpha> ::= a | b | ... | z | A | B | ... | Z
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Comments can be put anywhere in the world-file using the C-style:
/* this is a comment */
A comment can be serveral lines long. Comments can not, however,
be nested; therefore, the following construct
would cause an error:
/* anything /*comment*/ more of anything */
Whitespace characters, i.e. spaces, tabs and newlines
are ignored by the scanner as long as they dont occur
inside a token. The scanner is not case-sensitive,
meaning that it doesnt matter whether you write airport,
Airport or AIRPORT. The only exception are strings,
for they are usually used for names and IDs.
5.2 Parsing the World File
With these tokens and types in mind, we can look at
what the parser does when it reads through the world
file:
<world-file> ::= {<line>}
<line> ::= [<loc> [<elev>]] [<object> {<quality>}]
| <command>
<elev> ::= elev <float>
<loc> ::= at <location>
| @ <location>
<location> ::= <latitude> <longitude>
<quality> ::= frequency <float>
| runway <float> <float> <runwaytype>
| alias <string>
| range <float>
<runwaytype> ::= asphalt | asph
| concrete | conc
| gras
<object> ::= intlairport <string> {<location>}
| airport <string> {<location>}
| airport_mil <string>
| airport_civ_mil <string>
| airfield <string>
| special_airfield <string>
| heliport <string>
| heliport_amb <string>
| glider_site <string>
| parachute_jumping_site <string>
| free_ballon_site <string>
| vor <string>
| vor_dme <string>
| vortac <string>
| tacan <string>
| ndb <string>
| marker_beacon <string>
| basic_radio_facility <string>
| obstruction <string>
| group_obstruction <string>
| fired_obstruction <string>
| fired_group_obstruction <string>
| reporting_point <string>
| river [<string>] {<location>}
| lake [<string>] {<location>}
| highway [<string>] {<location>}
| road {<location>}
| town [<string>] {<location>}
| isogone <float> {<location>}
| village <string>
| waypoint <string>
| ctr <string> {<location>}
| cvfr <string> {<location>}
<command> ::= out <string>
| scale 1:<float>
| origin <location>
| parallels <latitude> <latitude>
| show_map
| digitizer
| calibrate <location> <location>
| zeromeridian <longitude>
5.3 Parse Errors
If the parser thinks that something is wrong in the
world file it will output a parse error message and the
line number that was processed. It will not tell you
what precisely is wrong, but usually an error will be
easy to find. Typical mistakes are prohibited characters
within a string (like blanks - use underscores (_)
instead), mismatched quote marks in locations etc.
Look at similar object definitions in the original world
file and compare it with the line thats causing trouble
Chapter 6
Geodetical Aspects of ICAO
This chapter has not been written yet. It will cover
the different qualities of map projections and tell you
how ICAO calculates distances and tracks.
Chapter 7
Licence Information
ICAO is not Public Domain or Shareware. It is copyrighted
software that is simply free of charge, whether
it is used for private use or for business purposes.
You are encouraged to use it, distribute it and even
change the source code if you think you can make better
use of it that way. Distributors may ask for a fee, but
it must be obvious that this fee is for the media, shipping
and handling only.
The world file contains nothing but names and coordinates.
Typing it all in was a lot of work, but locations
of objects can hardly be something thats worth a copyright.
Therefore, the world file is not copyrighted but
public domain.
Martin Pauly welcomes new regions added to the world file.
Portings to other operating systems are also
appreciated, except for any MicroSoft operating system or
user interface other than MS-DOS 1.0, i.e. porting
ICAO to the latter platforms is prohibited.
ICAO is distributed without any warrenty, without even
the implied warrenty of merchantability or fitness
for a particular purpose. The only thing Martin Pauly
guarantees is that the program will occupy disk space.
The use of general descriptive names, trade names, etc.,
in this document, even if the former are not especially
identified, is not to be taken as a sign that such names,
as understood by the Trade Marks and Merchandise
Act, may accordingly be used freely by anyone.
Unless especially mentioned, ICAO in this document refers
to Martin Paulys program and has nothing to
do with the International Civil Aviation Organization.
Chapter 8
The Future
New features are planned for future versions of ICAO.
As a glider pilot, my ideas mainly deal with the
soaring menu of the program. Things that will definitely
be included in the next release of ICAO include:
" an index function for the suggest triangle function
that depends on the detour a pilot will have to make to
avoid restricted airspace
" evaluation of cross country flights according to DMST
rules, including flights that were not completed
" wind influence
" enhanced route printing, including text to help pilots
with their flight preparation
" digitizer support (as soon as I figure out how that
damn serial port can be accessed without getting a
"Device or resource busy" error message - any ideas?)
" deviation support for magnetic North reference
" more precise distance and track measuring using an
elliptical model of the earth rather than a spherical
one.
Any other suggestions from your side? Then dont hesitate
to tell me about it! If I like your ideas, Ill see
what I can do...
Apart from program extensions, the world file will be
extended by me. I plan to have all airports, airfields
and glider sites in Germany in it, and more detailed
information from the ICAO maps 1:500,000 "Duesseldorf"
and "Frankfurt". Buying all the maps for Germany every
year would be a bit expensive, but if anyone
likes to contribute a map, Ill try to add it to the world file.
You might have the impression now that the world file
should only include objects from Germany. This is
not the case. However, as creating a detailed world
file really takes a lot of time, I will not do anything but
Germany myself. A future version of ICAO will include
a more complex world file management, but no
details have been fixed yet. If you want to create
world files for other countries and you need help, just contact
me and Ill try to help you.
Chapter 9
Known Bugs (comments in brackets by Hendrik)
There are some odd things about ICAO that I did not fix
before releasing version 0.60b.
" When you resize the applications main window, all
other windows that belong to ICAO change their
size as well. (now fixed)
" Windows can be opened multiple times, which is not
useful and can lead to mistakes.
(default is to open only once. fixed)
" The Load World File menu item doesnt work yet.
(fixed)
" Dialogs dont have a consistent action area (the
apply-done-close system found in many X applications)
(does not matter; not fixed)
" Errors in the world file sometimes crash the application.
(sad but true)
" Trying to display the polar regions crash ICAO.
(it still does)
" Not all German airfields are contained in the world
file at the moment. I am entering them in alphabetical
order and only reached N so far.
If you find more things that need to be corrected,
please tell me what it is.
(data outdated)
Chapter 10
Special Use Airspace (from WinPilot web site; comments by Hendrik)
OpenAir(tm) Airspace and Terrain description language is an easy
to use and publicly available standard for displaying map information.
User can add or modify the data himself, therefore having a full
control over what is being displayed on the screen.
For a list of available airspace files see our airspace directory.
NEW: WinPilot Version 1.130 and later:
In addition to 'Airspace.txt', now WinPilot also reads a file called 'Terrain.txt'.
Both files can contain all OpenAir commands.
The intention of the 'Terrain.txt' file is to separate terrain description from
airspace description.
(icao has the Land_Germany.iw file for this purpose)
The restriction of the maximum number of labels created by the AT command has
been changed from 3 to unlimited.
There are two new map elements meant for displaying terrain and geographic
features (they differ from airspace in that they don't have popup labels attached):
TO {string} ; Declares Terrain Open Polygon; string - name (optional)
TC {string} ; Declares Terrain Closed Polygon; string - name (optional)
(not yet implemented in icao. Hendrik)
This commands make it easy to define things like lakes, roads, borders, etc
For example, to draw a lake using light blue color and a dark blue 1-pixel wide,
solid border, that is visible at zoom levels 100km or closer, the following
commands can be used:
TC Lake Tahoe
SP 0, 1, 0, 0, 255
SB 200,200,255
V Z=100
DP 38:56:00 N 120:02:00 W
DP 38:56:40 N 120:04:00 W
DP 39:00:00 N 120:05:55 W
DP 39:01:45 N 120:07:00 W
DP 39:03:40 N 120:07:00 W
DP 39:05:00 N 120:09:00 W
DP 39:10:30 N 120:07:30 W
DP 39:11:00 N 120:06:00 W
...
The three new commands seen above are:
SP - Select Pen - corresponds to Win32 API CreatePen
SB -Select Brush - corresponds to Win32 API CreateSolidBrush
and V Z=number (select a zoom level above which the element will not be
displayed)
(SP, SB not yet implemented. Hendrik)
SP style, width, red, green, blue ; Selects Pen (border) to be used in drawing
PEN STYLES in SP command:
SOLID 0
DASH 1
NULL (transparent=no border displayed) 5
Example: for a 1 pixel wide, dashed, light gray pen use: SP 0,1,192,192,192
SB red, green, blue ; Selects Brush (interior) red, green, blue can range from 0
(least intensity) to 255 (max intensity)
Example: to select white interior of a closed polygon, use: SB 255, 255, 255
To select transparent interior use: SB -1,-1,-1
The SP and SB commands can also be used to alter the default colors of airspace
segments.
For example, to change the default color of class C airspace from dark gray to
magenta, use: 'SB 180,0,180' in the first class C segment definition, like this:
AC C
AN RENO-C
AL SFC
AH 8400 ft
SB 180,0,180 *select MAGENTA as the default for class C
V X=39:29.9 N 119:46.1 W
DC 5
For a definition of OpenAir, see the listing below:
******* OPEN AIR (tm) TERRAIN and AIRSPACE DESCRIPTION LANGUAGE *************
* Version 1.0
* December 10, 1998
* Updated October 15, 1999
* Send comments to jerryp@winpilot.com
*
*
* AIRSPACE related record types:
* ==============================
*
* AC class ; class = Airspace Class, see below:
* R restricted
* Q danger
* P prohibited
* A Class A
* B Class B
* C Class C
* D Class D
* GP glider prohibited
* CTR CTR
* W Wave Window
*
*
* AN string ; string = Airspace Name
* AH string ; string = Airspace Ceiling
* AL string ; string = Airspace Floor
* AT coordinate ; coordinate = Coordinate of where to place a name label on the
map (optional)
* ; NOTE: there can be multiple AT records for a single airspace segment
*
*
* TERRAIN related record types (WinPilot version 1.130 and newer):
* ==============================
*
* TO {string} ; Declares Terrain Open Polygon; string = name (optional)
* TC {string} ; Declares Terrain Closed Polygon; string = name (optional)
* SP style, width, red, green, blue ; Selects Pen to be used in drawing
* SB red, green, blue ; Selects Brush to be used in drawing
*
*
* Record types common to both TERRAIN and AIRSPACE
* =================================================
*
* V x=n ; Variable assignment.
* ; Currently the following variables are supported:
* ; D={+|-} sets direction for: DA and DB records
* ; '-' means counterclockwise direction; '+' is the default
* ; automatically reset to '+' at the begining of new airspace segment
* ; X=coordinate : sets the center for the following records: DA, DB, and DC
* ; W=number : sets the width of an airway in nm (NYI)
* ; Z=number : sets zoom level at which the element becomes visible (WP version
1.130 and newer)
*
* DP coordinate ; add polygon pointC
* DA radius, angleStart, angleEnd ; add an arc, angles in degrees, radius in nm
(set center using V X=...)
* DB coordinate1, coordinate2 ; add an arc, from coordinate1 to coordinate2 (set
center using V X=...)
* DC radius ; draw a circle (center taken from the previous V X=... record,
radius in nm
* DY coordinate ; add a segment of an airway (NYI)
* SAMPLE OpenAir(tm) File (for Minden, NV):
* Reno Class C
AC C
AN RENO-C
AL SFC
AH 8400 ft
V X=39:29.9 N 119:46.1 W
DC 5
* Reno Class C
AC C
AN RENO
AL 7200 ft
AH 8400 ft
* this item will have 3 labels
AT 39:36.8 N 119:46.1W
AT 39:22.8 N 119:45.1W
AT 39:29.9 N 119:36.1W
V X=39:29.9 N 119:46.1W
DA 10,270,290
DA 7,290,320
DA 10,320,200
V D=-
DA 5,200,270
AC C
AN BEALE AFB
AL SFC
AH 4100 ft
V X=39:08.2 N 121:26.2 W
DC 5
AC C
AN BEALE AFB
AL 2600ft
AH 4100 ft
AT 39:10.2 N 121:17.2 W
DA 10,9,130
V D=-
DA 5,130,9
AC C
AN BEALE AFB
AL 1600ft
AH 4100 ft
AT 39:06.2 N 121:35.5 W
DA 10,130,9
V D=-5
DA 5,9,130
AC C
AN SACRAMENTO/MCCLEAN
AL 1600 ft
AH 4100 ft
V X=38:41.7 N 121:35.4 W
DA 10,164,40
V X=38:40.0 N 121:24.0 W
DA 10,344,219
******************* RESTRICTED ********************
AC R
AN R 4812 4804
AL 0
AH FL 180
V X=39:13:00 N 118:13:00 W
DA 5,0,178
V D=-
V X=39:10:20 N 118:37:00 W
DA 5,175,355
AC R
AN R-4803 S
AL 0
AH FL180
V X=39:20:00 N 118:52:00 W
DA 3,27,270
DP 39:35:00 N 118:59:20 W
DP 39:36:00 N 118:53:30 W
AC R
AN R-4806 W
AL 0
AH UNLIM
DP 36:41:00 N 115:56:10 W c29
DP 37:06:00 N 115:56:10 W c30
DP 37:06:00 N 115:35:00 W c31
DP 37:16:55 N 115:35:00 W c32
DP 37:16:55 N 115:18:10 W c34
DP 36:38:08 N 115:18:10 W c35
DP 36:25:40 N 115:18:10 W c36
DP 36:25:40 N 115:23:20 W c37
DP 36:35:00 N 115:37:00 W c38
DP 36:35:00 N 115:53:00 W c39
DP 36:35:45 N 115:56:10 W c40
AC R
AN R-4806 E
AL 100 Agl
AH UNLIM
DP 37:16:55 N 115:18:10 W c34
DP 36:38:08 N 115:18:10 W c35
DP 36:47:40 N 115:07:00 W c41
DP 37:11:45 N 115:07:00 W c42
DP 37:16:55 N 115:11:00 W c43
AC R
AN R-4807 A
AL 0
AH UNLIM (Mon-Fri)
AT 37:28:00 N 116:36:00 W
DP 37:53:00 N 117:06:00 W
DP 37:53:00 N 116:55:30 W c1
DP 37:47:00 N 116:55:30 W c2
DP 37:33:00 N 116:43:20 W c3
DP 37:33:00 N 116:26:20 W c4
DP 37:53:00 N 116:26:20 W c5
DP 37:53:00 N 116:11:00 W
DP 37:42:00 N 116:11:00 W
DP 37:42:00 N 115:53:00 W c6
DP 37:33:00 N 115:53:00 W c7
DP 37:33:00 N 115:48:00 W c8
DP 37:28:00 N 115:48:00 W c9
DP 37:28:00 N 116:00:00 W c10
DP 37:16:00 N 116:00:00 W c11
DP 37:16:00 N 116:11:10 W c12
DP 37:20:00 N 116:11:00 W c13
DP 37:23:00 N 116:17:15 W c14
DP 37:23:00 N 116:22:15 W c15
DP 37:21:00 N 116:27:00 W c16
DP 37:21:00 N 116:34:10 W c17
DP 37:16:00 N 116:31:00 W c18
DP 37:08:00 N 116:27:00 W c19
DP 36:55:00 N 116:27:00 W c20
DP 36:55:00 N 116:34:00 W c21
DP 36:51:00 N 116:34:00 W c22
DP 37:26:25 N 117:04:45 W c23
DP 37:32:30 N 117:05:55 W c24
DP 37:53:00 N 117:06:00 W c25
AC R
AN R-4807 B
AL 0
AH UNLIMITED
DP 37:16:00 N 116:11:10 W c12
DP 37:20:00 N 116:11:00 W c13
DP 37:23:00 N 116:17:15 W c14
DP 37:23:00 N 116:22:15 W c15
DP 37:21:00 N 116:27:00 W c16
DP 37:21:00 N 116:34:10 W c17
DP 37:16:00 N 116:31:00 W c18
AC R
AN R-4808 N
AL 0
AH UNLIMITED
DP 37:28:00 N 115:48:00 W c9
DP 37:28:00 N 116:00:00 W c10
DP 37:16:00 N 116:00:00 W c11
DP 37:16:00 N 116:11:10 W c12
DP 37:16:00 N 116:31:00 W c18
DP 37:08:00 N 116:27:00 W c19
DP 36:55:00 N 116:27:00 W c20
DP 36:55:00 N 116:34:00 W c21
DP 36:51:00 N 116:34:00 W c22
DP 36:51:00 N 116:26:45 W c26
DP 36:46:00 N 116:26:45 W c27
DP 36:41:00 N 116:15:00 W c28
DP 36:41:00 N 115:56:10 W c29
DP 37:06:00 N 115:56:10 W c30
DP 37:06:00 N 115:35:00 W c31
DP 37:16:55 N 115:35:00 W c32
DP 37:28:00 N 115:35:00 W c33
AC R
AN R-4808 S
AL 0
AH UNLIMITED
DP 36:46:00 N 116:26:45 W c27
DP 36:41:00 N 116:15:00 W c28
DP 36:41:00 N 116:26:45 W
AC R
AN R-4809
AL 0
AH UNLIMITED
DP 37:53:00 N 116:55:30 W c1
DP 37:47:00 N 116:55:30 W c2
DP 37:33:00 N 116:43:20 W c3
DP 37:33:00 N 116:26:20 W c4
DP 37:53:00 N 116:26:20 W c5
AC R
AN R-4810
AL 0
AH 17000ft
V X=39:10:20 N 118:37:00 W
DA 5,293,215
V X=39:09:00 N 118:42:00 W
DA 3,159,347
AC R
AN R-4811
AL 0
AH 15000ft (Mo-Fri)
V X=38:14:40 N 118:38:40 W
DC 1.5
AC R
AN R-4813
AL 0
AH FL180
V X=39:51:20 N 118:21:00 W
DA 13,165,255
DP 39:51:15 N 118:37:35 W
DP 40:01:20 N 118:15:00 W
DP 40:01:20 N 118:00:55 W
DP 39:58:20 N 118:00:55 W
AC R
AN R-4816S
AL 500 ft agl
AH FL180
DP 39:17:20 N 118:20:30 W
DP 39:18:20 N 117:59:00 W
DP 39:21:00 N 117:55:00 W
DP 39:24:30 N 117:52:00 W
DP 39:26:50 N 117:51:08 W
DP 39:30:00 N 117:49:00 W
DP 39:34:00 N 117:41:20 W
DP 39:34:00 N 118:12:30 W
DP 39:30:00 N 118:15:18 W
AC R
AN R-4816N
AL 1500 ft agl
AH FL180
DP 39:34:00 N 118:12:30 W
DP 39:51:20 N 117:59:55 W
DP 39:51:20 N 117:31:00 W
DP 39:34:00 N 117:40:00 W
************* ALERT ************
AC R
AN A-481
AL 7000ft
AH 17000ft
AT 36:21.0 N 115:22.0 W
DP 36:14.2 N 115:02.0 W
V X=36:14.2 N 115:02.0 W
DA 30,274,307
************* CLASS D ***********
AC D
AN NAS-FALLON
AL 0
AH 6400ft
V X=39:25.0 N 118:42.0 W
DC 6
AC D
AN LAKE TAHOE
AL 0
AH 8800ft
V X=38:53.6 N 119:59.7 W
DC 5
************* Wave Windows ***********
AC W
AN Minden West
AH Ask on 122.8
AL 18000 ft
DP 39:04:00 N 119:57:00 W
DP 39:04:00 N 119:41:00 W
DP 38:42:00 N 119:38:00 W
DP 38:42:00 N 119:57:00 W
Chapter 11
Acknowledgements
Id like to thank the following people (in arbitrary order):
" Linus Torvalds for creating Linux and donating it to the public
" all the people who were involved in assembling the SLS package
" Michael Heck for his airport directory
" Stefan Leuker and Oliver Meyer for their suggestions
and porting efforts
" Frans Goddijn for offering to edit the manual and
being so patient with me as far as correspondence is
concerned
Chapter 12
Hinweise, direkt aus dem Sourcecode (Hendrik)
fvu.c:49: case 'B': /* MANUAL B Record (Fix) */
fvu.c:50: if (line[24] == 'A') { /* MANUAL valid flag */
fvu.c:59: if (log_points[log_numpoints].time == 0){ // MANUAL keine Zeit eingetragen
fvu.c:90: // MANUAL pressure altitude im .igc wird ignoriert
fvu.c:116: if (log_points[log_numpoints].speed < 5) { // MANUAL Odometer geht nur bei mehr als 5km/h
fvu.c:119: if (log_points[log_numpoints].speed < 10) { // MANUAL Stoppuhr geht nur bei mehr als 10km/h
fvu.c:137: case 'H': /* MANUAL H Record (header) */
fvu.c:156:// MANUAL fvu_read_log liest .igc files
gpssim.c:1444:/* MANUAL gps_evaluate: distinguish cruise/climb, statistics... */
gpssim.c:1480: /* MANUAL assume climbing if delta h in 30 seconds positive */
gpssim.c:1490: log_points[j].status = 1; // MANUAL climb: status=1
gpssim.c:1496: /* MANUAL climb periods that are very close together are united */
gpssim.c:1548:/* MANUAL gps_evaluate_old: distinguish cruise/climb, statistics... */
gpssim.c:1790:// MANUAL gps_read_log liest .nmea files
gpssim.c:1931: if ( (GS_zur >=20) & (GS_hin >= 20) ) { // MANUAL gruener Kreis fur Hin+Rueckweg
gpssim.c:1980: if ( GS_hin >= 10) { // MANUAL Roter Kreis fuer 1.5 Stunden geradeaus...
gpssim.c:1981: t_hin = 1.5; // MANUAL Roter Kreis fuer 1.5 Stunden geradeaus...
gpssim.c:2034: if ( (GS_zur >=20) & (GS_hin >= 20) ) { // MANUAL rote Keule fuer Starkwind
icao.c:216: // MANUAL Page UP = Zoom rein (Drawingwindow muss focus haben)
icao.c:228: // MANUAL Page DN = Zoom raus (Drawingwindow muss focus haben)
icao.c:240: // MANUAL Pfeil rechts = in der Karte nach rechts gehen (Drawingwindow muss focus haben)
icao.c:246: // MANUAL Pfeil links = in der Karte nach links gehen (Drawingwindow muss focus haben)
icao.c:252: // MANUAL Pfeil hoch = in der Karte nach oben gehen (Drawingwindow muss focus haben)
icao.c:258: // MANUAL Pfeil runter = in der Karte nach unten gehen (Drawingwindow muss focus haben)
icao.c:264: // MANUAL HOME=Adjust Map ON/OFF
icao.c:275: case 41: // MANUAL: ctrl-F = Suchfunktion
icao.c:283: case ' ': // MANUAL <SPACE> = cycle basemap (Drawingwindow muss focus haben)
icao.c:291: case '+': // MANUAL <+> = Longitude Offset +0.01, Anpassung an basemap (Drawingwindow muss focus haben)
icao.c:296: case '-': // MANUAL <-> = Longitude Offset -0.01, Anpassung an basemap (Drawingwindow muss focus haben)
icao.c:301: case '\r': // MANUAL <CR> = beim distanz messen: routenpunkt erzeugen und strecke weiterlegen
icao.c:340: // MANUAL Shift+Rechte Maustaste = schreibe Cursorposition in .icao/wpt.iw und ./icao/pos.txt
icao.c:381: // MANUAL Linke Maustaste = zeigt RANGE Keis wenn speed und windspeed gegeben
icao.c:382: // MANUAL Linke Maustaste = Karte verschieben
icao.c:390: //MANUAL Linke Maustaste = no route button selected -> like DragDrop, move current map image with mouse
icao.c:407: // MANUAL Linke Maustaste = if a button is selected, take coordinates of object and deselect
icao.c:408: // MANUAL Linke Maustaste = Wendepunkt in Current Route eintragen
icao.c:449: if (event->xbutton.button == Button2) { /* //MANUAL Button2, no DragDrop */
icao.c:451: // MANUAL Shift-Mittlere Maustaste: schreibe current route
icao.c:506: // MANUAL Mittlere Maustaste = schreibe Cursorposition in .icao/wpt.iw und .icao/pos.txt
icao.c:533: // MANUAL right mouse button= display small info box for object
icao.c:534: // MANUAL right mouse button +SHIFT: init rubber line for distance measuring
icao.c:636: if (event->xbutton.button == Button4) { //MANUAL Mouse Wheel: Zoom In/out
icao.c:652: if (event->xbutton.button == Button5) { //MANUAL Mouse Wheel: Zoom In/out
icao.c:1151: /* MANUAL if not found under $ICAOHOME, look in current directory */
icao.c:1500: case 0: /* MANUAL auto vfr router hin und zurueck */
icao.c:1506: case 1: /* MANUAL auto vfr router nur hin */
icao.c:1512: case 2: /* MANUAL auto radio router nur hin */
icao.c:1518: case 3: // MANUAL 5-Punkt Route nur auswerten
icao.c:1524: case 4: /* MANUAL draw route */
icao.c:1527: case 5: /* MANUAL undraw route */
icao.c:1565: /* MANUAL object browser: double click, show object in map and write to ".icao/wpt.gpx" */
icao.c:1711: // MANUAL Doppelklick auf Objekt in Objektliste laedt dieses in GPS
icao.c:1712: case O_INTLAIRPORT: strcpy (wpt_type, "Intl.Airport"); break; // MANUAL
icao.c:1713: case O_AIRSPACE: strcpy (wpt_type, "Airspace"); break; // MANUAL
icao.c:1714: case O_AIRPORT: strcpy (wpt_type, "Airport"); break; // MANUAL
icao.c:1715: case O_AIRPORT_CIV_MIL: strcpy (wpt_type, "Airport"); break; // MANUAL
icao.c:1716: case O_AIRPORT_MIL: strcpy (wpt_type, "Airport"); break; // MANUAL
icao.c:1717: case O_AIRFIELD: strcpy (wpt_type, "Custom 1"); break; // MANUAL
icao.c:1718: case O_SPECIAL_AIRFIELD: strcpy (wpt_type, "Custom 2"); break; // MANUAL
icao.c:1720: case O_HELIPORT: strcpy (wpt_type, "Danger Area"); break; // MANUAL
icao.c:1721: case O_HELIPORT_AMB: strcpy (wpt_type, "Danger Area"); break; // MANUAL
icao.c:1722: case O_GLIDER_SITE: strcpy (wpt_type, "Custom 3"); break; // MANUAL
icao.c:1723: case O_HANG_GLIDER_SITE: strcpy (wpt_type, "Custom 4"); break; // MANUAL
icao.c:1724: case O_PARACHUTE_JUMPING_SITE: strcpy (wpt_type, "Parachute Area"); break; // MANUAL
icao.c:1725: case O_FREE_BALLON_SITE: strcpy (wpt_type, "Parachute Area"); break; // MANUAL
icao.c:1732: case O_MARKER_BEACON: strcpy (wpt_type, "Radio Beacon"); break; // MANUAL
icao.c:1733: case O_BASIC_RADIO_FACILITY: strcpy (wpt_type, "Radio Beacon"); break; // MANUAL
icao.c:1735: case O_OBSTRUCTION: strcpy (wpt_type, "Short Tower"); break; // MANUAL
icao.c:1736: case O_GROUP_OBSTRUCTION: strcpy (wpt_type, "Short Tower"); break; // MANUAL
icao.c:1737: case O_FIRED_OBSTRUCTION: strcpy (wpt_type, "Short Tower"); break; // MANUAL
icao.c:1738: case O_FIRED_GROUP_OBSTRUCTION: strcpy (wpt_type, "Tall Tower"); break; // MANUAL
icao.c:1740: case O_AERO_GROUND_LIGHT: strcpy (wpt_type, "Danger Area"); break; // MANUAL
icao.c:1741: case O_REPORTING_POINT: strcpy (wpt_type, "Danger Area"); break; // MANUAL
icao.c:1743: case O_VILLAGE: strcpy (wpt_type, "City (Small)"); break; // MANUAL
icao.c:1745: case O_TOWN: strcpy (wpt_type, "City (Medium)"); break; // MANUAL
icao.c:1746: case O_WAYPOINT: strcpy (wpt_type, "Custom 10"); break; // MANUAL
icao.c:1747: case O_ROUTEPOINT: strcpy (wpt_type, "Custom 10"); break; // MANUAL
icao.c:1748: case O_SCHLOSS: strcpy (wpt_type, "Scales"); break; // MANUAL
icao.c:1749: case O_SEE: strcpy (wpt_type, "Custom 20"); break; // MANUAL
icao.c:1750: case O_KIRCHE: strcpy (wpt_type, "Cemetery"); break; // MANUAL
icao.c:1752: case O_FTURM: strcpy (wpt_type, "Custom 6"); break; // MANUAL
icao.c:1754: case O_KROSES:strcpy (wpt_type, "Golf Course"); break; // MANUAL
icao.c:1755: case O_KROSEB:strcpy (wpt_type, "Golf Course"); break; // MANUAL
icao.c:1756: case O_WRAD: strcpy (wpt_type, "Custom 9"); break; // MANUAL
icao.c:1758: case O_BAHNHOF: strcpy (wpt_type, "Custom 5"); break; // MANUAL
icao.c:1759: case O_TANKE: strcpy (wpt_type, "Gas Station"); break; // MANUAL
icao.c:1760: case O_BRUECKE: strcpy (wpt_type, "Custom 13"); break; // MANUAL
icao.c:1761: case O_GIPFEL: strcpy (wpt_type, "Summit"); break; // MANUAL
icao.c:1762: case O_DHV: strcpy (wpt_type, "Custom 4"); break; // MANUAL
icao.c:1763: case O_BART: strcpy (wpt_type, "Custom 12"); break; // MANUAL
icao.c:1764: case O_WETTER: strcpy (wpt_type, "City (Small)"); break; // MANUAL
icao.c:1765: default: unknown=1; strcpy (wpt_type, "unknown type"); break; // MANUAL
icao.c:1783: case O_GPSRTE: // MANUAL Doppelklick auf gpsroute in Objektliste zeigt die route (nur) und laedt in GPS als track
icao.c:1813: case O_AIRSPACE: // MANUAL
icao.c:1814: case O_CTR: // MANUAL
icao.c:1815: case O_CVFR: // MANUAL
icao.c:1816: case O_STATE_BORDER: // MANUAL
icao.c:1817: case O_BORDER: // MANUAL
icao.c:1818: case O_TOWN: // MANUAL
icao.c:1819: case O_RIVER: // MANUAL
icao.c:1820: case O_HIGHWAY: // MANUAL
icao.c:1821: case O_VILLAGE: // MANUAL
icao.c:1822: case O_LINIE: // MANUAL
icao.c:1823: case O_GPS: // MANUAL
icao.c:1824: case O_GPSMY: // MANUAL
icao.c:1825: case O_GPSOLCPARA: // MANUAL
icao.c:1826: case O_GPSOLCMOT: // MANUAL
icao.c:1827: case O_GPSTEMP: // MANUAL
icao.c:1828: case O_LAKE: // MANUAL
icao.c:1829: case O_INTLAIRPORT: // MANUAL
icao.c:1831: // MANUAL Doppelklick auf airspace, river, town, linie, gpstrack in Objektliste laedt in GPS
icao.c:1894: // MANUAL Zeichnet das igc file wenn im objectbrowser ein .iw oder .igc angeklickt wird
icao.c:1948: /* MANUAL left click to object panel: test if a route button is active. if so, note new waypoint */
icao.c:1982:/* MANUAL change label of a route button. this is used when from the suggest
icao.c:1983: MANUAL triangle window the user selects a route by a double click. */
icao.c:3261: // MANUAL jetzt die Kommandozeilenparameter
icao.c:3272: /* MANUAL jetzt load user preferences */
icao.c:3299: /* MANUAL load map files as specified in /~.icaorc */
icao.c:3308: // MANUAL Load map "name.iw" laedt die map name.iw nachdem die aktuelle fertig geladen ist
mapobjects.c:17: // MANUAL this is where the display of currently visible objects is handled
mapobjects.c:1257: // MANUAL 3pt wide dashed in the middle = GPS route
mapobjects.c:2010: // MANUAL: scale >1500000: keine Wegpunkte mehr zeichnen
mapobjects.c:2016: // MANUAL: scale <700000: Wegpunkte zeichnen
mapobjects.c:2041: // MANUAL: scale >700000: kleine + als Wegpunkte zeichnen
mapobjects.c:2057: // MANUAL: scale > 150000: Thermik NICHT zeichnen
mapobjects.c:2090: // MANUAL: bei scale < 150000 nur die fetten Bärte
mapobjects.c:2260: // MANUAL: scale <700000: bahnhof zeichnen
mapobjects.c:2275: // MANUAL: scale >700000: kleine + als Wegpunkte zeichnen
mapobjects.c:2389: // MANUAL: scale > 500000: große Kompassrose NICHT zeichnen
mapobjects.c:2411: // MANUAL: scale > MaxTextZoom: kleine Kompassrose NICHT zeichnen
mapobjects.c:2435: // MANUAL: scale > 300000: normale Kompassrose NICHT zeichnen
objectdetails.c:64:// MANUAL Objectdetails: Button "Polygon" schaltet nopolygon an/aus
objectdetails.c:107:// MANUAL Objectdetails: Button "to GPS" sendet aktuelles Objekt an GPS
openair.c:161: // MANUAL OPENAIR unterstützt Format Xxx:Yy:Zz.zz [NSEW] deg:min:sec.frac
openair.c:178: // MANUAL OPENAIR unterstützt Format Xxx:Yy:Zz.zz [NSEW] deg:min:sec.frac
openair.c:195: // MANUAL OPENAIR unterstützt Format Xxx:Yy:Zz [NSEW] deg:min:sec
openair.c:208: // MANUAL OPENAIR unterstützt Format Xxx:Yy:Zz [NSEW] deg:min:sec
openair.c:221: // MANUAL OPENAIR unterstützt Format Xxx:Yy:Zz [NSEW] deg°min'sec"
openair.c:234: // MANUAL OPENAIR unterstützt Format Xxx:Yy.Zz [NSEW] deg:min.min/100
openair.c:235: // MANUAL OPENAIR unterstützt Format Xxx:Yy.Zzz [NSEW] deg:min.min/1000
openair.c:236: // MANUAL OPENAIR unterstützt Format Xxx:Yy.Zzzz [NSEW] deg:min.min/10000
openair.c:269: // MANUAL OPENAIR unterstützt Format Xxx:Yy.Zz [NSEW] deg:min.min/100
openair.c:270: // MANUAL OPENAIR unterstützt Format Xxx:Yy.Zzz [NSEW] deg:min.min/1000
openair.c:271: // MANUAL OPENAIR unterstützt Format Xxx:Yy.Zzzz [NSEW] deg:min.min/10000
openair.c:304: // MANUAL OPENAIR unterstützt Format Xxx°Yy.Zz [NSEW] deg:min.min/100
openair.c:305: // MANUAL OPENAIR unterstützt Format Xxx°Yy.Zzz [NSEW] deg:min.min/1000
openair.c:306: // MANUAL OPENAIR unterstützt Format Xxx°Yy.Zzzz [NSEW] deg:min.min/10000
openair.c:336: // MANUAL OPENAIR unterstützt Format Xxx.Yyyyy [NSEW] deg:deg/10000
openair.c:352: // MANUAL OPENAIR unterstützt Format Xxx.Yyyyy [NSEW] deg:deg/10000
openair.c:980: // MANUAL openair_read_file liest .air files
popup.c:61:// MANUAL Button "to ICAO" liest aktuell berechnete Route in ICAO Programm ein
popup.c:68:// MANUAL Button "to GPS" sendet aktuell berechnete Route an GPS
router.c:428: // MANUAL die berechnete route wird in .icao/route.gpx geschrieben
router.c:431: // MANUAL die berechnete route wird auch in .icao/route.iw geschrieben
router.c:637:/* MANUAL shift-mittlere-maustaste: make text box describing the current route, numlines = 0 if none */
search.c:17:// MANUAL ctrl-F startet Suchmaske
soaring.c:115: int windspeed = 20; /* MANUAL calc_all_dreiecktimes_at20kmh rechnet für 20km/h */
soaring.c:303: if (currentroute[FROM] && totaldistance) /* MANUAL don't try if no start point specified */
soaring.c:312: /* MANUAL FAI triangle: each side must be at least 28% of the total distance,
soaring.c:313: MANUAL no side may be longer then 45% of the total distance: */
soaring.c:320: if (maxdist > 500/1.852) /* MANUAL Fai Triangles: 500+ km: shortest side only needs to be 25 % */
soaring.c:336: /* MANUAL: check possible FAI triangles */
soaring.c:362: if (temptime1<150) { // MANUAL Soaring Triangles: maximal 150 Minuten
soaring.c:368: if (temptime2<150) { // MANUAL Soaring Triangles: maximal 150 Minuten
soaring.c:378: /* MANUAL evaluate ease of route, sort accordingly */
soaring.c:380: /* MANUAL (still to be done...) aber Flugzeit beruecksichtigt Wind.
soaring.c:381: MANUAL WICHTIG: Wind und speed muessen auch gesetzt sein*/
"Flying Penguin" Homepage