Changes between Version 3 and Version 4 of MapGuideRfc44


Ignore:
Timestamp:
Jan 12, 2008 7:40:54 PM (10 years ago)
Author:
brucedechant
Comment:

Cleaned up links.

Legend:

Unmodified
Added
Removed
Modified
  • MapGuideRfc44

    v3 v4  
    2323== Overview ==
    2424
    25 The geometric property definition only describes geometry types grouped by their shape’s dimensionality.  In order to successfully persist data to some providers with more specific restrictions (e.g. SHP), the undiluted list of geometric types is required.  This has already been done in the FDO API.  This RFC proposes to offer the same via MapGuide API.
     25The geometric property definition only describes geometry types grouped by their shape’s dimensionality.  In order to successfully persist data to some providers with more specific restrictions (e.g. SHP), the undiluted list of geometric types is required.  This has already been done in the FDO API.  This RFC proposes to offer the same via !MapGuide API.
    2626
    2727== Motivation ==
    2828
    29 The current API describes the allowed geometry types via MgGeometricPropertyDefinition::GetGeometryTypes, which returns a bit-mask value composed of values from the MgFeatureGeometricType enumeration.  The allowed values pertain to the shape dimensionality (Point, Curve, Surface or Solid), rather than to specific geometry types as described by MgGeometryType (Point, LineString, CurveString, Polygon, etc.).  Some FDO Providers restrict the type of geometry in a geometric property to a specific.  SHP is a good example of this.  The provider may advertise that the geometry can be a Curve, which implies LineString, MultiLineString, CurveString, and MultiCurveString. However, the provider might only allow LineString in this case.  If an attempt is made to insert a MultiLineString geometry, an exception is thrown that it cannot be written. A more fine grained specification of allowed geometry types will avoid these situations because the caller can check specific types beforehand.
    30 FDO supports the needed check via the FdoGeometricPropertyDefinition::GetSpecificGeometryTypes method, and its counterpart, SetSpecificGeometryTypes.  These more specific method were never added to the corresponding GIS Platform class, MgGeometricPropertyDefinition.  This RFC proposes to add the same methods to the Platform.
     29The current API describes the allowed geometry types via MgGeometricPropertyDefinition::!GetGeometryTypes, which returns a bit-mask value composed of values from the !MgFeatureGeometricType enumeration.  The allowed values pertain to the shape dimensionality (Point, Curve, Surface or Solid), rather than to specific geometry types as described by !MgGeometryType (Point, !LineString, !CurveString, Polygon, etc.).  Some FDO Providers restrict the type of geometry in a geometric property to a specific.  SHP is a good example of this.  The provider may advertise that the geometry can be a Curve, which implies !LineString, !MultiLineString, !CurveString, and !MultiCurveString. However, the provider might only allow !LineString in this case.  If an attempt is made to insert a !MultiLineString geometry, an exception is thrown that it cannot be written. A more fine grained specification of allowed geometry types will avoid these situations because the caller can check specific types beforehand.
     30FDO supports the needed check via the FdoGeometricPropertyDefinition::!GetSpecificGeometryTypes method, and its counterpart, !SetSpecificGeometryTypes.  These more specific method were never added to the corresponding GIS Platform class, !MgGeometricPropertyDefinition.  This RFC proposes to add the same methods to the Platform.
    3131
    3232== Proposed Solution ==
     
    6060};
    6161}}}
    62 Add the following methods to the PUBLISHED_API section of MgGeometricPropertyDefinition.  Descriptions are adapted from the FDO API version for brevity.
     62Add the following methods to the PUBLISHED_API section of !MgGeometricPropertyDefinition.  Descriptions are adapted from the FDO API version for brevity.
    6363{{{
    6464    /// \brief
     
    8686    void SetSpecificGeometryTypes(MgGeometryTypeInfo * typeInfo);
    8787}}}
    88 Defaults will be applied as appropriate when the older SetGeometryTypes method is used.  The MgFeatureGeometricType --> MgGeometryType mappings are:
    89  * Point --> Point and MultiPoint
    90  * Curve --> LineString, MultiLineString, CurveString, MultiCurveString
    91  * Surface --> Polygon, MultiPolygon, CurvePolygon, MultiCurvePolygon
     88Defaults will be applied as appropriate when the older !SetGeometryTypes method is used.  The !MgFeatureGeometricType --> !MgGeometryType mappings are:
     89 * Point --> Point and !MultiPoint
     90 * Curve --> !LineString, !MultiLineString, !CurveString, !MultiCurveString
     91 * Surface --> Polygon, !MultiPolygon, !CurvePolygon, !MultiCurvePolygon
    9292 * Solid --> (none)
    93  * All --> All types above, plus MultiGeometry.
     93 * All --> All types above, plus !MultiGeometry.
    9494
    9595