Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
Azure SQL База данных
Azure SQL Управляемый экземпляр
SQL База данных в Microsoft Fabric
Плоский пространственный тип данных geometry в SQL Server реализуется как тип данных среды CLR. Этот тип представляет данные в евклидовом пространстве (плоской системе координат).
SQL Server поддерживает набор методов для пространственного типа данных geometry. К этим методам относятся методы geometry, определенные стандартом OGC, и набор расширений Майкрософт для этого стандарта.
Допустимая погрешность методов geometry может составлять до 1.0e-7 * экстентов. Экстенты ссылаются на приблизительное максимальное расстояние между точками геометрического объекта.
Регистрация типа geometry
Тип geometry является стандартным и доступен в каждой базе данных. В таблице можно создать столбцы типа geometry и обращаться с данными geometry так же, как и с данными других типов среды CLR. Может использоваться в материализованных и нематериализованных вычисляемых столбцах.
Remarks
В базе данных SQL в Microsoft Fabric поддерживаются географические и геометрические типы данных, но не могут быть зеркально отражены в Fabric OneLake.
Examples
A. Отображение добавления и запроса данных типа geometry
В следующих двух примерах иллюстрируется добавление и запрос геометрических данных. В первом примере создается таблица со столбцом идентификаторов и столбцом geometry типа GeomCol1. Третий столбец обрабатывает столбец 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
B. Возвращение пересечения двух экземпляров geometry
Во втором примере метод 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();
C. Использование типа 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
)