(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

1 Comment

  1. Unknown User (don)

    ElementType should be probably refactored into string so that ElementSet can define it's element types. And then we can say that supported element types for now are, e.g. OGC- compliant geometry types, or whatever. But there will be no problems if we will need to extend it (e.g. to Surface, TIN, etc.)