OpenGIS Geometry Object Model

http://www.3snews.net/html/60/3360-5667.html
学习资料: OpenGIS Simple Features Specification For SQL Revision 1.0 PDF.pdf




     基类Geometry拥有Point(点), Curve(曲线), Surface(面)和GeometryCollection(集合图元)。每一个几何对象都与一个空间参照系相互关联,几何对象所定义的坐标在空间参照系得到反映。

1 Geometry

      Geometry是OpenGIS几何模型层次关系的根类,Geometry是一个抽象(不能实例化)类。其子类实例化可得到空间参照系中的0,1,2维几何对象。
      在该层次关系中的所有可实例化类这样定义可以使在系统中是拓扑相关的(例如,所有几何对象定义都包括他们的边界)。

1.1Geometry的属性

Dimension–表示该几何对象的维,他必须小于等于坐标系的维;
CoordinateDimension –表示该几何对象坐标的维,他必须与空间参照系的维一样;

1.2 Geometry基本方法

Spatial ReferenceeSpatialReference()–返回该几何对象的空间参照系;
EnvelopeEnvelope()–该几何对象的最小外包矩形,返回一个class Envelope实例;
Well-known RepresentationExport() -输出该几何对象到一个DCP细节描述;
BooleanIsEmpty()–返回TRUE则该几何对象是空的几何元素;
BooleanIsSimple()–返回TRUE则该几何对象没有非规则点,如:自交叉/自相切;每个对实例化的几何对象描述将包括精确的坐标,该坐标可能会导致对象不是简单的几何元素。
Geometry Boundary() –返回几何的边界;
1.3        几何对象之间的空间关系检查方法

描述更多关于Geometry子类型的细节;
BooleanEqual(Geometry anotherGeometry) –检查对象是否与另外一个对象相等;
      BooleanDisjoint(Geometry anotherGeometry) –检查对象与另外一个对象是否是脱离的;
      BooleanIntersect(Geometry anotherGeometry) –检查对象与另外一个对象是否是相交的;
      BooleanTouch(Geometry anotherGeometry) –检查对象与另外一个对象是否是相切的;
      BooleanCross(Geometry anotherGeometry) –检查对象与另外一个对象是否是交叉的;
      BooleanWithin(Geometry anotherGeometry) –检查对象是否是在另外一个对象之内;
      BooleanContains(Geometry anotherGeometry) –检查对象是否是包含另外一个对象;
      BooleanOverlap(Geometry anotherGeometry) –检查对象与另外一个对象是否是相互重叠的;
      BooleanRelate(Geometry antherGeometry , String intersectionPatternMatrix) –检查该几何对象与另外一个对象是相互联系的,该种检查是通过检查对象内部,边界和外部是否相关;

1.4空间分析方法

DoubleDistance(Geometry anotherGeometry) –返回几何对象之间的最短距离;
GeometryBuffer(distance) –返回从几何对象出发的小于或等于distance距离的范围内的所有点的描述;
GeometryConvexHull() –返回一个描述该几何对象凸壳的一个几何对象;
GeometryIntersection(Geometry anotherGeometry) –返回几何对象之间交集的点集合的几何图元;
GeometryUnion(Geometry anotherGeometry) –返回几何对象并集集合对象;
GeometryDifference(Geometry anotherGeometry) –返回几何对象差集集合对象;
GeometrySymmetricDifference(Geometry anotherGeometry) –返回对称差集集合对象;

2几何元素集合

2.1方法

      GeometryIteratorGeometries() –返回集合的迭代器;

3 Point

      0D几何对象;一个点有x坐标和y坐标
      点的边界(Boundary)为空集;
3.1属性

      X – x坐标值;
      Y – y坐标值;

4多点

0D几何元素集合,其中成员为点;点之间是没有连接或者顺序的;
如果多点内没有相等的点,则多点是简单的;
多点的边界(Boundary)是空集;

5曲线

曲线是1D几何对象,通常是点的一个序列,其自类型中有具体的描述;
如果一个曲线的开始点和结束点相等则,该曲线是封闭的;
曲线的边界是空集;
如果曲线即是简单的又是封闭的,则为Ring;
5.1方法

      DoubleLength() –曲线长度;
      PointStartPoint() –曲线开始点;
PointEndPoint() -曲线结束点;

6线串,线,线环



图二
7多曲线(MultiCurve)

多曲线是1D的几何元素集合,他是由曲线(Curves)组成,如图三;
在本规格中,MultiCurve是不能实例化的,他定义了一组针对其子类的方法和一些扩展的原则;
当且仅当所有元素是简单的,并且任何两个元素之间只有一个交互点(该交互点都必须是两元素的边界),则一个MultiCurve是简单的;
如果MultiCurve中所有元素是封闭的,则MultiCurve是封闭的,封闭的MultiCurve的边界往往为空;





图三

7.1方法
Double Length() –该MultiCurve的长度,等于其中所有曲线元素长度的总和;

8多线串(MultiLineString)
      多线串的元素是线串(LineString),如图三;

9面(Surface)
面是2D的几何对象;
      OpenGIS抽象规范把简单面定义为由一个”片” (patch)组成,该”patch”与一个”扩展的边界”和“内部边界”相关联;
9.1方法
      Double Area() –面区域;
      Double Perimeter() –面周长;
      Double Centroid() –面的几何重心;不保证该中心位于面上;
      Double PointOnSurface() –在面上的一个点;

10多边形(Polygon)
      Polygon是一个平坦的面,由一个扩展边界和内部边界所定义,每个内部边界定义多边形的一个洞;
      图四展现了Polygon的例子,图五展现的是不能由单个Polygon实例所描述的几何对象;

图四

图五
10.1方法
      Geometry ExteriorRing() –返回多边形外环;
      Int NumInteriorRings() –返回多边形内环的数量;
      List<Geometry>InteriorRings() –返回多边形内环;

11多面(MultiSurface)
      2D几何对象集合,元素为面;
11.1方法
      Double Area() –多面(MultiSurface)的面积;
      Double Perimeter() –多面(MultiSurface)的周长;
      Double Centroid() –多面(MultiSurface)的重心,不保证该重心位与面之上;
      Double PointOnSurface() –保证在多面之上的点;

12多多边形(MultiPolygon)
      多多边形(MultiPolygon),以多边形为元素的多边形组合;
      图六展示了4个有效的MultiPolygons,图七展示了不能由单个MultiPolygons描述的几何对象。
[img]http://www.3snews.net/attachments/2007/01/3360_200701161544011.jpg [/img]
图六


图七

你可能感兴趣的:(sql,.net)