| 1 | = !MapGuide RFC 162 - Enhanced coordinate system capabilities in mapagent = |
| 2 | |
| 3 | This page contains a change request (RFC) for the !MapGuide Open Source project. |
| 4 | More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page. |
| 5 | |
| 6 | |
| 7 | == Status == |
| 8 | |
| 9 | ||RFC Template Version||(1.0)|| |
| 10 | ||Submission Date||12 July 2017|| |
| 11 | ||Last Modified||12 July 2017|| |
| 12 | ||Author||Jackie Ng|| |
| 13 | ||RFC Status||draft|| |
| 14 | ||Implementation Status||not started|| |
| 15 | ||Proposed Milestone|||| |
| 16 | ||Assigned PSC guide(s)|||| |
| 17 | ||'''Voting History'''|||| |
| 18 | ||+1|||| |
| 19 | ||+0|||| |
| 20 | ||-0|||| |
| 21 | ||-1|||| |
| 22 | ||Abstained|||| |
| 23 | |
| 24 | == Overview == |
| 25 | |
| 26 | This RFC proposes to enhance the coordinate system capabilities of the mapagent |
| 27 | |
| 28 | == Motivation == |
| 29 | |
| 30 | MapGuide has one of the most powerful coordinate system transformation libraries (CS-Map) with support for several thousand different coordinate systems out of the box. |
| 31 | |
| 32 | Yet, as a MapGuide HTTP client application none of these transformation capabilities are ever exposed to the mapagent. To tap into coordinate transformation requires using the MapGuide Web API and thus custom server-side code that a HTTP client application would have to call into. |
| 33 | |
| 34 | == Proposed Solution == |
| 35 | |
| 36 | This RFC will add the following enhancements to the mapagent |
| 37 | |
| 38 | === Batch Coordinate Transformation === |
| 39 | |
| 40 | We'll add a new mapagent operation for batch transformation of coordinates from one coordinate system to another |
| 41 | |
| 42 | || '''Name''' || '''Value''' || '''Required''' || '''Description''' || |
| 43 | || OPERATION || CS.TRANSFORMCOORDINATES || Yes || Operation to execute || |
| 44 | || VERSION || 3.3.0 || Yes || Operation version || |
| 45 | || CLIENTAGENT || text || Optional || Descriptive text for client || |
| 46 | || COORDINATESYSTEM || string || Yes || The CS-Map code describing the coordinate system of the input coordinates || |
| 47 | || TRANSFORMTO || string || Yes || The CS-Map code of the coordinate system to transform the input coordinates to || |
| 48 | || FORMAT || string || Yes || {{{text/xml}}} for XML, {{{application/json}}} for JSON || |
| 49 | || CLEAN || 1/0 || Optional || If requested format is {{{application/json}}}, returns a clean JSON structure per [wiki:MapGuideRfc158] || |
| 50 | |
| 51 | The response matches the new {{{CoordinateList-3.3.0.xsd}}} schema |
| 52 | |
| 53 | {{{ |
| 54 | TBD |
| 55 | }}} |
| 56 | |
| 57 | === Transformation support for any mapagent operation that returns geometry === |
| 58 | |
| 59 | Any operation that returns geometry data will now have an optional {{{TRANSFORMTO}}} parameter, which if set (to an appropriate Mentor CS code) will instruct the supporting operation to transform the geometry result to the specified coordinate system. |
| 60 | |
| 61 | The following operations will have a new {{{3.3.0}}} version that supports the optional {{{TRANSFORMTO}}} parameter: |
| 62 | |
| 63 | * {{{SELECTFEATURES}}} |
| 64 | * {{{SELECTAGGREGATES}}} (if a geometric aggregate expression is found. eg. {{{SpatialExtents}}}) |
| 65 | |
| 66 | == Implications == |
| 67 | |
| 68 | These are new API additions |
| 69 | |
| 70 | == Test Plan == |
| 71 | |
| 72 | |
| 73 | |
| 74 | == Funding/Resources == |
| 75 | |
| 76 | Community |
| 77 | |