Latitude and Longitude attributes

All map elements require at least one <point> element which defines a geographical position on the map. In general a geographical point is defined as a latitude/longitude pair. If cartesian X/Y attribute values are used, the point is calculated using the <origin> given in the FIR configuration file (config.fir).

When a map is loaded all points defined as a latitude/longitude pair are transformed to cartesian X/Y values relative to the system origin point and stored as such internally. So using cartesian X/Y might slightly improve startup speed but keep in mind that in that case the system origin point cannot be changed.

Tip: Use predefined points in the points.xml file for specific navigation points. This will make your map definition more readable and especially easier to maintain.

The format of the latitude/longitude values is Zdddmmsssss where:

  • Z = N or S for latitude, E or W for longitude
  • ddd = degrees (3 digits, zero padded)
  • mm = minutes (max 59)
  • sssss = seconds with maximum 3 decimal places (max 59.999)

The predefined <point> elements are defined in the points.xml file. Use the ref attribute to use a predefined <point> element.

latitude/longitude example:

  • lat=“N0543000000” → N054:30:00.000
  • lon=“W0033535000” → W003:35:35.000

The trailing zeroes are not required, the following is also valid: W003:35:35.000 → lon=“W0033535”

Example

<point lat="N0504413" lon="E0043108"/>
<point lat="N0504421" lon="E0042601"/>
<point lat="N0504528" lon="E0042119"/>

Sectorfile latitude/longitude overflow bug

Keep a sharp lookout for a major bug in latitude and longitude coordinates which originate from IvAc v1 sectorfiles created with the old sector file creator website. Apparently IVAC v1 did not care about this error and just used the data regardless of the overflow value.

You often see coordinates like:

W0023260000 -> 002:32:60.000

Notice the overflow value in the seconds part: 60 seconds ?!

60 seconds = 1 minute …. The maximum seconds value should be 59.999 seconds - so we have an overflow issue:

002:32:60.000 should be corrected to 002:33:00.000

You will also find coordinates like E0082339001 ending in '1'. These are also calculation errors and can be safely set to '0'

E0082339001 → E0082339000

How to find any occurences of the bug?

Check the log file for errors in *log/ivac.log* for an overflow error similar to:

ERROR Java2D Queue Flusher … out of range:E0023260000

Simply use your text editor to search for the listed coordinate.


Back