(tick) 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?
  • No labels