GeoTools (2.5) AbstractCoverage のメソッド実装状況

hfu2007-10-26

クラス AbstractCoverageISO 19123 CV_Coverage の実装を称するクラスですが、実際には開発版の 2.5 においても未実装のメソッドが多いことが分かりました。具体的には、未実装のメソッドを呼び出すと、java.lang.UnsupportedOperationException が投げられるようになっています。
備忘のため、実装の状況をまとめてみます。

実装されているメソッド

  • getName
  • getDimension
  • getCoordinateReferenceSystem
  • getDimensionNames
  • getEnvelope
  • getSources
  • getMetadataNames(deprecated)
  • getMetadataValue(deprecated)
  • find
  • evalulate

実用的な計算が含まれるメソッドは、find と evaluate くらいでしょうか。

実装されていないメソッド

  • getDomainExtents
  • getDomainElements
  • getRangeElements
  • getRangeType
  • getCommonPointRule
  • list
  • select
  • evaluateInverse

難しいメソッドや、そもそも実装の都合を考えると現実的ではないメソッドが残っている感じがします。evaluateInverse なんて、現実的な速度での実装のことを考えるだけで頭が痛いです:

Returns a set of domain objects for the specified record of feature attribute values.

http://javadoc.geotools.fr/snapshot/org/geotools/coverage/AbstractCoverage.html#evaluateInverse(org.opengis.util.Record)

AbstractCoverage は抽象クラスなので、継承したクラスが実装しなさいという意図もあると思います。しかし、例えば GridCovarege2D を見ても、その実装はありません。

まとめ

ISO 19123 が「使える」ようになるまでの途は遠いと言えるかもしれません。

しかも

未実装のメソッドがある一方で、クラス AbstractCoverage には deprecated メソッドもすでに存在します。