Поделиться через


geography (Transact-SQL)

Географический пространственный тип данных geography в SQL Server реализуется как тип данных среды .NET CLR. Этот тип представляет данные в системе координат круглой земли. Тип данных SQL Server geography сохраняет эллиптические данные (в системе координат круглой земли), такие как координаты широты и долготы в системе GPS.

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

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

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

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

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

Примеры

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

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

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

CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeogCol1 geography, 
    GeogCol2 AS GeogCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656 )', 4326));

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653 , -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));
GO

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

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

DECLARE @geog1 geography;
DECLARE @geog2 geography;
DECLARE @result geography;

SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;
SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geog1.STIntersection(@geog2);
SELECT @result.STAsText();

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

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

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

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

См. также

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

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

Другие ресурсы

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