
V1.1
Utility for the Creation and Manipulation of Sector Files for the Online Air-Traffic Control Community.
Table of Contents
Reading Non-Gndmaker Generated Files
Change Log:
|
Date: |
Version: |
Changes |
|
01 Mar 2003 |
V1.0 |
Initial Release |
|
20-May-2003 |
V1.0.1 |
Corrected the descriptions of Nm/Lat and NM/Lon in Manual Scaling Mode section. |
|
06-Apr-2004 |
V1.1 |
Document update for V1.1 |
Gndmaker (ground maker) was originally written as a utility to automate the arduous task of creating sector files for ProController and Advanced Simulated Radar Client (ASRC). In a nutshell, ProController/ASRC is a client-server program that simulates the job of an Air Traffic Controller (ATC). The difference is that you are actually controlling REAL (virtual) pilots flying with Microsoft Flight Simulator connected over the Internet.
All of these mentioned clients use ‘sector files’ that correspond to real-world ATC areas. Depending on where you live, these areas are called FIR’s or ARTCC’s.
When I started writing sector files, I would slew[1] around with Microsoft Flight Simulator 95, watching the co-ordinates change in the cockpit view. I would record the co-ordinates and convert them (with a calculator) to the numerical format that ProController required (man, it would have been nice if they were the same...).
As you could imagine, this would take FOREVER to do a moderately complex airport with all the taxiway co-ordinate fiddling, etc. As I got into it more and more, I thought it would be great if there was an automatic way to record Flight Simulator aircraft co-ordinates into sector file format directly. I looked at how programs like Squawkbox, etc., retrieve state data from FS and this was with the FSUIPC module by Peter Dowson. So I use the same thing.
Since it’s original conception, Gndmaker has expanded to also include the ability to import sector file data from a variety of sources. It started with being able to import BGL scenery files in Microsoft Flight Simulator, but has grown to include real-world sources like DAFIF, NOAA, etc.
For the V1.1 release, several new features and tweaks were made to streamline the code base to prepare for future versions.
This document assumes that the reader has in-depth knowledge of how sector files are structured and what constitutes a ‘well-formed’ file. i.e. one that meets the original ProController specification TO THE LETTER. Gndmaker is very unforgiving to sector files that do not 100% meet the ProController specification.
In addition, it is assumed the user has practical knowledge of real-world navigational procedures and can apply that knowledge to the objects in a sector file.
The following dialog is used to configure Gndmaker parameters:

Settings made in this dialog are made permanent (saved to the registry[2]) when the ‘Save Settings’ box is checked when the user presses ‘OK’. Otherwise the settings will be only for the current session.
If an undesired change is made in the Preferences dialog, click ‘Cancel’ and go back into ‘Tools->Preferences…’
Previous versions of Gndmaker had hard-coded knowledge of only the FSIUPC module for reading aircraft positions from Microsoft Flight Simulator. This is now more flexible to support other co-ordinate source modules in the future. Currently, only FSUIPC is supported, however.
When the preferences dialog appears, all currently installed co-ordinate source DLL’s will appear in this list.
In the various parts of Gndmaker where the user ‘draws’ lines segments from Flight Simulator into a sector file, the ‘Flight Simulator Hotkey’ settings determine which Flight Simulator commands Gndmaker watches for. The Hotkey setting can be invoked in Flight Simulator either with a keyboard command, or by an associated mouse click.
The ‘Record Co-ordinate’ key (when activated in Flight Simulator) is used to send the current aircraft co-ordinate to Gndmaker – either as a single co-ordinate, or as another link in a chain or line segments.
The ‘Segment ‘Pen-Up’ key is used to interrupt a chain of recorded line segments in preparation for starting of a new chain without creating a new ‘object’.
There are several keys you have to choose from (this list may change):
AP-Alt Hold
AP-Hdg Hold
AP-Master
Lights-Beacon
Lights-Instrument
Lights-Landing
Lights-Logo
Lights-Nav
Lights-Recognition
Lights-Strobe
Lights-Taxi
Lights-Wing
Parking Brakes
The three paths settings allow the user to customize the default location for Gndmaker files:
This area allows the user to create and choose a default color palette (aka: color map) for the sector file objects. You can not only manually create and specify custom colors by numeric RGB number, but you can also choose the color visually using the ‘Select Color…’ button.
You are allowed a maximum of 32 colors.
(Note: At the time of this writing, color maps are NOT loaded in with sector files. Gndmaker is configured with a default color map and that map is applied to every sector file.
If a sector file has a different color map defined then that in Gndmaker, the sector file colors ARE IGNORED when the file is read in. Similarly, the currently defined Gndmaker color map will be unconditionally written to the sector file when it is saved to disk.
This behavior will change in a future version).
Click the color in the list box. The color and the value will be displayed. Edit the value directly, or click the ‘Select Color…’ button, choose the color you want, and click ‘OK’.
Click ‘<Add New>’ at the top of the color list box. Enter the name of the color in ‘Name’. Enter the numeric value of the color in ‘Value’, or click the ‘Select Color…’ button, choose the color you want, and click ‘OK’.
Click the color in the list box. Click the ‘Delete Color’ button.
(Subject to change.)
Currently, this area of the dialog contains the ‘Debug File Path’ setting. This is used only for diagnostic purposes. If a directory is entered here, a debug text file is created here that profiles what Gndmaker is doing internally.
This debug file is used is case a bug is found and the author needs internal information in order to fix the problem.
Gndmaker supports manipulation of all the existing sector file object types:
[AIRPORT]
[ARTCC HIGH]
[ARTCC LOW]
[ARTCC]
[FIXES]
[GEO]
[HIGH AIRWAY]
[INFO]
[LOW AIRWAY]
[NDB]
[RUNWAY]
[SID]
[STAR]
[VOR]
And, with the exception of [SID] and [STAR], external sources can populate these types as well.
All objects of a certain types can be viewed by selecting the type from the ‘Object Type’ pull-down in the Gndmaker mail dialog:

The object list can be sorted by ascending or descending order by clicking the column header. In addition, columns can be arranged to change the order of data presented in each row.
If the user right-clicks on a row in the object list, the co-ordinate of the object becomes the sector file center. This only works for single-point object types.
To edit, or see more detail on an object, the user can double-click the object (or select the object and click the ‘Edit’ button.
For editing purposes, objects in Gndmaker are one of three types:
Depending of the object type selected, a specialized dialog box for one of the three types is used. Note that each object type may enable or disable controls on the dialog that make sense to the object being edited:

|
Field |
Description |
Comments |
|
ID |
ICAO identifier |
|
|
Comment |
Text name |
|
|
Frequency |
ATIS frequency |
|
|
Lat/Lon |
Position |
Can be manually entered, or retrieved from Flight Simulator. |
|
Airspace |
Airspace type around airport |
A-E |
|
Button |
Function |
|
OK |
Dismisses the dialog, saving changes |
|
Cancel |
Dismisses the dialog, losing changes |
|
Record |
(if Flight Simulator active) retrieves current aircraft position |

|
Field |
Description |
Comments |
|
ID |
Navaid identifier |
|
|
Comment |
Text name |
|
|
Frequency |
Navaid frequency |
|
|
Lat/Lon |
Position |
Can be manually entered, or retrieved from Flight Simulator. |
|
Airspace |
N/A |
|
|
Button |
Function |
|
OK |
Dismisses the dialog, saving changes |
|
Cancel |
Dismisses the dialog, losing changes |
|
Record |
(if Flight Simulator active) retrieves current aircraft position |

|
Field |
Description |
Comments |
|
ID |
Navaid identifier |
|
|
Comment |
Text name |
Optional |
|
Frequency |
N/A |
|
|
Lat/Lon |
Position |
Can be manually entered, or retrieved from Flight Simulator. |
|
Airspace |
N/A |
|
|
Button |
Function |
|
OK |
Dismisses the dialog, saving changes |
|
Cancel |
Dismisses the dialog, losing changes |
|
Record |
(if Flight Simulator active) retrieves current aircraft position |

|
Field |
Description |
Comments |
|
Comment |
Text name |
Saved as a comment line in the sector file at the start of the segment list |
|
Segment List |
List of line segments |
Can include absolute or symbolic co-ordinates. Symbolic co-ordinates inserted by selecting the object type, the navaid, and clicking the ‘Insert’ button. |
|
Type, Navaid |
N/A |
|
|
Color |
Segment color |
Recorded segments are written to the sector file with the selected color. The contents of the color dropdown comes from the color map defined in the Gndmaker Preferences dialog. |
|
Button |
Function |
|
Auto Close Last Segment |
When enabled, and the dialog is dismissed with ‘OK’, the first and last segment are connected. |
|
Cancel |
Dismisses the dialog, losing changes |
|
Delete |
If one or more segment rows are selected, clicking this button removes them from the segment list. |
|
Insert |
N/A |
|
OK |
Dismisses the dialog, saving changes |
|
Preview |
Not currently implemented |
|
Record |
(if Flight Simulator active) retrieves multiple line segments. The Flight Simulator Hotkeys are used to control line segment collection (see Section 3.1: Flight Simulator Hot Keys) |
|
Sound On |
When enabled, plays a sound whenever a segment from Flight Simulator is added to the segment list. |

|
Field |
Description |
Comments |
|
Comment |
Text name |
Saved as a comment line in the sector file at the start of the segment list |
|
Segment List |
List of line segments |
Can include absolute or symbolic co-ordinates. Symbolic co-ordinates inserted by selecting the object type, the navaid, and clicking the ‘Insert’ button. |
|
Type, Navaid |
|
Used to specify an EXISTING sector file navaid object to insert into the segment list. |
|
Color |
N/A |
|
|
Button |
Function |
|
Auto Close Last Segment |
When enabled, and the dialog is dismissed with ‘OK’, the first and last segment are connected. |
|
Cancel |
Dismisses the dialog, losing changes |
|
Delete |
If one or more segment rows are selected, clicking this button removes them from the segment list. |
|
Insert |
Inserts the currently selected Navaid into the segment list. |
|
OK |
Dismisses the dialog, saving changes |
|
Preview |
Not currently implemented |
|
Record |
(if Flight Simulator active) retrieves multiple line segments. The Flight Simulator Hotkeys are used to control line segment collection (see Section 3.1: Flight Simulator Hot Keys) |
|
Sound On |
When enabled, plays a sound whenever a segment from Flight Simulator is added to the segment list. |

|
Field |
Description |
Comments |
|
Runway Airport |
Associated airport for runway |
A list of the currently defined sector file airports. This airport name is added as a comment to the [RUNWAY] record |
|
Name |
Runway name (east side) |
The numeric name of the runway east side. Position indicators allowed (i.e. L/R/C). |
|
Heading |
Heading for runway east and west runway end. |
Heading (when ILS exists) for both runways ends. Can be ‘0’ if no ILS exists. If east and west headings exist, then MUST be 180 degrees apart. |
|
Runway Center Line |
Runway center line end-point co-ordinate |
Can be manually typed in (not recommended), or retrieved from Flight Simulator |
|
Button |
Function |
|
Cancel |
Dismisses the dialog, losing changes |
|
OK |
Dismisses the dialog, saving changes |
|
Position A/C |
Not currently implemented |
|
Record |
(if Flight Simulator active) retrieves (at most) two co-ordinates. The Flight Simulator Hotkeys are used to control co-ordinate collection (see Section 3.1: Flight Simulator Hot Keys) |
|
Sound On |
When enabled, plays a sound whenever a segment from Flight Simulator is added to the runway center line. |
Object creation is done by selecting the Object Types pull-down on the Gndmaker main screen and using clicking the ‘New’ button. The exact same dialogs are used as described in the previous section (editing).
Objects can be deleted from the object list by selecting the objects and clicking the ‘Delete’ button.
The ability to import data from a variety of virtual and real-world sources is the one of the two major features of Gndmaker. Gndmaker supports several external data sources via add-on modules called Plug-ins.
The benefit to using these external sources is that you have (usually) very accurate data to make your ATC experience as ‘real-world’ as it gets. No longer does the user have to spend hours pouring over navigation charts and reference books.
Data is imported into sector files in two steps. The creation/execution of an Import Profile to load the data into Gndmaker, and the actual selection of the imported objects into the sector file itself.
Gndmaker implements the importing of data through a comprehensive mechanism called ‘Import Profiles’. An Import Profile is a set of criteria that defines one or more ‘Areas of Interest’ to be applied to one or more external data sources.
Originally, Gndmaker had the ability to import from only a single source at a time. The problem with this approach was that there was not a single data source that was able to provide everything that was needed. You may want to get VOR’s, NDB’s, from Source A, get ARTCC data from Source B, etc. Import profiles allow the user to group several data imports into a single procedure.
For example:

|
Button |
Function |
|
New |
Creates a new (blank) sub-search criteria. |
|
Edit |
Allows the user to edit the settings for the selected sub-search criteria. (Double-clicking the item in the sub-search list does the same thing). |
|
Delete |
Deletes the currently selected sub-search criteria. |
|
Set As Default |
When pressed, this button makes the currently selected criteria the ‘default’. When the ‘New’ button is then pressed, the ‘default’ settings (BB Shape, UL/Center, LR/Radius) are used to create the new criteria. |
New to V1.1, some extra options were added for import profiles:
|
Button |
Function |
|
Runway Centerline |
Allows user to select if runway centerlines are selected automatically depending on the presence/absence of an ILS on the runway end. |
|
Draw Bounding Boxes to sector file |
Creates [GEO] objects that correspond to the bounding boxes in the import profile. |
|
Add debugging FIXES to GEO objects |
All [GEO] objects have a FIX drawn somewhere on the GEO line segments allowing for easy cross-reference between what is drawn on the screen and where the segments are in the sector file. |
|
Add debugging FIXES to ARTCC objects |
All [ARTCC *] objects have a FIX drawn somewhere on the line segments allowing for easy cross-reference between what is drawn on the screen and where the segments are in the sector file. |
In the example above, the user has specified two data sources to be grouped together into a single search profile. The first criteria defines a BGL-file import, with a 35nm circle Bounding Box (see next section), and the second criteria with the same Bounding Box from the DAFIF source.
Not all data sources use Bounding Boxes.
Import Profiles are stored as Windows INI files. They are readable, but it is not recommended that the user edit these directly.
To define an Area of Interest on the data being imported from an external source, Gndmaker uses the concept of a ‘Bounding Box’ as criteria for the data import.
Simply put, everything inside a Bounding Box will be imported from the external data sources.
Bounding Boxes are defined in two ways: upper-left/lower-right or center/radius. Upper-left/lower-right Bounding Boxes are specified by either manually entering the upper-left/lower-right co-ordinates, or by slewing an aircraft to a desired position and clicking the ’FS Coord’ button.
Upper-left/lower-right bounding boxes are most useful for larger area sector files.
Similarly, you can use a center/radius Bounding Box by simply clicking the ‘Circle’ shape type. You specify the center of the ‘box’ and the radius to define the bounding area. These types of Bounding Boxes are more useful for TCA-type sector files where you want all the objects within a certain distance of an airport, for example.
Of course, the Bounding Box can be completely disabled, which implies that all data within the External Source will be imported.
The Search Criteria defines the Bounding Box shape and size, the target External Source, and any source-specific parameters required. For some External Sources, a Bounding Box is irrelevant, and the dialog will disable the Bounding Box if that is the case.

|
Button |
Function |
|
Check box |
Allows for the enabling/disabling of the Bounding Box specification. |
|
FS Coord |
When pressed, retrieves the current aircraft co-ordinate (when Flight Simulator is active) into the edit boxes. |
|
Options |
When clicked, invokes the Property Page dialog for the currently selected External Source Type. |
|
Reset Details |
Clears the currently displayed detail information (i.e. parameters) for the current search profile. |
|
Shape |
Toggles the Bounding Box shape between rectangle or circle. |
The process for defining a Search Criteria is usually as follows:
Each External Source will have it’s own configuration procedure. The documentation for External Sources are not part of this document since they are implemented independent of the Gndmaker code.
Once an Import Profile is created, it is ‘executed’ to load the data into Gndmaker. Imports are run via ‘Import->Run Import’ menu item.
After the Import runs, the data is not in the sector file yet, but is loaded into Gndmaker to allow the user to review the data and choose which information to add to the sector file.
The contents of a loaded Import Profile is viewed by selecting the Object Type from the main Gndmaker dialog and clicking the ‘DB Insert’ button:

Depending on the object type selected, a list of import objects will appear:

The user can select the object(s) desired and they will be added to the sector file.
In the case of [GEO] objects, the ‘Import GEO Objects with color’ drop-down list is enabled. The contents of this drop-down comes from the Gndmaker color map defined the Preferences dialog. Objects added will then have the selected color when added to the sector file.
Setting up and running an Import Process can be a very time consuming task. The import process could be digesting hundred’s of thousands of records from a variety of sources. The Load/Save Database feature allows the user to save the RESULTS of a data import for re-loading later. In most cases, loading from a database export is much faster then re-running the import itself.
Gndmaker uses the standard XML format for the import data contents. It is intended that customized XML-based tools to view and manipulate the database will become available in future version of Gndmaker.
Once Import Data has been loaded into Gndmaker, the next step is to add data to the sector file.
The other major strength of Gndmaker is the ability to connect to Flight Simulator (FS2000 or higher supported) to retrieve aircraft position data.
Aircraft position is very useful in that is enables a user to ‘trace’ out very complex sector file [GEO] objects with minimal effort. Usually this is used in ground-level sector files where taxiways are desired.
In the ‘olden days’, when I started writing sector files, I would slew around with Microsoft Flight Simulator 95, watching the co-ordinates change in the cockpit view. I would position the aircraft directly over a taxiway edge, record the co-ordinate, and convert it (with a calculator) to the numerical format that ProController required.
As you could imagine, this would take FOREVER to do a moderately complex airport with all the taxiway co-ordinate fiddling, etc. In addition, the numbers calculated were not very accurate and prone to error.
Gndmaker streamlines this procedure in that, as you slew around an airport, you can send the current aircraft position for Gndmaker to record automatically. Using this approach, you can draw and save sequences of single points, or connected lines as you move around.
Some of the places in Gndmaker where you can use Flight Simulator aircraft position:
I have found the following to be the best way to ‘set up’ your computer to record a lot of data with minimal amounts of task switching, etc. Depending on your machine, task switching can be a very time consuming process – especially if you are low on memory.
Probably one of the least understood aspects of sector files is the NM/Lat, NM/Lon, and Zoom Factor settings in the [INFO] section. A quick review on what these mean:
NM/Lat: the number of Nautical Miles per degree of Latitude. This value never changes no matter where you are in the world. It’s always ‘60’.
NM/Lon: the number of Nautical Miles per degree of Longitude. As you move further and further away from the equator (either north of south), this number decreases. This value can be calculated by a simple trigonometric formula.
Zoom Factor: this number is adjusted to control the ‘field of view’ of the sector file. For obvious reasons, a ground file that covers just a single airport will have a higher zoom factor than a center-level file.
What kinds of things happen when you do not set these properly?
You can get runways that are 200Nm long!
You [GEO] objects are stretched in different directions. What should be circles ends up looking like ovals.
Gndmaker has the ability to not only correct erroneous scaling factors, but will also automatically adjust the scaling factor if you change the sector file center or the NM/Lat value.
Sometimes it is desirable to change the basic scaling of the sector file to make high-resolution files more visually appealing. This is accomplished solely by changing the NM/Lat setting. When this happens, Gndmaker will attempt to correct the corresponding Nm/Lon and Zoom Factor automatically to match it.
The automatic scale adjustment is controlled by the ‘Manual Scale Configuration’ checkbox on the main Gndmaker dialog:
![]()

When this box is un-checked (the default), Gndmaker will perform the scaling calculations every time you:
For those who wish greater control over sector file scaling, check the ‘Manual Scale Configuration’ box and you will have full control of the three scaling parameters. You should really know what you are doing if you wish to override the suggested settings!
The Aircraft State tool allows the user to verify the data retrieved from Flight Simulator and to test the flight Simulator Hotkey configuration.

When loading a non-Gndmaker generated file for the first time, the program makes several assumptions about how comments add information to the records read in. As such, if the comment structure of the file is not known to Gndmaker, this information is thrown away. Unfortunately, with the infinite number of ways comments can be applied, I have no choice but to do this.
In addition, Gndmaker assumes a 100% compliance with the original Procontroller sector file specification. As such, if some of the popular ‘shortcuts’ are found in sector files, they will be rejected.
If a record does not make sense when it is loaded, it is written to a ‘*.err’ file. It is left to the user to review this file, make the necessary corrections, and manually add the records back to the original file.
When a Gndmaker saves a file to disk it will insert comments (meta-data) to help describe the data being written.
The following can also be used as a reference to help prepare a non-Gndmaker generated sector file so it can be read in and recognized more easily.
[AIRPORT] adds ‘;- <airport name>’ to end of record.
e.g.: CYYC 127.200 N051.06.50.000 W114.01.13.000 A ;- Calgary Intl.
[RUNWAY] adds ‘;- < airport name> <runway name>’ to end of record
e.g.: 16 34 161 341 N051.07.56.039 W114.01.13.125 N051.05.39.175 W114.01.14.253 ;- Calgary Intl. 16/34
[VOR],[NDB], [FIXES] adds ‘;-<name>’ to end of record
e.g.: 1T 110.750 N053.18.27.517 W110.04.10.550 ;- LLOYDMINISTER/DME
[GEO],[* Airway], [SID], [STAR], [ARTCC *] adds ‘;- <name>’ at start of a group of records. ‘name’ is used in Gndmaker to describe a segment set.
e.g.:
;- CYYC TCA 35Nm
Ring
N049.00.00.000 W118.07.50.000 N049.00.00.000 W102.00.00.000 BLUE
N049.00.00.000 W110.00.00.000 N060.00.00.000 W110.00.00.000 BLUE
N049.00.00.000 W102.00.00.000 N060.00.00.000 W102.00.00.000 BLUE
N060.00.00.000 W102.00.00.000 N060.00.00.000 W125.00.00.000 BLUE
…
To be filled in as needed.
Like anything else, I will be happy to help with any questions you may have with Gndmaker, time permitting. I HIGHLY suggest, that you first look at the Gndmaker Forums to see if someone else posted a similar message. If you do not find an answer, post the question there.
And as a last resort, send me an e-mail. I cannot guarantee a quick response, but I will try. Also, note that if you register your copy of Gndmaker, you are much more likely to get a fast response (see Section 13L Contribute to Gndmaker).
Like they say, crap happens. If it happens to you, please give me as much information as you can:
As you may have guessed, I do not charge any money for Gndmaker even though I have spent literally THOUSANDS of hours developing it. I consider this a small contribution of my own to the online hobby we all love so much.
But, in reality, Gndmaker is 'POSTWARE' or 'CHARTWARE':
In order to keep me enthusiastic about continuing support for Gndmaker and to provide new, exciting features, I would ask one small favor. If you find Gndmaker useful, PLEASE send me a postcard, or even better, a real-life (paper) navigation chart from your area. Refer to the ‘Contribute!’ link on the Gndmaker website:
http://wirun.homelinux.net/gndmaker
Of course, any monetary, or otherwise, gifts or trinkets will cheerfully be accepted as well. This being a worldwide community, I'm sure people could send me all sorts of cool, inexpensive, stuff from their part of the world ;)
This way I get an indication that my efforts are appreciated and will ensure that Gndmaker has a future.
Those that do 'register' with me will get advance notice of new releases, priority technical support, and a much higher likelihood that I will help out creating sector files for you (if asked)!
Corey MJ Wirun