Version 3 (modified by 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) |
Author | Christine Bao |
RFC Status | Ready for Review |
Implementation Status | Not Implemented |
Proposed Milestone | 2.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
There are discussions about exposing SetDocument() also. However it will not be added in this RFC because:
- It doesn't make sense for Studio to update server side configurations. If user wants to do so, (s)he needs to use Server Admin which requires Administrator privilege.
- Even SetDocument() is exposed to Studio, it can't take effect untill server is restarted.
- If SetDocument() is published through Http handler, it may be used by low level privilege account.
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.