• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • OpenGIS几何模型

    OGC的SQL with Geometry Types 环境提出的几何类型集基于OpenGIS Geometry Model。在此模型中,每个几何对象都具有以下常规属性:


    • 它与空间参考系统相关联,该系统描述了在其中定义对象的坐标空间。
    • 它属于某些几何类。


    几何类层次结构

    几何类定义层次结构如下:

    • Geometry(不可实例)

      • Point(实例化)
      • Curve(不可实例)

        • LineString(实例化)

          • Line
          • LinearRing
      • Surface(不可实例)

        • Polygon(实例化)
      • GeometryCollection(实例化)

        • MultiPoint(实例化)
        • MultiCurve(不可实例)

          • MultiLineString(实例化)
        • MultiSurface(不可实例)

          • MultiPolygon(实例化)

    无法在非实例化类中创建对象。可以在可实例化的类中创建对象。所有类都具有属性,可实例化类也可能具有断言(定义有效类实例的规则)。

    Geometry是基类。这是一个抽象类。的可实例化子类Geometry仅限于存在于二维坐标空间中的零,一和二维几何对象。定义所有可实例化的几何类别,以便在拓扑上封闭该几何类别的有效实例(也就是说,所有定义的几何均包括其边界)。

    Geometry类有子类PointCurveSurface,和GeometryCollection

    • Point表示零维对象。
    • Curve代表一维对象,并具有子类LineString,子子类LineLinearRing
    • Surface是为二维对象设计的,具有子类Polygon
    • GeometryCollection有专门的零,一维和二维集合类命名MultiPointMultiLineStringMultiPolygon对造型对应的集合的几何形状PointsLineStringsPolygons分别。MultiCurveMultiSurface作为抽象超类引入的,这些抽象类泛化了处理Curves和处理的集合接口Surfaces

    GeometryCurveSurfaceMultiCurve,和MultiSurface被定义为noninstantiable类。它们为其子类定义了一组通用的方法,并且为了扩展性而将它们包括在内。

    PointLineStringPolygonGeometryCollectionMultiPointMultiLineString,和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,,)的几何值可以是简单的MultiPointMultiLineString也可以是简单的。每种类型都确定自己的简单或非简单断言。
    • 是否值封闭或不封闭。类型(LineStringMultiString)的几何值是封闭的或未封闭的。每种类型都确定自己的关闭或未关闭断言。
    • 值是空还是非空如果几何图形没有任何点,则它是空的。未定义空几何的外部,内部和边界(即,它们由一个NULL值表示)。空的几何定义为始终简单,面积为0。
    • 它的尺寸。几何的尺寸可以为-1、0、1或2:

      • -1为空的几何。
      • 没有长度和面积的几何图形为0。
      • 对于具有非零长度和零面积的几何,为1。
      • 2用于非零面积的几何。

      Point对象的尺寸为零。LineString对象具有1的尺寸Polygon的对象具有的2的尺寸的尺寸MultiPointMultiLineString以及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类

    LineStringCurve点与点之间的线性插值。

    LineString例子

    • 在世界地图上,LineString物体可以代表河流。
    • 在城市地图中,LineString对象可以代表街道。

    LineString物产

    • LineString具有线段的坐标,由每个连续的点对定义。
    • 一个LineString是一个Line,如果它包含正好有两个点。
    • 一个LineString是一个LinearRing,如果它是既封闭又简单。

    表面等级

    Surface是二维几何。这是一个不可实例化的类。其唯一的可实例化子类是Polygon

    Surface物产

    • Surface被定义为二维几何。
    • OpenGIS规范定义了一种简单Surface的几何形状,它由与单个外部边界和零个或多个内部边界相关联的单个“补丁”组成。
    • 简单对象的边界是一Surface组与其外部和内部边界相对应的闭合曲线。

    多边形类

    PolygonSurface代表多边几何形状的平面。它由单个外部边界和零个或多个内部边界定义,其中每个内部边界在中定义一个孔Polygon

    Polygon例子

    • 在区域地图上,Polygon对象可以代表森林,地区等。

    Polygon断言

    • a的边界Polygon由构成其外部和内部边界的一组LinearRing对象(即LineString简单且封闭的对象)组成。
    • Polygon没有交叉的戒指。a边界中的环Polygon可在a处相交Point,但仅作为切线。
    • Polygon没有线条,尖峰或刺孔。
    • Polygon的内部是连接的点集。
    • Polygon可能有孔。Polygon未连接带孔的外部。每个孔都定义了外部的连接组件。

    前面的断言构成了Polygon一个简单的几何。

    GeometryCollection类

    GeomCollection是一个几何,它是零个或多个任何类别的几何的集合。

    GeomCollectionGeometryCollection是同义的,与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类

    MultiLineStringMultiCurveLineString元素组成的几何集合。

    MultiLineString例子

    • 在区域地图上,MultiLineString可以代表河流系统或高速公路系统。

    MultiSurface类

    MultiSurface是由表面元素组成的几何集合。MultiSurface是一个不可实例化的类。其唯一的可实例化子类是MultiPolygon

    MultiSurface断言

    • 内部的表面MultiSurface没有相交的内部。
    • a内的曲面的MultiSurface边界最多相交于有限数量的点。

    MultiPolygon类

    MultiPolygonMultiSurfacePolygon元素组成的对象。

    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