OpenLR™ - Software projectsThe OpenLR™ reference implementation is split into several software packages. The packages are implemented using Java version 6 which can be found at (http://java.sun.com).
Remarks on software versions
The current OpenLR™ software version is: 1.4.2
The version of the corresponding OpenLR ™ whitepaper is: 1.5
Older software and document versions may not be further supported and maintained. See also the notes on software changes below.
All software versions use the format "x.y.z" whereby "x" stands for the OpenLR™ method version, "y" indicates major software changes and "z" indicates minor software changes. The whitepaper document version uses the format "a.b" whereby "a" stands for the OpenLR™ method version and "b" indicates any additions or corrections of the document.
|Map||The map package consists of the map interface and map tools being used by the OpenLR™ encoder and decoder. The user of this package needs to implement the required methods and needs to translate the internal data structure to the OpenLR™ map interface.|
|Data||The data package consists of abstract classes and interfaces for OpenLR™ data handling and services. The package comprises interfaces for OpenLR™ location references and also for encoding and decoding services converting the internal data into a defined physical format and the other way round.|
|Encoder||The encoder package holds the reference implementation for the OpenLR™ encoder. It takes a (map-dependent) location as input and generates a corresponding (map-agnostic) location reference. This package uses the OpenLR™ map package and the OpenLR™ data package.|
|Decoder||The decoder package holds the reference implementation for the OpenLR™ decoder. It takes a (map-agnostic) location reference as input and finds back a corresponding (map-dependent) location reference. This package uses the OpenLR™ map package and the OpenLR™ data package.|
|Binary||The binary package consists of classes for reading and writing binary location reference data. This package implements the OpenLR™ data interfaces and provides physical encoder and physical decoder services.|
|XML||The xml package consists of classes for reading and writing xml location reference data as a service. The OpenLR™ encoder may use this package to create a xml representation of a location reference. The OpenLR™ decoder may use this package to receive and decode xml location reference data. This package implements a schema as described in the OpenLR™ white paper.|
|Datex2||The datex2 package consists of classes for reading and writing Datex II xml location reference data as a service. The OpenLR™ encoder may use this package to create a Datex II xml representation of a location reference. The OpenLR™ decoder may use this package to receive and decode Datex II xml location reference data. This package implements a schema as described on the Datex II website (http://www.datex2.eu/content/openlr-extension-11).|
|Tools||The tooling section provides software applications which can be used in combination with the OpenLR™ reference implementation. These tools are not part of the reference implementation and are not required to use the OpenLR™ method.|
Further packages documentation
OpenLR™ uses the software project management tool Maven (see http://maven.apache.org/). One advantage of Maven is the automatic generation of project information during the build and packaging process. These generated pages for the project overview are accessible under www.openlr.org/maven/index.html (link opens in a new window).
Notes on software changes
- 1.4.1 -> 1.4.2
- Bug fix (decoder): incorrect calculation of positive offset for locations where the second location reference point was matched directly onto a line
- Bug fix (encoder): locations which included a very long line (longer than 15km) followed by several other short lines were not covered by the location reference path
- 1.4.0 -> 1.4.1
- Bug fix: the decoder crashed with an exception if all location reference points refer to the same line
- Bug fix: the encoder generated an incorrect location reference if the location is longer than 15km and the negative offset is greater than the distance between the last two location reference points (bearing was not adjusted)
- Improvement: the binary decoder now closes the streams correctly
- 1.3.0 -> 1.4.0
- Bug fixes
- Interface Node now provides a method that delivers the geo coordinate in form of a GeoCoordinates object.
- Simplified return types in interfaces Line, Node and MapDatabase by removing wildcard definitions.
- Interface Line now provides methods that deliver GeoCoordinates instead of Point2D instances. The former methods getShape and getPointAlongLine still exist for backwards compatibility but marked "deprecated".
- Class GeoCoordinate changed to an interface now. The former concrete class is now represented by GeoCoordinateImpl. GeoCoordinateImpl provides a factory method now that delivers an instance without force of handling a checked exception.
- Changed name of OpenLREncoderRuntimeException to OpenLREncoderProcessingException to avoid confusion about the fact that it's not of type java.lang.RuntimeException
- Support for calculation of bounding boxes for all types of location references instead of only LRP-based by the LocRefBoundary utility.
- 1.2.2 -> 1.3.0
- Refactoring of the packages
- Bug fixes
- Adding area location support
- Integration of command line tools into single command line toolkit (OTK). The former tools Binary Data Viewer, Physical Format Converter and CLI are now part of the functionality of the OTK.
- 1.2.1 -> 1.2.2
- Refactoring of the packages, e.g. generation of Location objects has moved to the data package
- Minor bug fixes
- Update of all tools including new features
- 1.2.0 -> 1.2.1
- New physical format: datex2. This format supports the Datex II protocol (see http://www.datex2.eu).
- New tool: Physical Format Converter. Can convert one physical format into another.
- Update of the Map Viewer tool. The new version supports point locations. Additionally it is now possible to take screenshots, to store locations in a map-dependent format, to decode location references in one of the supported physical formats.
- Refactoring of the code and update of the documentation.
- 1.1.0 -> 1.2.0
- OpenLR™ supports point locations
- New binary format version 3 supporting better offsets
- 1.0.0 -> 1.1.0
- New physical format for OpenLR™ location references: XML
- New package for OpenLR™ data abstraction: data
- Encoder and decoder package do not depend on binary package anymore, both packages look for physical format encoder/decoder during runtime
- Encoder and decoder will throw an OpenLRRuntimeException if encoding/decoding is not possible due to configuration or implementation errors, all other exceptions are caught internally and represent an invalid location or location reference respectively
- Map interface has some new optional methods for drawing a map
- Binary and xml package implement the PhysicalEncoder and PhysicalDecoder interfaces provide this as a service to the encoder and decoder package