Accepted
- Remove ISpatialReference which is used in IElementSet.SpatialReference and instead use:
Code Block |
---|
interface IElementSet
{
string CoordinateSystemWKT { get; }
}
|
Examples:
Code Block |
---|
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:
Code Block |
---|
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:
Code Block |
---|
// 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?