Что такое тип хранения ST_Geometry?
Тип данных ST_Geometry использует спецификацию пользовательских типов данных SQL 3 (UDT), что позволяет создавать столбцы, в которых могут храниться пространственные данные, например улицы, земельные участки, достопримечательности. Он обеспечивает поддержку SQL-доступа к базам геоданных и базам данных в соответствии со стандартами International Organization for Standards (ISO) и Open Geospatial Consortium, Inc. (OGC). Данный вид хранения расширяет возможности базы данных, обеспечивая хранение для объектов (точек, линий и полигонов), которые представляют графические объекты. Оно было разработано для эффективного использования ресурсов баз данных; для совместимости с объектами баз данных, такими, как реплики и разделы; и для предоставления быстрого доступа к пространственным данным.
ST_Geometry является абстрактным невызываемым суперклассом. Однако его подклассы могут быть вызваны (инициализированы). Вызванный тип данных – это тип данных, который может быть определен как столбец таблицы; в него могут быть добавлены значения этого типа.
Хотя вы можете определить столбец в виде типа 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, которая получает однородный набор и возвращает количество элементов основной геометрии, которые в нем содержатся.