MapGuide RFC 35 - Coordinate System API Cleanup

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 DateSep 11, 2007
Last ModifiedBruce Dechant Timestamp?
AuthorBruce Dechant
RFC Statusadopted
Implementation Statusunder development
Proposed Milestone2.0
Assigned PSC guide(s)(when determined)
Voting HistoryOctober 10, 2007
+1Andy, Bob, Bruce, Haris, Jason, Paul, Tom


This RFC contains a proposal for cleaning up the exiting coordinate system API and preparing it so that either Mentor or PROJ4 can be used with MapGuide.


The existing coordinate system API as written is not very convenient to use as a library with 3rd party applications or even with MapGuide. With Mentor being open sourced in the near future it is important that we update our existing coordinate system API so that any 3rd party library can be more easily used (ie: Mentor or PROJ4). It also has an inconsistent design for what the coordinate system factory can create. This can be addressed by cleaning up the architecture via the use of interfaces and therefore create a usable library that can be easily shared.

Proposed Solution

The existing coordinate system API architecture will be cleaned up to use interfaces instead of wrapper classes. The coordinate system factory will be updated to create all coordinate system objects (coordinate systems and transforms)instead of the mixture of having to use the factory for some stuff but not all. Coordinate system measure objects will be accessed directly from an already existing coordinate system object instead of having to always create one.

New coordinate system factory method for creating a coordinate system transform object:

MgCoordinateSystemTransform* GetTransform(MgCoordinateSystem* pSource, MgCoordinateSystem* pTarget)

Measure will be accessed directly from an existing coordinate system object:

MgCoordinateSystemMeasure* GetMeasure()


All of the existing coordinate system APIs will remain and be backwards compatible with only the following 2 exceptions:

MgCoordinateSystemTransform constructor will be removed.
MgCoordinateSystemMeasure constructor will be removed.

The above 2 objects will instead be created via the updated coordinate system factory and accessed directly via an existing coordinate system object.

Test Plan

Ensure APIs behave as before.


Funding and resources to be supplied by Autodesk.

Last modified 11 years ago Last modified on Oct 10, 2007 8:36:24 AM