Changes between Initial Version and Version 1 of MapGuideRfc20


Ignore:
Timestamp:
Mar 11, 2007, 7:59:59 PM (17 years ago)
Author:
chrisclaydon
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MapGuideRfc20

    v1 v1  
     1= !MapGuide RFC 20 - New Query Features API - Part 2=
     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||March 11, 2007||
     11||Last Modified||Chris Claydon [[Timestamp]]||
     12||Author||Chris Claydon||
     13||RFC Status||draft||
     14||Implementation Status||pending||
     15||Proposed Milestone||1.2||
     16||Assigned PSC guide(s)||(when determined)||
     17||'''Voting History'''||(vote date)||
     18||+1||||
     19||+0||||
     20||-0||||
     21||-1||||
     22 
     23== Overview ==
     24
     25This RFC describes a proposed modification to the new Query Features API to address a defect observed in the !MapGuide Viewer.
     26
     27== Motivation ==
     28
     29When a feature is selected in the !MapGuide Viewer using the Search command, a susequent !QueryFeatures request is made to the !MapGuide Server in order to retrieve the properties for the selected feature. Any properties that are available are displayed in the viewer's property pane. The !QueryFeatures request is made using a spatial filter based on the geometry of the selected feature, with a !MaxFeatures value of 1. Thus, the properties that are displayed are those for the first feature that intersects the geometry of the selected feature. Unfortunately, this means that the properties that are retrieved are sometimes those of an adjacent feature instead of the selected feature.
     30
     31== Proposed Solution ==
     32
     33The proposed solution is to modify the new API added by [wiki:MapGuideRfc15 MapGuide RFC 15] to include an additional string parameter containing a feature filter. This would allow the viewer to restrict the query only to the selected feature.
     34
     35The API method would be modified from this:
     36
     37{{{
     38MgFeatureInformation* QueryFeatures(MgMap* map,
     39                                     MgStringCollection* layerNames,
     40                                     MgGeometry* geometry,
     41                                     INT32 selectionVariant,
     42                                     INT32 maxFeatures,
     43                                     bool bIgnoreScaleRange);
     44}}}
     45
     46to this:
     47
     48{{{
     49MgFeatureInformation* QueryFeatures(MgMap* map,
     50                                    MgStringCollection* layerNames,
     51                                    MgGeometry* geometry,
     52                                    INT32 selectionVariant,
     53                                    INT32 maxFeatures,
     54                                    bool bIgnoreScaleRange,
     55                                    CREFSTRING featureFilter);
     56}}}
     57
     58This would allow the !QueryFeatures method to support queries containing either a spatial filter, or a feature filter, or both. The featureFilter parameter would take the form o an XML selection string, as used by the existing !MgSelection class. The Viewer code that issues the QueryFeatures request already has access to the selection string for the selected feature, which should make the implementation in the code relatively simple.
     59
     60In the Web Tier the HTTP operation, QUERYMAPFEATURES, would be extended to add support for a new request parameter, FEATUREFILTER. This parameter would contain a URL encoded version of the XML selection string from the viewer.
     61
     62== Implications ==
     63
     64The documentation for this API will need to be updated. There are no compatibility issues because we have not yet released a version of MapGuide containing the API method to be modified.
     65
     66== Test Plan ==
     67
     68Unit tests should cover the new API and new HTTP request parameters.
     69
     70== Funding/Resources ==
     71
     72Funding and resources to be supplied by Autodesk.