ジオメトリクラスの階層は次のように定義されています。
Geometry
(インスタンス化不可能)
Point
(インスタンス化可能)
Curve
(インスタンス化不可能)
LineString
(インスタンス化可能)
Line
LinearRing
Surface
(インスタンス化不可能)
Polygon
(インスタンス化可能)
GeometryCollection
(インスタンス化可能)
MultiPoint
(インスタンス化可能)
MultiCurve
(インスタンス化不可能)
MultiLineString
(インスタンス化可能)
MultiSurface
(インスタンス化不可能)
MultiPolygon
(インスタンス化可能)
インスタンス化不可能なクラスのオブジェクトを作成することはできません。インスタンス化可能なクラスのオブジェクトは作成できます。どのクラスも属性を持ちますが、インスタンス化可能なクラスはさらに表明 (有効なクラスインスタンスを定義する規則) も持つことができます。
Geometry
は基底クラスです。これは抽象クラスです。Geometry
のインスタンス化可能なサブクラスは、2
次元座標空間内に存在する 0 次元、1
次元、および 2
次元の幾何オブジェクトに限定されます。インスタンス化可能な幾何クラスはすべて、幾何クラスの有効なインスタンスが位相的に閉じている
(つまり、定義されたすべての幾何図形に境界が含まれる)
ように定義されています。
Geometry
基底クラスには次のようなサブクラス
Point
,
Curve
、Surface
、および
GeometryCollection
があります。
Point
は 0
次元のオブジェクトを表します。
Curve
は 1
次元のオブジェクトを表し、そのサブクラス
LineString
は、Line
と
LinearRing
をサブクラスに持ちます。
Surface
は 2
次元のオブジェクト用に設計されたもので、Polygon
をサブクラスに持ちます。
GeometryCollection
には
MultiPoint
、MultiLineString
、MultiPolygon
という 0、1、2
次元の特殊化コレクションクラスが用意されており、それぞれ
Point
、LineString
、Polygon
のコレクションに対応する幾何図形をモデル化しています。MultiCurve
と MultiSurface
は、このコレクションインタフェースを汎化して
Curves
や
Surfaces
を処理できるようにするための抽象スーパークラスとして導入されたものです。
Geometry
、Curve
、Surface
、MultiCurve
、および
MultiSurface
は、インスタンス化不可能なクラスとして定義されています。これらはサブクラスに共通する一連のメソッドを定義しており、将来の拡張性のために含められています。
Point
、LineString
、Polygon
、GeometryCollection
、MultiPoint
、MultiLineString
、および
MultiPolygon
はインスタンス化可能なクラスです。