Что такое тип хранения ST_Geometry?
Тип данных ST_Geometry - это пользовательский тип данных (UDT), который позволяет вам определять столбцы, в которых хранятся пространственные данные.
ST_Geometry является абстрактным невызываемым суперклассом. Однако его подклассы могут быть вызваны (instantiate). Вызванный тип данных - это тип данных, который может быть определен как столбец таблицы; в него могут быть добавлены значения этого типа.
Хотя вы можете определить столбец в виде типа ST_Geometry, вы не добавляете значения ST_Geometry в этот столбец, поскольку он не может быть вызван. Вместо этого вы добавляете значения подкласса.
Следующая схема демонстрирует иерархию типа данных ST_Geometry и его подклассов.
Подклассы
Подклассы ST_Geometry разделены на две категории: подклассы основной геометрии и подклассы однородных наборов. Основная геометрия включает: ST_Point, ST_LineString и ST_Polygon, а однородные наборы включают ST_MultiPoint, ST_MultiLineString и ST_MultiPolygon. Как ясно из названий, наборы однородных элементов являются наборами базовых геометрий. Помимо добавлений одинаковых свойств с базовой геометрией, однородные наборы имеют некоторые собственные свойства.
Каждый подкласс хранит тип геометрии, отображенный в его имени; например, ST_MultiPoint хранит мультиточки. Список подклассов и их описание приведены в следующей таблице:
Подтип |
Описание |
---|---|
ST_Point |
|
ST_LineString |
|
ST_Polygon |
|
ST_MultiPoint |
|
ST_MultiLineString |
|
ST_MultiPolygon |
|
Учтите, что каждый подкласс наследует свойства суперкласса ST_Geometry, но также имеет собственные свойства. Функции, которые работают с типом данных ST_Geometry, принимают любой из типов элементов подклассов. Однако некоторые функции определены на уровне подклассов, и принимают только заданные подклассы. Например, функция ST_GeometryN принимает в качестве входных параметров только значения подтипов ST_MultiLinestring, ST_MultiPoint или ST_MultiPolygon.
Чтобы определить подкласс для ST_Geometry, вы можете использовать функцию ST_GeometryType. Функция ST_GeometryType получает ST_Geometry и возвращает установленный подкласс в форме текстовой строки. Чтобы определить, какое количество элементов основной геометрии содержится в однородном наборе, вы можете использовать функцию ST_NumGeometries, которая получает однородный набор и возвращает количество элементов основной геометрии, которые в нем содержатся.