14.16.7.4 Функции свойств многоугольников и полигонов
Функции в этом разделе возвращают свойства значений Polygon или MultiPolygon.
Если не указано иное, функции в этом разделе обрабатывают свои аргументы геометрии следующим образом:
Если какой-либо аргумент является
NULLили какой-либо аргумент геометрии является пустой геометрией, возвращаемое значение равноNULL.Если какой-либо аргумент геометрии не является синтаксически правильной геометрией, возникает ошибка.
Если какой-либо аргумент геометрии является синтаксически правильной геометрией в неопределенной системе пространственной привязки (SRS), возникает ошибка.
Для функций, принимающих несколько аргументов геометрии, если эти аргументы не находятся в одной и той же системе SRS, возникает ошибка.
В противном случае возвращаемое значение является ненулевым
NULL.
Эти функции доступны для получения свойств многоугольников:
-
Возвращает число с двойной точностью, указывающее площадь
PolygonилиMultiPolygonаргумента, измеренную в его системе пространственной привязки.ST_Area()обрабатывает свои аргументы, как описано во введении к этому разделу, за исключением следующих случаев:Если геометрия геометрически неверна, результат — неопределённая площадь (то есть любое число) или возникает ошибка.
Если геометрия верна, но не является объектом
PolygonилиMultiPolygon, возникает ошибка.Если геометрия является допустимым
Polygonв декартовой системе SRS, результатом является декартова площадь многоугольника.Если геометрия является допустимым
MultiPolygonв декартовой системе SRS, результатом является сумма декартовых площадей многоугольников.Если геометрия является допустимым
Polygonв географической системе SRS, результатом является геодезическая площадь многоугольника в этой системе SRS в квадратных метрах.Если геометрия является допустимым
MultiPolygonв географической системе SRS, результатом является сумма геодезических площадей многоугольников в этой системе SRS в квадратных метрах.Если вычисление площади приводит к
+inf, возникает ошибка.-
Если геометрия имеет географическую систему SRS с долготой или широтой, выходящей за пределы диапазона, возникает ошибка:
Если значение долготы не находится в диапазоне (−180, 180], возникает ошибка.
Если значение широты не находится в диапазоне [−90, 90], возникает ошибка.
Указанные диапазоны приведены в градусах. Точные пределы диапазона несколько отличаются из-за арифметики с плавающей запятой.
mysql>
SET @poly ='Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))';mysql>SELECT ST_Area(ST_GeomFromText(@poly));+---------------------------------+ | ST_Area(ST_GeomFromText(@poly)) | +---------------------------------+ | 4 | +---------------------------------+ 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 ST_Area(ST_GeomFromText(@mpoly));+----------------------------------+ | ST_Area(ST_GeomFromText(@mpoly)) | +----------------------------------+ | 8 | +----------------------------------+ -
Возвращает математический центр
PolygonилиMultiPolygonаргумента в качествеPoint. Результат не гарантируется для нахождения наMultiPolygon.Эта функция обрабатывает коллекции геометрий, вычисляя центральную точку для компонентов наивысшей размерности в коллекции. Такие компоненты извлекаются и формируются в одну
MultiPolygon,MultiLineStringилиMultiPointдля вычисления центра.ST_Centroid()обрабатывает свои аргументы, как описано во введении к этому разделу, за исключением следующих случаев:Возвращаемое значение —
NULLдля дополнительного условия, что аргументом является пустая коллекция геометрий.Если геометрия имеет значение SRID для географической системы пространственной привязки (SRS), возникает ошибка.
mysql>
SET @poly =ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))');mysql>SELECT ST_GeometryType(@poly),ST_AsText(ST_Centroid(@poly));+------------------------+--------------------------------------------+ | ST_GeometryType(@poly) | ST_AsText(ST_Centroid(@poly)) | +------------------------+--------------------------------------------+ | POLYGON | POINT(4.958333333333333 4.958333333333333) | +------------------------+--------------------------------------------+ -
Возвращает внешний контур значения
Polygonpolyв качествеLineString.ST_ExteriorRing()обрабатывает свои аргументы, как описано во введении к этому разделу.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 ST_AsText(ST_ExteriorRing(ST_GeomFromText(@poly)));+----------------------------------------------------+ | ST_AsText(ST_ExteriorRing(ST_GeomFromText(@poly))) | +----------------------------------------------------+ | LINESTRING(0 0,0 3,3 3,3 0,0 0) | +----------------------------------------------------+ -
Возвращает
N-ый внутренний контур значенияPolygonpolyв качествеLineString. Номера контуров начинаются с 1.ST_InteriorRingN()обрабатывает свои аргументы, как описано во введении к этому разделу.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 ST_AsText(ST_InteriorRingN(ST_GeomFromText(@poly),1));+-------------------------------------------------------+ | ST_AsText(ST_InteriorRingN(ST_GeomFromText(@poly),1)) | +-------------------------------------------------------+ | LINESTRING(1 1,1 2,2 2,2 1,1 1) | +-------------------------------------------------------+ -
ST_NumInteriorRing(,poly)ST_NumInteriorRings(poly)Возвращает количество внутренних контуров в значении
Polygonpoly.ST_NumInteriorRing()иST_NuminteriorRings()обрабатывают свои аргументы, как описано во введении к этому разделу.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 ST_NumInteriorRings(ST_GeomFromText(@poly));+---------------------------------------------+ | ST_NumInteriorRings(ST_GeomFromText(@poly)) | +---------------------------------------------+ | 1 | +---------------------------------------------+
© 2025 Oracle
Licensed under the GPLv2 License.