Developing an open source aixm5 java library aixm j
Download
1 / 20

Developing an Open Source AIXM5 Java Library AIXM-J - PowerPoint PPT Presentation


  • 760 Views
  • Uploaded on

Developing an Open Source AIXM5 Java Library (AIXM-J). Steven Chase Lead Software Engineer MITRE/CAASD March 19, 2008. Overview. Background Tools Data sources Open source project Goals Technology Challenges Status Using the library Demo. MITRE/CAASD Background.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Developing an Open Source AIXM5 Java Library AIXM-J' - lorin


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Developing an open source aixm5 java library aixm j l.jpg

Developing an Open Source AIXM5 Java Library(AIXM-J)

Steven Chase

Lead Software Engineer

MITRE/CAASD

March 19, 2008


Overview l.jpg
Overview

  • Background

    • Tools

    • Data sources

  • Open source project

    • Goals

    • Technology

    • Challenges

    • Status

    • Using the library

  • Demo


Mitre caasd background l.jpg
MITRE/CAASD Background

  • The MITRE Corporation

    • Private, independent, not-for-profit organization

    • Chartered to work in the public interest

  • CAASD

    • Federally Funded Research & Development Center (FFRDC) operated by MITRE

    • Provides systems research and development for the Federal Aviation Administration (FAA) and international civil aviation authorities


Caasd developed tools l.jpg

Procedure design, flyability, simulation, visualization

ILS approach/airport safety analysis, CRM

CAASD Developed Tools

Safety Assessment Toolset

TARGETS


Data sources l.jpg
Data Sources

  • National Flight Data Center (NFDC/NASR)

  • AVN Information Services (AVNIS)

  • Jeppesen

  • National Aeronautical Charting Office (NACO)

  • Digital Aeronautical Flight Information File (DAFIF)

  • Digital Obstacle File (DOF)

  • Elevation Data (DEM, DTED, etc)


Goals l.jpg
Goals

  • Develop AIXM5 Java library that is:

    • Independent

    • Easy to use

    • Well documented

    • Extensible

    • AIXM5 compliant

  • Enable applications to read/write AIXM5 data

  • Handle large data sets


Technology l.jpg
Technology

  • Sun JDK (5 or greater)

    • Enum, generics, enhanced for loop, etc.

  • Dom4j

    • Library for using XML, XPath (jaxen) and XSLT

    • Full support for DOM, SAX and JAXP

    • Easy, fast, open source

  • Why not use JAXB or XMLBeans?

    • In early versions, not all AIXM5 schema elements and attributes were supported

    • Auto-generated code may be hard to work with

    • Other attempts have been made


Challenges l.jpg
Challenges

  • Understanding the model

  • Model is still changing

  • Sample XML is limited

  • Implementing GML


Status l.jpg
Status

  • Features

    • AirportHeliport

    • Runway

    • Navaid

    • Designated Point

    • Vertical Structure

    • STAR/SID

    • Basic Message

    • GML Point and ValidTime

<aixm:VerticalStructure xmlns:aixm="http://www.aixm.aero/schema/5.0" gml:id="19608436">

<aixm:timeSlice>

<aixm:VerticalStructureTimeSlice gml:id="26795951">

<aixm:name>TEST OBSTACLE</aixm:name>

<aixm:type>POLE</aixm:type>

<aixm:constructionStatus>COMPLETED</aixm:constructionStatus>

<aixm:material>STEEL</aixm:material>

<aixm:markingPattern>STEEL</aixm:markingPattern>

<aixm:markingFirstColour>RED</aixm:markingFirstColour>

<aixm:markingSecondColour>BLACK</aixm:markingSecondColour>

<aixm:markingICAOStandard>YES</aixm:markingICAOStandard>

<aixm:group>NO</aixm:group>

<aixm:isMadeOf>

<aixm:VerticalStructurePart gml:id="25276323">

<aixm:verticalExtent uom="FT">500.0</aixm:verticalExtent>

<aixm:verticalExtentAccuracy uom="FT">10.0</aixm:verticalExtentAccuracy>

<aixm:hasPointShape>

<aixm:ElevatedPoint gml:id="20051738">

<gml:pos>70.0 -122.0</gml:pos>

<aixm:elevation uom="FT">1500.0</aixm:elevation>

<aixm:geoidUndulation uom="M">212.0</aixm:geoidUndulation>

<aixm:verticalDatum>EGM96</aixm:verticalDatum>

<aixm:horizontalAccuracy uom="M">15.0</aixm:horizontalAccuracy>

<aixm:verticalAccuracy uom="M">10.0</aixm:verticalAccuracy>

</aixm:ElevatedPoint>

</aixm:hasPointShape>

</aixm:VerticalStructurePart>

</aixm:isMadeOf>

</aixm:VerticalStructureTimeSlice>

</aixm:timeSlice>

</aixm:VerticalStructure>

Sample XML – Vertical Structure


Status ctd l.jpg
Status (ctd)

  • Includes sample programs that read/write AIXM5

    • XML has not been validated

  • Uses GNU General Public License (GPL)

  • Hosted on Sourceforge

    • http://sourceforge.net/projects/aixm-j


Using the library l.jpg
Using the Library

  • Add aixm-j, dom4j, jaxen jar files to classpath

AIXM-J Library

Objects

AIXM5 XML

Your

Application

Aviation

Objects

Convert to

AIXM-J Objects

dom4j

Generating AIXM5 XML


Slide12 l.jpg
Demo

© 2008 The MITRE Corporation. All rights reserved.

12

Document Number Here


Sample code notes l.jpg
Sample Code/Notes

© 2008 The MITRE Corporation. All rights reserved.

14


Sample conversion method l.jpg
Sample Conversion Method

// Takes an Airport object and returns an AixmFeature object

public static AixmFeature createAixmAirport(Airport airport) {

// create an AixmFeature object

AixmFeature ah = new AixmFeature(AixmFeatureType.AirportHeliport);

// create an AixmAirportHeliportTimeSlice

AixmAirportHeliportTimeSlice timeSlice = new AixmAirportHeliportTimeSlice();

// set gmlId

timeSlice.setGmlId(String.valueOf(airport.getUniqueKey()));

// set designator

timeSlice.setDesignator(airport.getAirportId());

// set elevation

AixmVerticalDistanceValue fieldElevation =

new AixmVerticalDistanceValue(airport.getElevation(),

AixmUomDistanceVerticalType.FT);

timeSlice.setFieldElevation(fieldElevation);

// set rest of fields here…

// add the timeSlice to AirportHeliport

ah.addTimeSlice(timeSlice);

// return the AixmFeature object

return ah;

}


Generating aixm5 xml l.jpg
Generating AIXM5 XML

// Convert airport to AixmFeature object

AixmFeature aixmAirport = AixmAirportUtil.createAixmAirport(airport);

// Create dom4j Document

Document document = DocumentHelper.createDocument();

// Create the root Element

QName qname = QName.get(“AirportHeliport”, AixmConstants.AIXM_NAMESPACE);

Element rootElement = DocumentHelper.createElement(qname);

// Set the root Element, XPath won’t work until you do this

document.setRootElement(element);

// Call AIXM-J method to add dom4j Elements to represent the airport

aixmAirport.addElements(rootElement, document);

// Pretty print the document

OutputFormat formatter = OutputFormat.createPrettyPrint();

try {

XMLWriter writer = new XMLWriter(System.out, formatter);

writer.write(document);

writer.flush();

}

catch (Exception ex) {

ex.printStackTrace();

}


Generated xml l.jpg
Generated XML

<?xml version="1.0" encoding="UTF-8"?>

<aixm:AirportHeliport xmlns:aixm="http://www.aixm.aero/schema/5.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" gml:id="org.mitre.caasd.aixm.feature.airportheliport.airportheliport.AixmAirportHeliport6468511">

<aixm:timeSlice>

<aixm:AirportHeliportTimeSlice gml:id="1576249658">

<aixm:designator>KIAD</aixm:designator>

<aixm:name>WASHINGTON DULLES INTL</aixm:name>

<aixm:locationIndicatorICAO>K6KIAD</aixm:locationIndicatorICAO>

<aixm:type>AD</aixm:type>

<aixm:private>NO</aixm:private>

<aixm:elevation uom="FT">313.0</aixm:elevation>

<aixm:serves>

<aixm:City gml:id="org.mitre.caasd.aixm.data.AixmCity15925147">

<aixm:name>WASHINGTON</aixm:name>

</aixm:City>

</aixm:serves>

<aixm:magneticVariation>-10.0</aixm:magneticVariation>

<aixm:dateMagneticVariation>2000</aixm:dateMagneticVariation>

<aixm:hasReferencePoint>

<aixm:ElevatedPoint xmlns:aixm="http://www.aixm.aero" gml:id="23811352">

<gml:pos>38.94453194444444 -77.45580972222223</gml:pos>

<aixm:elevation uom="FT">313.0</aixm:elevation>

</aixm:ElevatedPoint>

</aixm:hasReferencePoint>


Parsing an aixm5 ils file l.jpg
Parsing an AIXM5 ILS File

// Open the file, create a BufferedReader and SAXReader

FileInputStream is = new FileInputStream(new File("ILS.aixm.xml"));

BufferedReader br = new BufferedReader(new InputStreamReader(is));

SAXReader saxReader = new SAXReader();

// Add handler for each Navaid tag

saxReader.addHandler("/ils-subscriber-file/Navaid", new ElementHandler() {

public void onEnd(ElementPath path) {

Element navaidElement = path.getCurrent();

// Convert the dom4j Element to an AixmFeature object

AixmFeature navaid = new

AixmFeature(AixmFeatureType.Navaid).parseElements(navaidElement);

// Do something with the data here, in this example we just print the object

System.out.println("navaid : " + navaid);

// Free up memory

navaidElement.detach();

}

public void onStart(ElementPath path) {/* do nothing */}

} );

// Read the XML file

saxReader.read(br);


Notes l.jpg
Notes

  • AIXM – Aeronautical Information Exchange Model (AIXM) is designed to enable the management and distribution of Aeronautical Information Services (AIS) data in digital format

  • XMLBeans – XMLBeans is a technology for accessing XML by binding it to Java types

  • JDK – Java Development Kit, includes Java compiler, runtime environment, etc.

  • JAXB – The Java Architecture for XML Binding

  • SAX – Simple API for XML (SAX) is a serial access parser API for XML; event driven; user defines callback methods that are called during parsing

  • DOM – Document Object Model (DOM) is a standard object model for representing XML formats; tree based model

  • JAXP – Java API for XML Processing

  • XPath – Xml Path (XPath) is a language for selecting nodes from an XML document

  • Jaxen – Java XPath Engine (Jaxen) is an open source XPath library for Java

  • Dom4j – dom4j is an easy to use, open source library for working with XML, XPath and XSLT

  • XSLT – Extensible Stylesheet Language Transformations (XSLT) is a language for transforming XML documents into other XML documents


Notes ctd l.jpg
Notes (ctd)

  • CAASD – Center for Advanced Aviation System Development, operated by MITRE

  • TARGETS – Terminal Area Route Generation, Evaluation and Traffic Simulation

  • ILS – Instrument Landing System

  • CRM – Collision Risk Model

  • DEM – Digital Elevation Model

  • DTED – Digital Terrain Elevation Data

  • NASR – National Airspace System Resources


ad