wiki:MapGuideRfc103

Version 1 (modified by christinebao, 14 years ago) ( diff )

--

MapGuide RFC 103 - Client needs to get WMS/WFS config info

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

Status

RFC Template Version(1.0)
Submission Date(July 13, 2010)
Last Modified(Christine Bao Tue July 13 05:23:00 2010)
AuthorChristine Bao
RFC StatusReady for Review
Implementation StatusNot Implemented
Proposed Milestone2.3
Assigned PSC guide(s)Tom Fukushima
Voting History

Overview

This RFC exposes GetDocument() API through HTTP Handler to allow client such as Studio to access WMS/WFS configuration file.

Motivation

When user uses client application such as Studio to publish WMS/WFS, (s)he wants to use some customized EPSG code which is defined in configuration file. For example, user can define an EPSG code mapping to a WKT if this EPSG code is not supported by MapGuide's coordinate system.

<!-- This definition allows a site to override the behavior of -->
 <!-- the SRS= parameter of requests.                           -->
 <!-- Add translate elements here to map any particularly       -->
 <!-- troublesome SRS to some appropriate WKT.                  -->
 <Define item="SRS.WKT.map">
  <!-- This example fixes a problem with EPSG:21781 not
       finding the WKT for EPSG:21781 in the CS library.
  -->
  <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>

 </Define>

</Definitions>

This EPSG code should be available in Studio for user to choose, however there is no way to get the config infomation so far. This RFC will provide a way to read WMS/WFS config file in client.

Proposed Solution

There is an API in ServerAdminService which can get the information.

   MgByteReader* GetDocument(CREFSTRING identifier);


It's not published through HTTP. A solution is to expose it through HTTP by adding HttpGetDocument in HttpHandler.

#ifndef _S_GET_DOCUMENT_H
#define _S_GET_DOCUMENT_H

class MgHttpGetDocument : public MgHttpRequestResponseHandler
{
    HTTP_DECLARE_CREATE_OBJECT()

public:
    /// <summary>
    /// Initializes the common parameters of the request.
    /// </summary>
    /// <param name="name">Input
    /// MgHttpRequest
    /// This contains all the parameters of the request.
    /// </param>
    /// <returns>
    /// nothing
    /// </returns>
    MgHttpGetDocument(MgHttpRequest *hRequest);

    /// <summary>
    /// Executes the specific request.
    /// </summary>
    /// <param name="hResponse">Input
    /// This contains the response (including MgHttpResult and StatusCode) from the server.
    /// </param>
    void Execute(MgHttpResponse& hResponse);

private:

    STRING m_identifier;

};

#endif


Then client can send HTTP request to get the document, for example: http://<IP>/mapguide2011/mapagent/mapagent.fcgi?Operation=GetDocument&Version=1.0.0&Identifier=Wms:OgcWmsService.config

Implications

This new added API won't affect existing application.

Test Plan

Test publish WMS/WFS in Studio, checking the customized EPSG code is available.

Funding/Resources

Supplied by Autodesk.

Note: See TracWiki for help on using the wiki.