Пространственные типы — geography
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure базе данных SQL в Microsoft Fabric
Географический пространственный тип данных geography в SQL Server реализуется как тип данных среды выполнения .NET. Этот тип представляет данные в системе координат круглой земли. Тип данных географии SQL Server хранит многоточие (круглоземные) данные, такие как широта GPS и координаты долготы.
Примечание.
В базе данных SQL Fabric столбцы пространственных типов разрешены использовать, но не будут зеркально отображаться в Fabric OneLake.
SQL Server поддерживает набор методов для пространственного типа данных geography. Сюда относятся методы для работы с типом geography, которые определены в спецификации открытого геопространственного консорциума (OGC), а также набор расширений корпорации Майкрософт для этого стандарта.
Допустимая погрешность методов geography может составлять до 1,0e-7 * экстентов. Экстенты ссылаются на приблизительное максимальное расстояние между точками объекта geography.
Регистрация типа geography
Тип geography является стандартным и доступен в каждой базе данных. В таблице можно создать столбцы типа geography и обращаться с данными geography так же, как с данными других предусмотренных в системе типов. Может использоваться в материализованных и нематериализованных вычисляемых столбцах.
Замечания
В базе данных SQL в Microsoft Fabric поддерживаются географические и геометрические типы данных, но не могут быть зеркально отражены в Fabric OneLake.
Примеры
А. Демонстрация добавления и запроса географических данных
В следующих примерах иллюстрируется добавление и запрос географических данных. В первом примере создается таблица со столбцом идентификаторов и столбцом geography
типа GeogCol1
. Третий столбец обрабатывает столбец 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
B. Получение точек пересечения двух экземпляров географического объекта
В следующем примере используется метод 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
);