GIS Geometry对象模型
李泉 陈玉进 (南京跬步科技有限公司http://www.creable.cn )
这章介绍OGC(Open GIS Consortium)推荐的Geometry对象模型,此几何形态在后面的算法中大量用到,在整个GIS的对象模型中,Geometry占有很重要的地位。
地理要素的形态千变万化,但最终可以概括为点、线、面三种形态,这是单个形式。在地理信息系统中,常常多个几何图形属于一个地理要素,这种情况使用集合来描述。图1就是OGC建议的Geometry对象模型,其中Geometry是所有几何类的父类,是对所有几何类的抽象。Point表示一个点状几何体,Curve表示一个曲线(抽象类),LineString表示一条折线,Line表示一条直线,LinearRing表示一个环(闭合的折线),Surface表示一个表面(抽象类),Polygon表示一个面,GeometryCollection表示一个几何体的集合,MultiSurface表示一个表面的集合(抽象类),MultiPolygon表示一个面的集合,MultiCurve表示一个曲线的集合(抽象类),MultiLineString表示一个折线的集合,MultiPoint表示一个点的集合。
下面将详细介绍各种几何体。
1. Geometry
Geometry是所有几何类的父类,是一个虚类,不可实例化。所有几何类根据空间表现式被定位为0维、1维和2维。所有几何类都必须能够返回它自己的最小外包矩形(MBR)。
2. Point
Point是一个0维的几何类,在坐标空间中只有一个位置。一个点具有x坐标值和y坐标值。点的最小外包矩形为null。
3. Curve
Curve是一个1维的几何类,常常包含一组Point。在ISO19125标准中,仅仅定义了一个它的子类,那就是LineString。如果没有自相交的情况出现,那么这个Curve是简单的。如果首尾节点完全相同,那么这个Curve是闭合的(这个判断用在组成面的情况,组成面的线必须是简单的闭合的)。如果一个Curve简单且闭合,则它就是一个Ring。
4. LineString
LineString是一个点与点之间使用线相连的Curve,点与点之间都是一个Line。
5. Line
Line是一个只具有2个点的LineString。
6. LinearRing
LinearRing是一个即简单又闭合的LineString,图2中a不简单也不闭合,只是一个LineString。b有自相交的情况,也不是LinearRing。c是一个LinearRing。d虽然闭合但是有自相交,即不简单,也不是一个LinearRing。
1. Surface
Surface是一个2维的几何类。Polygon类是Surface类惟一的子类,并且Polygon没有自相交的情况。