1 WKT
Well-known text (WKT) 是一种文本标记语言,用来表示地图上的矢量几何对象。该格式由开放地理空间联盟Open Geospatial Consortium (OGC)制定。
2 Geometry object model
WKT中的几何对象如图1所示,描述了简单要素几何的对象模型。基类Geometry有4个子类,包含Point,Curve,Surface和GeometryCollection。而且每个几何对象都有一个参考系统,Geometry与ReferenceSystem是关联关系,参考系统包括空间参考系统和线性参考系统。
2.1 Geometry
Geometry在这个UML类图中是基类,并且它是一个不可实例化的抽象类。
2.2 Point
Point继承Geometry。Point 是一个0维的几何对象,表示坐标空间中的单个位置。一个Point有一个x坐标值和一个y坐标值,如果带上参考系统,还可能有z坐标值以及m。x,y是必须有的,z和m为可空的。多个Point构成了MultiPoint。
2.3 Curve
Curve与Geometry是继承关系。Curve是一个一维的几何对象,存储了一个系列的Point,它不可实例化。上图只定义了Curve的一个子类,LineString,它由一系列点通过线性插值的方式形成。并且,当这条曲线是封闭的时候,它就变成了一个环。
2.4 LineString Line LinearRing
A LineString is a Curve with linear interpolation between Points. Each consecutive pair of Points defines a Line segment.
Line 与 LinearRing 继承自LineString。一个Line是一个恰好有两个Point的LineString。而一个LinearRing是一个简单且封闭的LineString。多个LineString构成了MultiLineString。
如上图4个LineString,其中c为LinearRing,d就不是,因为它不是simple。
2.5 Surface
Surface是一个2维的集合对象,继承自Geometry。它是不可实例化的,它有两个可实例化的子类分别为Polygon和PolyhedralSurface。一个多边形Polygon是一个简单的平面的曲面Surface。一个多面体PolyhedralSurface是一个由很多多边形面片组成的简单的Surface。
如下图所示,Polygon与PolyhedralSurface继承自Surface,Polygon与Polyhedral是聚合关系,它是一种弱的“拥有关系”。
2.6 Polygon
Polygon继承自Surface,它有一个子类三角形Triangle。它由多个LinearRing构成,是一个包含有内环的多边形。多个Polygon构成了MultiPolygon。
2.6 GeometryCollection
一个几何集合对象GeometryCollection继承自Geometry,它由很多几何对象组成。在一个GeometryCollection中,所有的几何对象都应在同一个空间参考系统中。它有3个子类,MultiSurface,MultiCurve,MultiPoint。其中,MultiCurve与MultiSurface是作为抽象超类引入的,它们归纳了用于处理Curves和Surfaces的集合接口。
2.7 总结
在上图1中,Geometry、Curve、Surface、MultiCurve、MultiSurface是不可实例化的,其余的都可实例化。
3 示例
TRIANGLE((0 0 0,0 1 0,1 1 0,0 0 0))
TIN (((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)))
POLYHEDRALSURFACE Z ( PATCHES
((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)),
((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)),
((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
((1 1 1, 1 0 1, 0 0 1, 0 1 1, 1 1 1)),
((1 1 1, 1 0 1, 1 0 0, 1 1 0, 1 1 1)),
((1 1 1, 1 1 0, 0 1 0, 0 1 1, 1 1 1))
)
主要参考
1 OGC Simple Feature Access 官方文档 https://www.opengeospatial.org/standards/sfa
2 https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry