Version 2 (modified by NormOlsen, 13 years ago) ( diff )


MapGuide RFC 98 - E{SG/SRID Code Upgrade

This page contains an change request (RFC) for the MapGuide Open Source project. More MapGuide RFCs can be found on the RFCs page.


RFC Template Version(1.0)
Submission Date21 June 2010
Last ModifiedNorm Olsen 21 June 2010
AuthorNorm Olsen
RFC Statusdraft
Implementation Statuspending
Proposed Milestone2.2
Assigned PSC guide(s)(when determined)
Voting History(vote date)
no vote


CS-MAP Rfc 2 proposes to add three items to the coordinate system dictionary, and one item each to the Datums and Ellipsoid dictionaries. (The format doesn't change, we'll be using currently unused holes in the structures.) This RFC proposes to expose these new data values throught eh MgCoordinateSystem interface. The items being added are EPSG code, Oracle SRID code, and the EPSG Quadrant code.


The EPSG code and the Oracle SRID code are becomming frequently desired/referenced data items. Conversion between CS-MAP key name and EPSG code is currently possible, but requires the use of the NameMapper which can be rather slow if one intends to map large segments of the EPSG code set. While supported in the NameMapper, mapping between CS-MAP key names and Oracle SRID codes is not expsed through the interface. Implementation of this RFC would, in conjunction with CS-MAP RFC 2, enable direct access to both codes using the MgCoordinateSystem interface.

There exists a problem encountered when using the latest version of WMS specification. This specification now requires strict adherence to the axis specifications in Coordinate Reference System (CRS) definitions. CS-MAP RFC 2 calls for the addition to the coordinate system dictionary an quadrant value (using the same values as the standard CS-MAP quad parameter) which indicates what the EPSG definition indicates the axis specification to be. Implementation of this RFC will expose this value through the MgCoordinateSystem interface.

Proposed Solution

Implementation of this RFC would be achieved by adding three new methods to the MgCoordinateSystem interface, and one new method to each of the MgCoordinateSystemDatum and MgCoordinateSystemEllipsoid interfaces as follows:

INT32 MgCoordinateSystem::GetEpsgCode (void); INT32 MgCoordinateSystem::GetSridCode (void); INT16 MgCoordinateSystem::GetEpsgQuadrant (void); INT32 MgCoordinateSystemDatum::GetEpsgCode (void); INT32 MgCoordinateSystemEllipsoid::GetEpsgCode (void);

All methods will return a zero if the information is unknown; no exceptions will be thrown.

The quadrant values are (X is the first ordinate and Y is the second ordinate):

0Unknown, assume 1
1X increases to the east, Y increases to the north
2X increases to the west, Y increases to the north
3X increases to the west, Y increases to the south
4X increases to the east, Y increases to the south
-1X increases to the north, Y increases to the east
-2X increases to the north, Y increases to the west
-1X increases to the south, Y increases to the west
-1X increases to the south, Y increases to the east


Since we would be using currently unused holes in the CS-MAP dictionary structures, it would be nice to rename these elements. Doing so will break the buiold of MapGuide if the changes are not synchronized.

Test Plan

A test function wioll be written which will cycle through the three dictionaries affected and the results of these new methods compared to the current contents of the NameMapper. This effort will be done at the CS-MAP level. As these methods are simple on liners, no special test module is being planned at the MgCoordinateSystem level.


Software developement resources and funding to be provided by Autodesk.

Note: See TracWiki for help on using the wiki.