Changes between Version 4 and Version 5 of MapGuideRfc76
- Timestamp:
- 07/08/09 17:47:44 (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MapGuideRfc76
v4 v5 24 24 == Overview == 25 25 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 theMgCoordinateSystem 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.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. 27 27 28 28 == Motivation == 29 29 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.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. 31 31 32 32 == Terminology == … … 59 59 60 60 ||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 fromMgCoordinateSystemGridBase and generates generic (i.e. non-specialized) grids (SPCS,UTM, Lat/Long, etc.).||64 || MgCoordinateSystemGridMgrs||Derives fromMgCoordinateSystemGridBase and contains all MGRS related intelligence.||65 || MgCoordinateSystemGridUsng||Derives fromMgCoordinateSystemGridBase and contains all USNG related intelligence.||66 || MgCoordinateSystemGridSpecification||Conveys all grid generation parameters between objects, generator and consumer alike.||67 || MgCoordinateSystemGridLineCollection||A collection ofMgCoordinateSystemGridLine objects which represents a complete grid, in the target coordinate system and clipped to the grid boundary.||68 || MgCoordinateSystemGridRegionCollection||A collection ofMgCoordinateSystemGridRegion objects which defines the boundaries and designations of all specialized regions which exist within the grid boundary.||69 || MgCoordinateSystemGridTickCollection||A collection ofMgCoordinateSystemGridTick objects.||70 || MgCoordinateSystemGridLine||A grid value and a collection ofMgCoordinateSystemGridLineSegment 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 aMgPolygon 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.|| 74 74 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.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. 76 76 77 77 Design objecives are: … … 81 81 * MGSR/USNG type trackers are supported without having to render a grid. 82 82 * 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. 84 84 * A grid based on any coordinate system can be drawn on a map based on any other coordinate system (Arbitrary CS excepted). 85 85 * Specialized grid generation can and will properly deal with the possibility of multiple grid coordinate systems used in specialized grids (e.g. MGRS). … … 90 90 == Implications == 91 91 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.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. 93 93 94 94 == Test Plan ==