Changes between Version 4 and Version 5 of MapGuideRfc76


Ignore:
Timestamp:
07/08/09 17:47:44 (15 years ago)
Author:
NormOlsen
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MapGuideRfc76

    v4 v5  
    2424== Overview ==
    2525
    26 There exists a need for the production of graticules, grids, tic marks, and the labeling thereof in Mapping and GIS applications.  This RFC seeks approval to add new functions and API’s to the MgCoordinateSystem API in support of this need.  The proposal includes support for specific grids (e.g. MGRS) and grids and graticules in general.  Being introduced at the MgCoordinateSystem API level, the proposed changes will simply generate in binary form the information necessary to render such grids and graticules, but no capability to render such is included in this proposal.
     26There exists a need for the production of graticules, grids, tic marks, and the labeling thereof in Mapping and GIS applications.  This RFC seeks approval to add new functions and API’s to the !MgCoordinateSystem API in support of this need.  The proposal includes support for specific grids (e.g. MGRS) and grids and graticules in general.  Being introduced at the !MgCoordinateSystem API level, the proposed changes will simply generate in binary form the information necessary to render such grids and graticules, but no capability to render such is included in this proposal.
    2727
    2828== Motivation ==
    2929
    30 Military organizations around the world want to use the MapGuide API to read and write MGRS designations and map related grids and cannot do that with the current API.  Many governmental agencies in the US at all levels desire to produce maps an obtain grid references which adhere to the United States National Grid standard.
     30Military organizations around the world want to use the !MapGuide API to read and write MGRS designations and map related grids and cannot do that with the current API.  Many governmental agencies in the US at all levels desire to produce maps an obtain grid references which adhere to the United States National Grid standard.
    3131
    3232== Terminology ==
     
    5959
    6060||Interface Name||Description||
    61 ||MgCoordinateSystemGridBoundary||MgPolygon based extents of the grid.  In the initial implementation, this will be expected to be a rectangle.  Always supplied in the target coordinate system.  This is the extents of the grid, not the viewport.||
    62 ||MgCoordinateSystemGridBase||Abstract interface between generator and consumer for all types of grids.||
    63 ||MgCoordinateSystemGridGeneric||Derives from MgCoordinateSystemGridBase and generates generic (i.e. non-specialized) grids (SPCS,UTM, Lat/Long, etc.).||
    64 ||MgCoordinateSystemGridMgrs||Derives from MgCoordinateSystemGridBase and contains all MGRS related intelligence.||
    65 ||MgCoordinateSystemGridUsng||Derives from MgCoordinateSystemGridBase and contains all USNG related intelligence.||
    66 ||MgCoordinateSystemGridSpecification||Conveys all grid generation parameters between objects, generator and consumer alike.||
    67 ||MgCoordinateSystemGridLineCollection||A collection of MgCoordinateSystemGridLine objects which represents a complete grid, in the target coordinate system and clipped to the grid boundary.||
    68 ||MgCoordinateSystemGridRegionCollection||A collection of MgCoordinateSystemGridRegion objects which defines the boundaries and designations of all specialized regions which exist within the grid boundary.||
    69 ||MgCoordinateSystemGridTickCollection||A collection of MgCoordinateSystemGridTick objects.||
    70 ||MgCoordinateSystemGridLine||A grid value and a collection of MgCoordinateSystemGridLineSegment objects (commonly just one).  The grid value (a double) is in the source coordinate system and the line itself is in target target coordinate system.  This collection is designed to support grid isolines which may be interrupted by the boundary.||
    71 ||MgCoordinateSystemGridLineSegment||A segment of a grid isoline resulting from clipping a complete grid line to grid boundary.||
    72 ||MgCoordinateSystemGridRegion||A designation and a MgPolygon which defines a specialized grid region boundary and associated designation.
    73 ||MgCoordinateSystemGridTick||A position in viewport coordinates and a grid value as a double identifying the location of the tick mark and the the grid system cooridnate value associated with it.||
     61||!MgCoordinateSystemGridBoundary||!MgPolygon based extents of the grid.  In the initial implementation, this will be expected to be a rectangle.  Always supplied in the target coordinate system.  This is the extents of the grid, not the viewport.||
     62||!MgCoordinateSystemGridBase||Abstract interface between generator and consumer for all types of grids.||
     63||!MgCoordinateSystemGridGeneric||Derives from !MgCoordinateSystemGridBase and generates generic (i.e. non-specialized) grids (SPCS,UTM, Lat/Long, etc.).||
     64||!MgCoordinateSystemGridMgrs||Derives from !MgCoordinateSystemGridBase and contains all MGRS related intelligence.||
     65||!MgCoordinateSystemGridUsng||Derives from !MgCoordinateSystemGridBase and contains all USNG related intelligence.||
     66||!MgCoordinateSystemGridSpecification||Conveys all grid generation parameters between objects, generator and consumer alike.||
     67||!MgCoordinateSystemGridLineCollection||A collection of !MgCoordinateSystemGridLine objects which represents a complete grid, in the target coordinate system and clipped to the grid boundary.||
     68||!MgCoordinateSystemGridRegionCollection||A collection of !MgCoordinateSystemGridRegion objects which defines the boundaries and designations of all specialized regions which exist within the grid boundary.||
     69||!MgCoordinateSystemGridTickCollection||A collection of !MgCoordinateSystemGridTick objects.||
     70||!MgCoordinateSystemGridLine||A grid value and a collection of !MgCoordinateSystemGridLineSegment objects (commonly just one).  The grid value (a double) is in the source coordinate system and the line itself is in target target coordinate system.  This collection is designed to support grid isolines which may be interrupted by the boundary.||
     71||!MgCoordinateSystemGridLineSegment||A segment of a grid isoline resulting from clipping a complete grid line to grid boundary.||
     72||!MgCoordinateSystemGridRegion||A designation and a !MgPolygon which defines a specialized grid region boundary and associated designation.
     73||!MgCoordinateSystemGridTick||A position in viewport coordinates and a grid value as a double identifying the location of the tick mark and the the grid system cooridnate value associated with it.||
    7474
    75 In general, to draw a graticule or a grid, the consuming application establishes the boundary of the grid/graticule in target coordinates, populates a parameter structure with selections such as grid density, constructs the grid object for the type of grid desired, and requests the desired components (such as an MgCoordinateSystemGridLineCollection) from the grid object.
     75In general, to draw a graticule or a grid, the consuming application establishes the boundary of the grid/graticule in target coordinates, populates a parameter structure with selections such as grid density, constructs the grid object for the type of grid desired, and requests the desired components (such as an !MgCoordinateSystemGridLineCollection) from the grid object.
    7676
    7777Design objecives are:
     
    8181* MGSR/USNG type trackers are supported without having to render a grid.
    8282* It will be possible to cache all grid calculations for subsequent reuse if the grid specifications have not changed.
    83 * All coordinate conversion calculations would be performed by two new functions in the existing MgCoordinateSystemTransform object.
     83* All coordinate conversion calculations would be performed by two new functions in the existing !MgCoordinateSystemTransform object.
    8484* A grid based on any coordinate system can be drawn on a map based on any other coordinate system (Arbitrary CS excepted).
    8585* Specialized grid generation can and will properly deal with the possibility of multiple grid coordinate systems used in specialized grids (e.g. MGRS).
     
    9090== Implications ==
    9191
    92 This API implies that all remarkable conditions will be handled with the use of exceptions.  Exceptions require milliseconds to process through the MgCoordinateSystem API.  Applications using this API need to be aware of this and refrain from continuing a loop which is producing exceptions frequently.
     92This API implies that all remarkable conditions will be handled with the use of exceptions.  Exceptions require milliseconds to process through the !MgCoordinateSystem API.  Applications using this API need to be aware of this and refrain from continuing a loop which is producing exceptions frequently.
    9393
    9494== Test Plan ==