geometry (Transact-SQL)

Плоский пространственный тип данных geometry в SQL Server реализуется как тип данных среды CLR. Этот тип представляет данные в евклидовом пространстве (плоской системе координат).

SQL Server поддерживает набор методов для пространственного типа данных geometry. Сюда входят методы для работы с типом geometry, определенные спецификацией консорциума OGC, а также набор расширений Майкрософт для этого стандарта.

Дополнительные сведения о методах работы с пространственным типом данных geometry см. в разделе Справочник по методам типа данных geometry.

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Регистрация типа geometry

Тип geometry является стандартным и доступен в каждой базе данных. В таблице можно создать столбцы типа geometry и обращаться с данными geometry так же, как и с данными других типов среды CLR. Может использоваться в материализованных и нематериализованных вычисляемых столбцах.

Примеры

А.Показан способ добавления и запроса геометрических данных

В следующих двух примерах иллюстрируется добавление и запрос геометрических данных. В первом примере создается таблица со столбцом идентификаторов и столбцом GeomCol1 типа geometry. Третий столбец обрабатывает столбец geometry для представления в формате известного текста (WKT) OGC, используя метод STAsText(). Затем вставляются две строки: одна строка содержит экземпляр LineString типа geometry, а другая — экземпляр Polygon.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL 
    DROP TABLE dbo.SpatialTable;
GO

CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeomCol1 geometry, 
    GeomCol2 AS GeomCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));
GO

Б.Возвращается пересечение двух экземпляров геометрических объектов

Во втором примере метод STIntersection() используется для получения точек, в которых пересекаются два вставленные ранее объекта geometry.

DECLARE @geom1 geometry;
DECLARE @geom2 geometry;
DECLARE @result geometry;

SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geom1.STIntersection(@geom2);
SELECT @result.STAsText();

В.Использование типа geometry в вычисляемом столбце

В следующем примере создается таблица с материализованным вычисляемым столбцом с помощью типа geometry.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL 
    DROP TABLE dbo.SpatialTable;
GO

CREATE TABLE SpatialTable
(
    locationId int IDENTITY(1,1),
    location geometry,
    deliveryArea as location.STBuffer(10) persisted
)

См. также

Основные понятия

Справочник по методам типа данных geometry

Пространственные данные (SQL Server)