Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
База данных SQL в Microsoft Fabric
Географический пространственный тип данных geography в SQL Server реализуется как тип данных среды выполнения .NET. Этот тип представляет данные в системе координат круглой земли. Тип данных SQL Server geography предназначен для хранения эллипсоидальных данных (модели круглой Земли), таких как координаты широты и долготы GPS.
Note
В базе данных SQL Fabric столбцы пространственных типов разрешены использовать, но не будут зеркально отображаться в Fabric OneLake.
SQL Server поддерживает набор методов для пространственного типа данных geography. Сюда относятся методы для работы с типом geography, которые определены в спецификации открытого геопространственного консорциума (OGC), а также набор расширений корпорации Майкрософт для этого стандарта.
Допустимая погрешность методов geography может составлять до 1,0e-7 * экстентов. Экстенты ссылаются на приблизительное максимальное расстояние между точками географического объекта.
Зарегистрировать тип географии
Тип geography является стандартным и доступен в каждой базе данных. В таблице можно создать столбцы типа geography и обращаться с данными geography так же, как с данными других предусмотренных в системе типов. Тип может использоваться в вычисленных столбцах с сохранением и без сохранения.
Conversion
Переход из географии в бинарный, варбинарный, чар, варчар, нчар и нварчар должен быть явным. Используйте CAST или CONVERT.
Преобразование из бинарных, варбинарных, чар, варчар, нчар и нварчар в географию может быть как неявным, так и явным.
Преобразование между географией и всеми другими типами данных запрещено. Это включает переход между географией и геометрией. Для перемещения данных между этими двумя типами используйте методы Well-Known Binary (WKB) или Well-Known Text (WKT), например STAsBinary() , с STGeomFromWKB().
Преобразование из типа строки в географию использует те же правила, что geography::Parse()и . Строка должна быть Well-Known Text. SRID результата — 4326.
Преобразование между географией и бинарным или варбинарным использует SQL Server нативный формат сериализации географии, а не Well-Known бинарный. Бинарное значение Well-Known вызывает ошибку. Для преобразования в или из Well-Known бинарного режима используйте STAsBinary() и STGeomFromWKB().
Если целевая строка или двоичный тип слишком короткий для географического значения, возникает ошибка. Стоимость не усекается.
Remarks
В SQL базе данных в Microsoft Fabric поддерживаются типы данных географии и геометрии, но не могут быть зеркалированы в Fabric OneLake.
Examples
A. Покажите, как добавлять и делать запросы по географическим данным
В следующих примерах иллюстрируется добавление и запрос географических данных. В первом примере создается таблица со столбцом идентификаторов и столбцом geography типа GeogCol1. Третий столбец преобразует столбец geography в представление Well-Known Text (WKT) консорциума Open Geospatial Consortium (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 AS geography;
DECLARE @geog2 AS geography;
DECLARE @result AS 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();
C. Используйте географию в вычисленном столбце
В приведенном ниже примере создается таблица с материализованным вычисляемым столбцом типа 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
);