OpenGIS几何模型
OGC的SQL with Geometry Types 环境提出的几何类型集基于OpenGIS Geometry Model。在此模型中,每个几何对象都具有以下常规属性:
- 它与空间参考系统相关联,该系统描述了在其中定义对象的坐标空间。
- 它属于某些几何类。
几何类层次结构
几何类定义层次结构如下:
Geometry(不可实例)Point(实例化)Curve(不可实例)LineString(实例化)LineLinearRing
Surface(不可实例)Polygon(实例化)
GeometryCollection(实例化)MultiPoint(实例化)MultiCurve(不可实例)MultiLineString(实例化)
MultiSurface(不可实例)MultiPolygon(实例化)
无法在非实例化类中创建对象。可以在可实例化的类中创建对象。所有类都具有属性,可实例化类也可能具有断言(定义有效类实例的规则)。
Geometry是基类。这是一个抽象类。的可实例化子类Geometry仅限于存在于二维坐标空间中的零,一和二维几何对象。定义所有可实例化的几何类别,以便在拓扑上封闭该几何类别的有效实例(也就是说,所有定义的几何均包括其边界)。
基Geometry类有子类Point,Curve,Surface,和GeometryCollection:
Point表示零维对象。Curve代表一维对象,并具有子类LineString,子子类Line和LinearRing。Surface是为二维对象设计的,具有子类Polygon。GeometryCollection有专门的零,一维和二维集合类命名MultiPoint,MultiLineString和MultiPolygon对造型对应的集合的几何形状Points,LineStrings和Polygons分别。MultiCurve和MultiSurface作为抽象超类引入的,这些抽象类泛化了处理Curves和处理的集合接口Surfaces。
Geometry,Curve,Surface,MultiCurve,和MultiSurface被定义为noninstantiable类。它们为其子类定义了一组通用的方法,并且为了扩展性而将它们包括在内。
Point,LineString,Polygon,GeometryCollection,MultiPoint,MultiLineString,和MultiPolygon是实例化类。
几何类
Geometry是层次结构的根类。它是一个不可实例化的类,但具有以下列表中描述的许多属性,这些属性对于从任何子Geometry类创建的所有几何值都是共有的。特定的子类具有自己的特定属性,稍后将进行描述。
几何特性
几何值具有以下属性:
- 它的类型。每个几何都属于层次结构中的可实例化类之一。
其SRID或空间参考标识符。该值标识与几何相关的空间参考系统,该系统描述了在其中定义几何对象的坐标空间。
在MySQL中,SRID值是与几何值关联的整数。可用的最大SRID值为2 32 -1。如果给出较大的值,则仅使用较低的32位。
SRID 0表示无限平坦的笛卡尔平面,其轴未分配任何单位。为确保SRID 0行为,请使用SRID 0创建几何值。如果未指定SRID,则新几何值的默认SRID 0是默认值。
对于多个几何值的计算,所有值必须具有相同的SRID或发生错误。
它在其空间参考系统中的坐标,表示为双精度(8字节)数字。所有非空几何均包括至少一对(X,Y)坐标。空几何不包含坐标。
坐标与SRID相关。例如,在不同的坐标系中,即使对象具有相同的坐标,两个对象之间的距离也可能有所不同,因为平面坐标系上的距离和大地测量系统上(地球表面上的坐标)上的距离是不同的。
它的内部,边界和外部。
每个几何都在空间中占据某些位置。几何图形的外部是几何图形未占用的所有空间。内部是几何所占据的空间。边界是几何图形的内部和外部之间的接口。
其MBR(最小边界矩形)或信封。这是由最小和最大(X,Y)坐标形成的边界几何:
((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))
- 该值是 simple还是 nonsimple。类型(
LineString,,)的几何值可以是简单的MultiPoint,MultiLineString也可以是简单的。每种类型都确定自己的简单或非简单断言。 - 是否值封闭或不封闭。类型(
LineString,MultiString)的几何值是封闭的或未封闭的。每种类型都确定自己的关闭或未关闭断言。 - 值是空还是非空如果几何图形没有任何点,则它是空的。未定义空几何的外部,内部和边界(即,它们由一个
NULL值表示)。空的几何定义为始终简单,面积为0。 它的尺寸。几何的尺寸可以为-1、0、1或2:
- -1为空的几何。
- 没有长度和面积的几何图形为0。
- 对于具有非零长度和零面积的几何,为1。
- 2用于非零面积的几何。
Point对象的尺寸为零。LineString对象具有1的尺寸Polygon的对象具有的2的尺寸的尺寸MultiPoint,MultiLineString以及MultiPolygon对象是相同的,它们由的元件的尺寸。
点类
Point是代表坐标空间中单个位置的几何。
Point例子
- 想象一下有许多城市的大型世界地图。一个
Point对象可以代表每个城市。 - 在城市地图上,一个
Point对象可以代表一个公交车站。
Point物产
- X坐标值。
- Y坐标值。
Point被定义为零维几何。- a的边界
Point是空集。
曲线类别
Curve是一维几何,通常由一系列点表示。特定的子类Curve定义点之间插值的类型。Curve是一个不可实例化的类。
Curve物产
Curve具有其点的坐标。Curve被定义为一维几何。Curve如果 A 不会两次通过同一点,则它很简单,但如果起点和终点相同,则曲线仍然可以是简单的。Curve如果 A的起点等于其端点,则将A 闭合。- 关闭的边界
Curve为空。 - 非封闭的边界
Curve由其两个端点组成。 Curve简单且封闭的 A 是LinearRing。
LineString类
LineString是Curve点与点之间的线性插值。
LineString例子
- 在世界地图上,
LineString物体可以代表河流。 - 在城市地图中,
LineString对象可以代表街道。
LineString物产
LineString具有线段的坐标,由每个连续的点对定义。- 一个
LineString是一个Line,如果它包含正好有两个点。 - 一个
LineString是一个LinearRing,如果它是既封闭又简单。
表面等级
Surface是二维几何。这是一个不可实例化的类。其唯一的可实例化子类是Polygon。
Surface物产
Surface被定义为二维几何。- OpenGIS规范定义了一种简单
Surface的几何形状,它由与单个外部边界和零个或多个内部边界相关联的单个“补丁”组成。 - 简单对象的边界是一
Surface组与其外部和内部边界相对应的闭合曲线。
多边形类
Polygon是Surface代表多边几何形状的平面。它由单个外部边界和零个或多个内部边界定义,其中每个内部边界在中定义一个孔Polygon。
Polygon例子
- 在区域地图上,
Polygon对象可以代表森林,地区等。
Polygon断言
- a的边界
Polygon由构成其外部和内部边界的一组LinearRing对象(即LineString简单且封闭的对象)组成。 Polygon没有交叉的戒指。a边界中的环Polygon可在a处相交Point,但仅作为切线。Polygon没有线条,尖峰或刺孔。Polygon的内部是连接的点集。Polygon可能有孔。Polygon未连接带孔的外部。每个孔都定义了外部的连接组件。
前面的断言构成了Polygon一个简单的几何。
GeometryCollection类
GeomCollection是一个几何,它是零个或多个任何类别的几何的集合。
GeomCollection和GeometryCollection是同义的,与GeomCollection优选的类型名称。
几何图形集合中的所有元素必须位于同一空间参考系统(即,位于同一坐标系中)。尽管GeomCollection以下各节中描述的子类可能会限制成员资格,但是几何集合的元素没有其他限制。限制可能基于:
- 元素类型(例如,
MultiPoint可能仅包含Point元素) - 尺寸
- 限制元素之间的空间重叠程度
MultiPoint类
MultiPoint是由Point元素组成的几何集合。这些点没有以任何方式连接或排序。
MultiPoint例子
- 在世界地图上,
MultiPoint可以代表一连串的小岛。 - 在城市地图上,
MultiPoint可以代表售票处的网点。
MultiPoint物产
MultiPoint是零维几何。MultiPoint如果 A的两个Point值都不相等(坐标值相同),则它很简单。- a的边界
MultiPoint是空集。
MultiCurve类
MultiCurve是由Curve元素组成的几何集合。MultiCurve是一个不可实例化的类。
MultiCurve物产
MultiCurve是一维几何。MultiCurve当且仅当其所有元素都简单时, A 才简单;任何两个元素之间的唯一交点出现在两个元素边界上的点处。MultiCurve边界是通过将所获得的“模2联合规则”(也被称为“奇偶规则”):一个点是在一个边界MultiCurve,如果它是在奇数个的边界Curve的元件。MultiCurve如果 A的所有元素都已关闭,则A 会关闭。- 关闭的边界
MultiCurve始终为空。
MultiLineString类
MultiLineString是MultiCurve由LineString元素组成的几何集合。
MultiLineString例子
- 在区域地图上,
MultiLineString可以代表河流系统或高速公路系统。
MultiSurface类
MultiSurface是由表面元素组成的几何集合。MultiSurface是一个不可实例化的类。其唯一的可实例化子类是MultiPolygon。
MultiSurface断言
- 内部的表面
MultiSurface没有相交的内部。 - a内的曲面的
MultiSurface边界最多相交于有限数量的点。
MultiPolygon类
MultiPolygon是MultiSurface由Polygon元素组成的对象。
MultiPolygon例子
- 在区域地图上,
MultiPolygon可以代表湖泊系统。
MultiPolygon断言
MultiPolygon没有两个Polygon内部相交的元素。MultiPolygon没有两个Polygon元素相交(上一个断言也禁止相交)或在无数个点处接触。MultiPolygon可能没有切割线,尖峰或刺孔。MultiPolygon是一个常规的封闭点集。MultiPolygon具有多个的Polygon的内部未连接。a内部的连接组件MultiPolygon的数量等于中的Polygon值的数量MultiPolygon。
MultiPolygon物产
MultiPolygon是二维几何。MultiPolygon边界是一组闭合曲线(的LineString对应于其的边界值)Polygon的元素。- 每个
Curve边界MultiPolygon都在一个Polygon元素的边界内。 - 每个
Curve在边界Polygon要素是在边界的MultiPolygon。
