OFM Editor Modifications for OFMX 1.0.0

Created by: svoop

See related issue #6 (moved) as well.


General

Document Upload

  • 🇫🇷 Add support to upload AIP documents as HTML.
  • 🇫🇷 Currently, each uploaded AIP document gets a autoincrement revision number (e.g. 3) assigned which is used to reference the specific document.
     To decouple this, the revision number will be replaced with the AIRAC cycle date: When uploading an AIP document, you select which AIRAC cycle date the document belongs to. A selection between the current cycle date and the upcoming cycle date (default) should be sufficient (see anim GIF below), the selectable cycle dates can be calculated from the current date. Uploading the same document to the same cycle date will overwrite the document on the server.
     The AIRAC cycle date will then be used to reference documents in @source attributes of features in OFMX.

68747470733a2f2f757365722d696d616765732e67697468756275736572636f6e74656e742e636f6d2f373235352f33383734373532342d37303235666235342d336634622d313165382d396131652d6439313536333865333730302e676966

All Features

  • 🇫🇷 All *Uids must be globally unique.
  • 🇫🇷 Tags (components/properties) have to occur in the specified order for the OFMX document to be valid.
  • 🇫🇷 Implement @region and @source attributes
  • 🇫🇷 Remove @newEntity attributes

AIXM-Shnapshot

  • 🇫🇷 The root element has to be renamed from AIXM-Snapshot to OFMX-Snapshot.
  • 🇫🇷 Add support for @namespace
  • 🇫🇷 The arguments on the root element have to be as specified here.

TIMSH

  • 🇫🇷 Times must be coded as 20:15 instead of 2015.
  • 🇫🇷 xt_AlignSummerSavingT is obsolete. This information has to be coded into codeTimeRef on the same level.

Label Marker

Lbm

  • Move and rename attribute LbmUid@fir to LbmUid@region.
  • Rename Lbz to ZoomLevel.
  • Rename zoomLevel to valZoomLevel.
  • Remove codeDatum underneath ZoomLevel. The zoom level positions inherit the datum from the main Lbm->codeDatum property.

Airport

Ahp

  • 🇫🇷 xt_TypeOfTraffic, xt_TypeOfUsage and xt_TypeOfAircraft have to be coded with Ahu.
  • 🇫🇷 xt_TypesOfFuel has to be coded with Ful.
  • xt_lighting has to be coded with Rls.
  • xt_GpsIdent has to be renamed to codeGps.
  • 🇫🇷 xt_addFreq has to be coded with Aha->codeType=RADIO.
  • xt_txtUrl has to be coded with Ahs->codeType=INFO and Aga->codeType=URL.
  • xt_txtPhone has to be coded with Ahs->codeType=INFO and Aga->codeType=PHONE.
  • xt_txtMetPhone has to be coded with Ahs->codeType=INFO and Aga->codeType=PHONE-MET.
  • Some airports or clubs on airfields have a weather briefing webpage, you might want to add Ahs->codeType=INFO and Aga->codeType=URL-MET for those.
  • xt_urlWebcam has to be coded with Ahs->codeType=INFO and Aga->codeType=URL-CAM.
  • xt_email has to be coded with Ahs->codeType=INFO and Aga->codeType=EMAIL.
  • xt_CustomsAvail has to be coded with Ahs->codeType=CUST.
  • xt_TypeOfTraffic->Ppr has to be coded with Ahu->codeUsageLimitation=RESERV. The contact details xt_TypeOfTraffic->xt_PPR_txtContact, xt_TypeOfTraffic->xt_PPR_txtEmail and xt_TypeOfTraffic->xt_PPR_txtPhone should go to Ahu->UsageLimitation->txtRmk (see example)
  • xt_contactPractice should be coded with Ahs->codeType=INFO and Aga->noSeq=1 (see example)

Rwy

  • 🇫🇷 xt_status has to be coded with codeSts. The value CLSD remains, however, IN OPS does not exists, omit the entire tag to indicate normal operations.
  • 🇫🇷 Add Rwy->codePreparation
  • Add Rwy->codeCondSfc

Rdn

  • 🇫🇷 Use Rdd to code declared distances:
    xt_valDispTres and xt_uomDispTres -> codeType=DPLM
    xt_TORA and xt_uomDeclDistLimit -> codeType=TORA
    xt_LDA and xt_uomDeclDistLimit -> codeType=LDA

Airspace

Ase

  • 🇫🇷 Add Ase->codeActivity primarily to add recreational use into maps (acrobatics, gliding, winching, parachuting and such)
  • 🇫🇷 Currently, the editor "remarks" are always stored as Ase->txtRmk of the main Ase. However, if class layers are present, the main Ase should only contain identifying properties and everything else should go into the slave Ase#CLASS elements in order to allow differing remarks per class layer (see example). (won't do, see comments below)
  • 🇫🇷 Rename the attribute Ase@xt_classLayersAvail to Ase@classLayers and assign it the number of class layers (1 or more) instead of a boolean.
    Note: Ase@classLayers is only used when OFMX is imported by the OFM editor to speed up parsing.
    (obsolete)
  • 🇫🇷 Rename the element xt_selAvail to codeSelAvbl and allow only the values Y (yes/true) or N (no/false).
    Note: codeSelAvbl or selective availability declares that an airspace may be activated by third parties e.g. the military.
  • Move Ase->txtLocalType up into AseUid (instead of following it)

Avx

  • 🇫🇷 GbrUid must be the first children of Avx for frontiers (border transitions). Any other position within Avx renders the document invalid.

Adg

  • 🇫🇷 Wrap each AdgUid in it's own Adg. In other words: Only one AdgUid is allowed per Adg.
  • 🇫🇷 Include complete Adg->AseUidSameExtent which contains the codeType and codeId of the referenced Ase.

Navigational Aid

All Navigational Aids

  • 🇫🇷 Remove all properties not present in the documentation (or sync with example).
  • The exported AIXM contains illegal properties when you e.g. select "VOR", fill in the form, switch to "ICAO", export data. Easiest solution: Empty all input fields when switching the navigational aid type.

Dpn (named "ICAO" in the editor)

  • 🇫🇷 Remove the duplicate codeId which is not nested within DpnUid.
  • Remove editor input fields for "magnetic variation", "year of magnetic variation" and "magnetic variation annual change". (Designated points are not subject to magnetic variation.)

Dme

  • Remove editor input fields for "magnetic variation", "year of magnetic variation" and "magnetic variation annual change" and "VARIATION" subtitle. (Distance measuring is not subject to magnetic variation.)

Mkr

  • 🇫🇷 codeId may only contain any combination of . (dots) and - (dashes).
  • codePsnIls dropdown is missing value C (backcourse).
  • Remove the editor input fields Frequency and Unit, but always include the static properties <valFreq>75</valFreq> and <uomFreq>MHZ</uomFreq>. (All markers operate on this frequency.)

Ndb

  • Remove editor input fields for "magnetic variation", "year of magnetic variation" and "magnetic variation annual change" and "VARIATION" subtitle. (Non-directional beacon and magnetic variation are nonsensical.)

Tcn

  • Remove the editor input fields Frequency and Unit. (TACAN work only with channels.)
  • 🇫🇷 Add valDeclination and editor input field "magnetic declination".

Vor

  • Remove valMagVarChg (under investigation)
  • 🇫🇷 Verify VOR/DME is a VOR followed by a DME which associates the VOR.
  • 🇫🇷 Verify VORTAC is a VOR followed by a TACAN which associates the VOR. (The generated markup is wrong right now, since it's a TACAN followed by a DME which associates the TACAN.)

Organisation

Uni

  • Move codeType inside UniUid

Fqy

  • 🇫🇷 Use valFreqTrans instead of valFreqRec as transmitting frequency

Obstacle

Ogr

  • txtName: UPCASE value
  • Add geoLat and geoLong
  • Move txtName out of OgrUid as shown by example.
  • Add codeDatum with fix value WGE right before valGeoAccuracy.
  • Rename lateralPrecision to valGeoAccuracy and add uomGeoAccuracy right after.
  • Rename verticalPrecision to valElevAccuracy and add uomElevAccuracy right after.
  • Remove origin and use Ogr@source attribute instead.

Obs

  • Rename txtDescrType to codeType.
  • Add codeDatum with fix value WGE right before valElev.
  • Rename DefaultHeight to codeHgtAccuracy.
  • ObsUidLink: use full ObsUid payload as shown by example.
  • codeLinkType: UPCASE value
  • Add @region attribute
  • Remove codeGroup (an obstacle is member of a group if it contains an OgrUid association)
  • Move OgrUid out of ObsUid as shown by example.
  • Make OgrUid optional:
    Obstacles with no OgrUid are individual, it is no longer necessary to have a "pro forma" obstacle group. In other words: An obstacle group should have more than one obstacle! However, there are exceptions to this rule of thumb: In order to visualize obstacle groups for which only the number of group members is know but not the exact positions of each member, it is possible to assign only one obstacle to a group and mention the number of obstacles in txtRmk.
  • Add uomElevAccuracy:
    An Ogr obstacle group defines horizontal accuracy (valGeoAccuracy/uomGeoAccuracy) and vertical accuracy (valElevAccuracy/uomElevAccuracy) for all group members. The same tags now exist on Obs obstacle as well to define accuracies for individual obstacles or – if ever necessary – override the group accuracies. Three of the for tags exist in AIXM already, only uomElevAccuracy is added by OFMX.
Edited by Sven Schwyn
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information