Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Тип планарных пространственных данных geometryпредставляет данные в системе координат Евклидан (плоская). Этот тип реализуется как тип данных среды CLR в SQL Server.
Тип geometry предопределен и доступен в каждой базе данных. Вы можете создавать столбцы таблицы типа geometry и работать с данными geometry таким же образом, как и с другими типами CLR.
Тип geometry данных (planar), поддерживаемый SQL Server, соответствует простым функциям открытого геопространственного консорциума (OGC) для спецификации SQL версии 1.1.0.
Дополнительные сведения о спецификациях OGC см. в следующих статьях:
Спецификации OGC, простой доступ к функциям, часть 1 — общая архитектура
Спецификации OGC, простой доступ к функциям, часть 2 — параметры SQL
SQL Server поддерживает подмножество существующего стандарта GML 3.1, определенного в следующей схеме. https://schemas.microsoft.com/sqlserver/profiles/gml/SpatialGML.xsd
Создание нового объекта геометрии
Создание нового геометрического экземпляра из существующего экземпляра
Тип geometry данных предоставляет множество встроенных методов, которые можно использовать для создания новых geometry экземпляров на основе существующих экземпляров.
Создание буфера вокруг геометрии
STBuffer (тип данных geometry)
BufferWithTolerance (тип данных geometry)
Создание упрощенной версии геометрии
Уменьшить (тип данных geometry)
Создание выпуклого корпуса геометрии
STConvexHull (тип данных geometry)
Создание геометрии из пересечения двух геометрий
STIntersection (тип данных geometry)
Создание геометрии из объединения двух геометрий
STUnion (тип данных geometry)
Создание геометрии из точек, где одна геометрия не перекрывается другой
STDifference (тип данных geometry)
Создание геометрии из точек, где две геометрии не перекрываются
STSymDifference (тип данных geometry)
Создание произвольного экземпляра point, лежащего в существующей геометрии
STPointOnSurface (тип данных геометрия)
Создание геометрического экземпляра из Well-Known текстового ввода
Тип geometry данных предоставляет несколько встроенных методов, которые создают геометрию из представления WKT открытого геопространственного консорциума (OGC). Стандарт WKT — это текстовая строка, которая позволяет обмениваться данными геометрии в текстовой форме.
Создать объект геометрии любого типа из данных WKT
STGeomFromText (тип данных geometry)
Синтаксический анализ (тип данных geometry)
Создание экземпляра точки геометрии из входных данных WKT
STPointFromText (тип данных геометрии)
Создание геометрического экземпляра MultiPoint из входных данных WKT
STMPointFromText (тип данных geometry)
Создание геометрического экземпляра LineString из входных данных WKT
STLineFromText (тип данных geometry)
Создание геометрического экземпляра MultiLineString из входных данных WKT
STMLineFromText (тип данных geometry)
Создание геометрического экземпляра Polygon из входных данных WKT
STPolyFromText (тип данных геометрия)
Создание экземпляра geometry MultiPolygon из входных данных WKT
STMPolyFromText (тип данных geometry)
Создание экземпляра geometry GeometryCollection из входных данных WKT
STGeomCollFromText (тип данных 'geometry')
Создание экземпляра геометрии из двоичных входных данных Well-Known
WKB — это двоичный формат, заданный открытым геопространственный консорциумом (OGC), который позволяет geometry обмениваться данными между клиентским приложением и базой данных SQL. Следующие функции принимают входные данные WKB для создания геометрий:
Для создания любого типа геометрического экземпляра на основе входных данных WKB
STGeomFromWKB (тип данных геометрия)
Создание экземпляра точки геометрии из входных данных WKB
STPointFromWKB (тип данных geometry)
Создание геометрического экземпляра MultiPoint из входных данных WKB
STMPointFromWKB (тип данных geometry)
Создание геометрического экземпляра LineString из входных данных WKB
STLineFromWKB (тип данных geometry)
Создание геометрического экземпляра MultiLineString из входных данных WKB
STMLineFromWKB (тип данных geometry)
Создание экземпляра геометрического многоугольника из входных данных WKB
STPolyFromWKB (тип данных Геометрия)
Создание экземпляра geometry MultiPolygon из входных данных WKB
STMPolyFromWKB (тип данных геометрия)
Создание экземпляра geometry GeometryCollection из входных данных WKB
STGeomCollFromWKB (тип данных geometry)
Создание геометрического экземпляра из ввода текста GML
Тип geometry данных предоставляет метод для создания экземпляра geometry из GML, XML-представления геометрических объектов. SQL Server поддерживает подмножество GML.
Создание любого типа геометрического экземпляра из входных данных GML
GeomFromGml (тип данных геометрии)
Возврат текста Well-Known и Well-Known двоичного файла из геометрического экземпляра
Для возврата формата geometry WKT или WKB экземпляра можно использовать следующие методы:
Чтобы вернуть представление WKT экземпляра геометрии
STAsText (тип данных geometry)
ToString (тип данных geometry)
Чтобы возвратить представление WKT геометрического экземпляра, включая значения Z и M
AsTextZM (тип данных geometry)
Чтобы вернуть представление WKB геометрического экземпляра
STAsBinary (тип данных geometry)
Возврат представления GML экземпляра геометрии
AsGml (тип данных геометрия)
Запрашивание свойств и поведения геометрических экземпляров
Все geometry экземпляры имеют ряд свойств, которые можно получить с помощью методов, предоставляемых SQL Server. В следующих разделах определяются свойства и поведение типов геометрии, а также методы для запроса каждого из них.
Сведения о допустимости, типе экземпляра и информации о коллекции геометрий.
geometry После создания экземпляра можно использовать следующие методы, чтобы определить, является ли он хорошо сформированным, возвращать тип экземпляра или, если это экземпляр коллекции, возвращать конкретный geometry экземпляр.
Для возврата типа экземпляра геометрии
STGeometryType (тип данных Geometry)
Определение того, является ли геометрия заданным типом экземпляра
InstanceOf (тип данных geometry)
Определение корректного формирования экземпляра геометрии для его типа
STIsValid (тип данных geometry)
Преобразовать геометрический экземпляр в корректно сформированный экземпляр геометрии с указанием типа экземпляра
MakeValid (тип данных geometry)
Чтобы вернуть число геометрий в экземпляре коллекции геометрий
STNumGeometries (тип данных geometry)
Чтобы вернуть определенную геометрию в объекте коллекции геометрий
STGeometryN (тип данных geometry)STGeometryN (тип данных geometry)
Количество точек
Все непустые экземпляры geometry состоят из точек. Эти точки представляют координаты X-и Y плоскости, на которой рисуются геометрии.
geometry предоставляет множество встроенных методов для запроса точек экземпляра.
Для возвращения количества точек, составляющих инстанцию
STNumPoints (тип данных geometry)
Вернуться к конкретной точке в экземпляре
STPointN
Вернуть произвольную точку, лежащую на экземпляре
STPointOnSurface
Возврат начальной точки экземпляра
STStartPoint
Вернуть конечную точку экземпляра
STEndpoint
Чтобы вернуть X-координату экземпляра точки
STX (тип данных Geometry)
Для возврата Y-координаты объекта Point
ЯЧМЕНЬ
Чтобы вернуть геометрический центр экземпляра Polygon, CurvePolygon или MultiPolygon
STCentroid
Размерность
Экземпляр nonempty geometry может быть 0-, 1-или 2-мерным. Нумерная, geometriesнапример PointMultiPoint, не имеет длины или области. Одномерные объекты, такие как LineString, CircularString, CompoundCurve, и MultiLineStringимеют длину. Двухмерные экземпляры, такие как PolygonCurvePolygon, и MultiPolygonимеют область и длину. Пустые экземпляры будут сообщать о размере -1, а GeometryCollection будет сообщать о размере, зависящем от типов его содержимого.
Вернуть размерность экземпляра
STDimension
Чтобы вернуть длину экземпляра
STLength
Вычисление площади экземпляра
STArea
Пусто
geometry
Пустой экземпляр не имеет точек. Длина пустых LineString, CircularStringCompoundCurveMultiLineString и экземпляров равна нулю. Площадь пустых Polygon, CurvePolygon, и MultiPolygon экземпляров — 0.
Определение того, является ли экземпляр пустым
STIsEmpty.
Простой
geometry Чтобы экземпляр был простым, он должен соответствовать обоим из следующих требований:
Каждая фигура экземпляра не должна пересекаться, за исключением конечных точек.
Ни один из двух цифр экземпляра не может пересекаться друг с другом в точке, которая не находится в обеих их границах.
Замечание
Пустые геометрии всегда просты.
Чтобы определить, является ли экземпляр простым
STIsSimple.
Граница, интерьер и внешний вид
Внутреннее пространство экземпляра geometry занимает место, занятое экземпляром, а внешний — пространство, не занятое им.
Граница определяется OGC следующим образом:
PointиMultiPointэкземпляры не имеют границы.LineStringиMultiLineStringграницы формируются начальными и конечными точками, удаляя те, которые встречаются чётное число раз.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 1, 0 0, 1 0, 0 1), (1 1, 1 0))');
SELECT @g.STBoundary().ToString();
Граница экземпляра PolygonMultiPolygon — это набор его кругов.
DECLARE @g geometry;
SET @g = geometry::Parse('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))');
SELECT @g.STBoundary().ToString();
Чтобы вернуть границу экземпляра
Граница ST
Конверт
Конверт экземпляраgeometry, также известный как ограничивающий прямоугольник, представляет собой прямоугольник, выровненный по оси, сформированный минимальными и максимальными координатами экземпляра (X,Y).
Вернуть конверт экземпляра
STEnvelope
Замыкание
Закрытыйgeometry экземпляр — это фигура, начальная точка и конечные точки которых совпадают.
Polygon инстанции считаются закрытыми.
Point экземпляры не закрываются.
Кольцо — это простой закрытый LineString экземпляр.
Чтобы определить, закрыт ли экземпляр
STIsClosed
Определение того, является ли экземпляр кольцом
STIsRing
Чтобы вернуть внешнее кольцо экземпляра Polygon
STExteriorRing
Для возврата количества внутренних колец многоугольника
STNumInteriorRing
Возврат указанного внутреннего кольца многоугольника
STInteriorRingN
Идентификатор пространственной ссылки (SRID)
Идентификатор пространственной ссылки (SRID) — это идентификатор, указывающий, в какой системе geometry координат представлен экземпляр. Два экземпляра с разными идентификаторами ШРИ являются несопоставимыми.
Установка или возврат SRID экземпляра
STSrid
Это свойство можно изменить.
Определение связей между геометрическими экземплярами
Тип geometry данных предоставляет множество встроенных методов, которые можно использовать для определения связей между двумя geometry экземплярами.
Определение того, являются ли два экземпляра одинаковым набором точек
STEquals
Определение того, являются ли два экземпляра несвязанными
STDisjoint
Чтобы определить, пересекаются ли два объекта
STIntersects
Чтобы определить, касаются ли два экземпляра
STTouches
Определение перекрытия двух экземпляров
STOverlaps
Чтобы определить, пересекаются ли два объекта
STCrosses
Определение того, находится ли один экземпляр в другом
STWithin
Определение того, содержит ли один экземпляр другой
STContains
Определить, перекрывается ли один экземпляр другим
STOverlaps
Определение того, связаны ли два экземпляра пространственно
STRelate
Определение короткого расстояния между точками в двух геометриях
STDistance
Объекты геометрии имеют значение по умолчанию нулевой SRID
Значение SRID по умолчанию для geometry экземпляров в SQL Server равно 0. При использовании пространственных данных конкретный SRID пространственного экземпляра не обязателен для выполнения вычислений, и экземпляры могут находиться в неопределенном плоскостном пространстве. Чтобы указать неопределенное плановое пространство в вычислениях geometry методов типа данных, ядро СУБД SQL Server использует SRID 0.
Примеры
В следующих двух примерах показано, как добавлять и запрашивать данные геометрии.
В первом примере создается таблица со столбцом идентификатора и столбцом
geometryGeomCol1. Третий столбец преобразует столбецgeometryв его текстовое представление (WKT) Открытого геопространственного консорциума (OGC) Well-Known и использует метод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();