Spec-Zone .ru
спецификации, руководства, описания, API

12.18.5.2. Geometry Функции свойства

Каждая функция, которая принадлежит этой группе, принимает значение геометрии как свой параметр и возвращает некоторое количественное или качественное свойство геометрии. Некоторые функции ограничивают свой тип параметра. Такой возврат функций NULL если параметр имеет неправильный тип геометрии. Например, Area() возвраты NULL если объектный тип ни один не Polygon ни MultiPolygon.

12.18.5.2.1. Общие Функции Геометрии

Функции, перечисленные в этом разделе, не ограничивают свой параметр и принимают значение геометрии любого типа.

  • Dimension(g)

    Возвращает свойственную размерность значения геометрии g. Результат может быть–1, 0, 1, или 2. Значение этих значений дается в Разделе 12.18.2.2, "Класс Geometry".

    mysql> SELECT
                            Dimension(GeomFromText('LineString(1 1,2 2)'));+------------------------------------------------+| Dimension(GeomFromText('LineString(1 1,2 2)')) |+------------------------------------------------+|                                              1 |+------------------------------------------------+
  • Envelope(g)

    Возвращает Минимальный Ограничительный прямоугольник (MBR) для значения геометрии g. Результат возвращается как a Polygon значение.

    Многоугольник определяется угловыми точками ограничивающего прямоугольника:

    POLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))
    mysql> SELECT
                            AsText(Envelope(GeomFromText('LineString(1 1,2 2)')));+-------------------------------------------------------+| AsText(Envelope(GeomFromText('LineString(1 1,2 2)'))) |+-------------------------------------------------------+| POLYGON((1 1,2 1,2 2,1 2,1 1))                        |+-------------------------------------------------------+
  • GeometryType(g)

    Возвраты те, как двоичная строка имя типа геометрии который экземпляр геометрии g элемент. Имя соответствует одному из instantiable Geometry подклассы.

    mysql> SELECT
                            GeometryType(GeomFromText('POINT(1 1)'));+------------------------------------------+| GeometryType(GeomFromText('POINT(1 1)')) |+------------------------------------------+| POINT                                    |+------------------------------------------+
  • IsSimple(g)

    Возвраты 1, если значение геометрии g не имеет никаких аномальных геометрических точек, таких как самопересечение или самокасание. IsSimple() возвраты 0, если параметр не прост, и NULL если это NULL.

    Описание каждого instantiable геометрического class, данного ранее в главе, включает особые условия, которые заставляют экземпляр что class быть классифицированным как не простой. (См. Раздел 12.18.2.1, "Иерархия классов Геометрии".)

  • SRID(g)

    Возвращает целое число, указывающее на Пространственный Ссылочный Системный ID для значения геометрии g.

    В MySQL значение SRID является только целым числом, связанным со значением геометрии. Все вычисления делаются, принимая Евклидову (планарную) геометрию.

    mysql> SELECT
                            SRID(GeomFromText('LineString(1 1,2 2)',101));+-----------------------------------------------+| SRID(GeomFromText('LineString(1 1,2 2)',101)) |+-----------------------------------------------+|                                           101 |+-----------------------------------------------+

Спецификация OpenGIS также определяет следующие функции, которые не реализует MySQL:

  • Boundary(g)

    Возвращает геометрию, которая является закрытием комбинаторной границы значения геометрии g.

  • IsEmpty(g)

    Эта функция является заполнителем, который возвращается 0 для любого допустимого значения геометрии, 1 для любого недопустимого значения геометрии или NULL.

    MySQL не поддерживает GIS EMPTY значения такой как POINT EMPTY.

12.18.5.2.2. Point Функции

A Point состоит из X и координаты Y, которые могут быть получены, используя следующие функции:

  • X(p)

    Возвращает значение X-координаты для Point объект p как число двойной точности.

    mysql> SELECT X(POINT(56.7,
                            53.34));+-----------------------+| X(POINT(56.7, 53.34)) |+-----------------------+|                  56.7 |+-----------------------+
  • Y(p)

    Возвращает значение Y-координаты для Point объект p как число двойной точности.

    mysql> SELECT Y(POINT(56.7,
                            53.34));+-----------------------+| Y(POINT(56.7, 53.34)) |+-----------------------+|                 53.34 |+-----------------------+

12.18.5.2.3. LineString Функции

A LineString состоит из Point значения. Можно извлечь определенные точки a LineString, считайте число очков, которое это содержит, или получите его длину.

  • EndPoint(ls)

    Возвраты Point это - конечная точка LineString значение ls.

    mysql> SET @ls = 'LineString(1 1,2
                            2,3 3)';mysql> SELECT
                            AsText(EndPoint(GeomFromText(@ls)));+-------------------------------------+| AsText(EndPoint(GeomFromText(@ls))) |+-------------------------------------+| POINT(3 3)                          |+-------------------------------------+
  • GLength(ls)

    Возвраты как двойная точность нумеруют длину LineString значение ls в его связанной пространственной ссылке.

    mysql> SET @ls = 'LineString(1 1,2
                            2,3 3)';mysql> SELECT
                            GLength(GeomFromText(@ls));+----------------------------+| GLength(GeomFromText(@ls)) |+----------------------------+|            2.8284271247462 |+----------------------------+

    GLength() нестандартное имя. Это соответствует OpenGIS Length() функция.

  • NumPoints(ls)

    Возвращает число Point объекты в LineString значение ls.

    mysql> SET @ls = 'LineString(1 1,2
                            2,3 3)';mysql> SELECT
                            NumPoints(GeomFromText(@ls));+------------------------------+| NumPoints(GeomFromText(@ls)) |+------------------------------+|                            3 |+------------------------------+
  • PointN(ls,N)

    Возвраты N-th Point в Linestring значение ls. Точки нумеруются, начинаясь 1.

    mysql> SET @ls = 'LineString(1 1,2
                            2,3 3)';mysql> SELECT
                            AsText(PointN(GeomFromText(@ls),2));+-------------------------------------+| AsText(PointN(GeomFromText(@ls),2)) |+-------------------------------------+| POINT(2 2)                          |+-------------------------------------+
  • StartPoint(ls)

    Возвраты Point это - стартовая точка LineString значение ls.

    mysql> SET @ls = 'LineString(1 1,2
                            2,3 3)';mysql> SELECT
                            AsText(StartPoint(GeomFromText(@ls)));+---------------------------------------+| AsText(StartPoint(GeomFromText(@ls))) |+---------------------------------------+| POINT(1 1)                            |+---------------------------------------+

Спецификация OpenGIS также определяет следующую функцию, которую не реализует MySQL:

  • IsRing(ls)

    Возвраты 1, если LineString значение ls закрывается (то есть, StartPoint() и EndPoint() значения являются тем же самым), и просто (не проходит через ту же самую точку не раз). Возвраты 0, если ls не кольцо, и–1, если это NULL.

12.18.5.2.4. MultiLineString Функции

Эти функции возвращают свойства MultiLineString значения.

  • GLength(mls)

    Возвраты как двойная точность нумеруют длину MultiLineString значение mls. Длина mls равно сумме длин ее элементов.

    mysql> SET @mls = 'MultiLineString((1
                            1,2 2,3 3),(4 4,5 5))';mysql> SELECT
                            GLength(GeomFromText(@mls));+-----------------------------+| GLength(GeomFromText(@mls)) |+-----------------------------+|             4.2426406871193 |+-----------------------------+

    GLength() нестандартное имя. Это соответствует OpenGIS Length() функция.

  • IsClosed(mls)

    Возвраты 1, если MultiLineString значение mls закрывается (то есть, StartPoint() и EndPoint() значения являются тем же самым для каждого LineString в mls). Возвраты 0, если mls не закрывается, и–1, если это NULL.

    mysql> SET @mls = 'MultiLineString((1
                            1,2 2,3 3),(4 4,5 5))';mysql> SELECT
                            IsClosed(GeomFromText(@mls));+------------------------------+| IsClosed(GeomFromText(@mls)) |+------------------------------+|                            0 |+------------------------------+

12.18.5.2.5. Polygon Функции

Эти функции возвращают свойства Polygon значения.

  • Area(poly)

    Возвраты как двойная точность нумеруют область Polygon значение poly, как измерено в его пространственной ссылочной системе.

    mysql> SET @poly = 'Polygon((0 0,0
                            3,3 0,0 0),(1 1,1 2,2 1,1 1))';mysql> SELECT
                            Area(GeomFromText(@poly));+---------------------------+| Area(GeomFromText(@poly)) |+---------------------------+|                         4 |+---------------------------+
  • ExteriorRing(poly)

    Возвращает внешнее кольцо Polygon значение poly как a LineString.

    mysql> SET @poly =    -> 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1
                            1))';mysql> SELECT
                            AsText(ExteriorRing(GeomFromText(@poly)));+-------------------------------------------+| AsText(ExteriorRing(GeomFromText(@poly))) |+-------------------------------------------+| LINESTRING(0 0,0 3,3 3,3 0,0 0)           |+-------------------------------------------+
  • InteriorRingN(poly,N)

    Возвраты NВнутреннее кольцо-th для Polygon значение poly как a LineString. Кольца нумеруются, начинаясь 1.

    mysql> SET @poly =    -> 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1
                            1))';mysql> SELECT
                            AsText(InteriorRingN(GeomFromText(@poly),1));+----------------------------------------------+| AsText(InteriorRingN(GeomFromText(@poly),1)) |+----------------------------------------------+| LINESTRING(1 1,1 2,2 2,2 1,1 1)              |+----------------------------------------------+
  • NumInteriorRings(poly)

    Возвращается число внутренней части позвонило Polygon значение poly.

    mysql> SET @poly =    -> 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1
                            1))';mysql> SELECT
                            NumInteriorRings(GeomFromText(@poly));+---------------------------------------+| NumInteriorRings(GeomFromText(@poly)) |+---------------------------------------+|                                     1 |+---------------------------------------+

12.18.5.2.6. MultiPolygon Функции

Эти функции возвращают свойства MultiPolygon значения.

  • Area(mpoly)

    Возвраты как двойная точность нумеруют область MultiPolygon значение mpoly, как измерено в его пространственной ссылочной системе.

    mysql> SET @mpoly =    -> 'MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1
                            1)))';mysql> SELECT
                            Area(GeomFromText(@mpoly));+----------------------------+| Area(GeomFromText(@mpoly)) |+----------------------------+|                          8 |+----------------------------+
  • Centroid(mpoly)

    Возвращает математическую среднюю точку для MultiPolygon значение mpoly как a Point. Результат, как гарантируют, не будет идти MultiPolygon.

    mysql> SET @poly =    -> GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5
                            5))');mysql> SELECT
                            GeometryType(@poly),AsText(Centroid(@poly));+---------------------+--------------------------------------------+| GeometryType(@poly) | AsText(Centroid(@poly))                    |+---------------------+--------------------------------------------+| POLYGON             | POINT(4.958333333333333 4.958333333333333) |+---------------------+--------------------------------------------+

Спецификация OpenGIS также определяет следующую функцию, которую не реализует MySQL:

  • PointOnSurface(mpoly)

    Возвраты a Point значение, которое, как гарантируют, будет идти MultiPolygon значение mpoly.

12.18.5.2.7. GeometryCollection Функции

Эти функции возвращают свойства GeometryCollection значения.

  • GeometryN(gc,N)

    Возвраты NГеометрия-th в GeometryCollection значение gc. Конфигурации нумеруются, начинаясь 1.

    mysql> SET @gc =
                            'GeometryCollection(Point(1 1),LineString(2 2, 3 3))';mysql> SELECT AsText(GeometryN(GeomFromText(@gc),1));+----------------------------------------+| AsText(GeometryN(GeomFromText(@gc),1)) |+----------------------------------------+| POINT(1 1)                             |+----------------------------------------+
  • NumGeometries(gc)

    Возвращает число конфигураций в GeometryCollection значение gc.

    mysql> SET @gc =
                            'GeometryCollection(Point(1 1),LineString(2 2, 3 3))';mysql> SELECT NumGeometries(GeomFromText(@gc));+----------------------------------+| NumGeometries(GeomFromText(@gc)) |+----------------------------------+|                                2 |+----------------------------------+