Changes between Initial Version and Version 1 of MapGuideRfc95


Ignore:
Timestamp:
Jun 11, 2010, 11:01:32 PM (14 years ago)
Author:
liuar
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MapGuideRfc95

    v1 v1  
     1= !MapGuide RFC 095 - OGC WMS 1.3.0 Support =
     2
     3This page contains an change request (RFC) for the !MapGuide Open Source project.
     4More !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||(Date/Time submitted)||
     11||Last Modified||(your name here) (modification date here)||
     12||Author||Arthur Liu||
     13||RFC Status||draft||
     14||Implementation Status||under development||
     15||Proposed Milestone||2.2||
     16||Assigned PSC guide(s)||Bruce Dechant||
     17||'''Voting History'''||(vote date)||
     18||no vote|| ||
     19
     20== Overview ==
     21
     22Enhance the WMS 1.3.0 implmentation of MapGuide according to OGC WMS 1.3.0 specification. The goal is to make sure MapGuide could pass the OGC certification for WMS 1.3.0 and 1.1.1 (http://cite.opengeospatial.org)
     23
     24== Motivation ==
     25
     26OGC WMS 1.3.0 specification has been released for years, however, the highest offical supported WMS version for MapGuide is 1.1.1. It is necessary for MapGuide to enhance the implementation to support WMS 1.3.0.
     27
     28== Proposed Solution ==
     29
     30One significant change in WMS 1.3.0 is the axis orientation. In order to align with the definitions from the EPSG database, OGC WMS 1.3.0 specification reversed the axis sequence for some EPSG code include EPSG:4326. Which means for some EPSG CRS, the meaning of (x,y) is changed from (lon,lat) to (lat,lon) or even other orientations.
     31
     32Some new API added in order to adapt the axis orientation issue in WMS 1.3.0
     33
     34CS_MAP will provide an API to obtain the axis orientation for one particular ESPG CRS
     35{{{
     36// Parameter   nVendor=MgCoordinateSystemCodeFormat::Epsg
     37// Return      0    X increases to the East,  Y increases to the North   
     38//             1    X increases to the East,  Y increases to the North
     39//             2    X increases to the West,  Y increases to the North
     40//             3    X increases to the West,  Y increases to the South
     41//             4    X increases to the East,  Y increases to the South
     42//             -1   X increases to the North, Y increases to the East
     43//             -2   X increases to the North, Y increases to the West
     44//             -3   X increases to the South, Y increases to the West
     45//             -4   X increases to the South, Y increases to the East
     46
     47INT32 MgCoordinateSystem::GetQuadrant (int32 nVendor)
     48
     49}}}
     50
     51It is necessary for MapGuide implement an API ProcessBoundingBoxAxes to handle different axis orientation for the bounding box parameter in GetMap and GetFeatureInfo operation. For example: change (lat,lon) back to (lon,lat)
     52
     53{{{
     54class MgWmsMapUtil
     55{
     56    public:
     57               
     58    …
     59
     60    // Handle the CRSs which have their axis orientation changed
     61    static void ProcessBoundingBoxAxes(REFSTRING bbox);
     62}
     63
     64}}}
     65
     66The other important change in WMS 1.3.0 specification is the CRS namespace. WMS 1.3.0 specification introduced two more CRS namespaces besides EPSG, they are CRS namespace which in the form specified by ISO 19111 and  AUTO2 namespace is used for "automatic" coordinate reference systems.
     67
     68In order to pass the OGC certification, the CRS CRS:84 must be supported. There's a workaround that it could be predefined in OgcWmsService.config
     69
     70{{{
     71 <!-- This definition allows a site to override the behavior of -->
     72 <!-- the SRS= parameter of requests.                           -->
     73 <!-- Add translate elements here to map any particularly       -->
     74 <!-- troublesome SRS to some appropriate WKT.                  -->
     75 <Define item="SRS.WKT.map">
     76  <!-- This example fixes a problem with EPSG:21781 not
     77       finding the WKT for EPSG:21781 in the CS library.
     78  -->
     79  <translate from="EPSG:21781">PROJCS["CH1903.LV03/01",GEOGCS["LLCH1903",DATUM["CH-1903",SPHEROID["BESSEL",6377397.155,299.15281535],TOWGS84[660.0770,13.5510,369.3440,0.804816,0.577692,0.952236,5.66000000]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Swiss_Oblique_Cylindrical"],PARAMETER["false_easting",600000.000],PARAMETER["false_northing",200000.000],PARAMETER["latitude_of_origin",46.95240555555556],PARAMETER["central_meridian",7.43958333333333],UNIT["Meter",1.00000000000000]]</translate>
     80  <translate from="CRS:84">CRS:84 wkt here</translate>
     81 </Define>
     82
     83}}}
     84
     85
     86
     87== Implications ==
     88
     89Besides OGC WMS 1.3.0, MapGuide also support some previous WMS versions like 1.1.1, 1.1.0, and 1.0.0. This enhancement should not affect the functionality of other previous versions.
     90
     91== Test Plan ==
     92
     93After the implementation of OGC WMS 1.3.0 enhancement, an official OGC certification(http://cite.opengeospatial.org) will test if MapGuide provides standard WMS service.
     94
     95== Funding/Resources ==
     96
     97Supplied by Autodesk.