Accepted
- Remove ISpatialReference which is used in IElementSet.SpatialReference and instead use:
interface IElementSet { string CoordinateSystemWKT { get; } }
Examples:
PROJCS["WGS 84 / UTM zone 32N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER"latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32632"]]
Parsers for these strings is a very easy thing in any GIS library (NTS or JTS), in SDK it may be:
class ElementSet: IElementSet { string CoordinateSystemWKT { get; } GeoAPI.CoordinateSystems.ICoordinateSystem CoordinateSystem { get; } }
- Keep standard completely independent from any OGC implementations since they are not consistent yet (Java - C# - C++ are still different).
- Test performance of ElementMapper compare to standard GIS mapping available in JTS / NTS (Andrea / Gena).
- In SDK add implementation of ElementSet + ElementMapper which is OGC-compliant, next to standard ElementMapper:
// default, current implementation class ElementSet: IElementSet { } // for simple features: monitoring station, catchments, manholes ... class FeatureElementSet: IElementSet { IList<IFeature> Features { get; set; } } // for coverage data: precipitations grid, elevation ... // will bring big improvement in performence when using OGC-based ElementMapper. /* Intersect precipitations grid coverage with a set of catchemnt polygons and get values on polygons. */ class GridCoverageElementSet: IElementSet { GridCoverage GridCoverage { get; set; } }
- Probably put them in a separate library which depends on NTS / JTS:
openmi.backbone.opengis.jar
OpenMI.Backbone.OpenGIS.dll
- Q: what to do with values on a huge grid coverages? How to pass them using GetValues()? Should we pass double[] or GridCoverage there?