Создание, проектирование и создание запросов к экземплярам типа данных geography
Тип пространственных данных geography представляет данные в системе координат круглой земли. Этот тип реализован как тип данных среды CLR .NET в SQL Server. Тип данных SQL Server geography сохраняет эллиптические данные (в системе координат круглой земли), такие как координаты широты и долготы в системе GPS.
Тип geography является стандартным и доступен в каждой базе данных. В таблице можно создать столбцы типа geography и обращаться с данными geography так же, как с данными других предусмотренных в системе типов.
В этом разделе
Создание или построение нового экземпляра географического объекта
Создание нового экземпляра географического объекта из существующего экземпляра
Построение экземпляра географического объекта на основе входных данных в формате Well-Known Text
Построение экземпляра географического объекта на основе входных данных в формате Well-Known Binary
Построение экземпляра географического объекта на основе входных данных в формате GML Text
Получение данных в формате Well-Known Text и Well-Known Binary из экземпляра географического объекта
Выполнение запроса к свойствам и методам экземпляров географических объектов
Допустимость, тип экземпляра и сведения GeometryCollection
Число точек
Измерение
Пустой
Замыкание
Идентификатор пространственной ссылки (SRID)
Определение связей между экземплярами географических объектов
Обязательное использование поддерживаемых SRID в экземплярах географических объектах
Примеры
[В начало]
Создание или построение нового экземпляра географического объекта
Создание нового экземпляра географического объекта из существующего экземпляра
Тип данных geography содержит множество встроенных методов, с помощью которых можно создавать новые объекты geography на основе существующих.
Создание буфера вокруг географического объекта
STBuffer (тип данных geography)Создание буфера вокруг географического объекта с допуском
BufferWithTolerance (тип данных geography)Создание географического объекта из пересечения двух географических объектов
STIntersection (тип данных geography)Создание географического объекта из объединения двух географических объектов
STUnion (тип данных geography)Создание географического объекта из точек, в которых один объект не пересекается с другим
STDifference (тип данных geography)
Построение экземпляра географического объекта на основе входных данных в формате Well-Known Text
Тип данных geography предоставляет несколько встроенных методов, позволяющих создать экземпляр типа geography на основе представления Open Geospatial Consortium (OGC) WKT. Стандарт WKT представляет собой текстовую строку, позволяющую осуществлять обмен географическими данными в текстовой форме.
Создание экземпляра географического объекта любого типа на основе входных данных в формате WKT
STGeomFromText (географический тип данных)Создание экземпляра географического объекта Point на основе входных данных в формате WKT
STPointFromText (географический тип данных)Создание экземпляра географического объекта MultiPoint на основе входных данных в формате WKT
STMPointFromText (географический тип данных)Создание экземпляра географического объекта LineString на основе входных данных в формате WKT
STLineFromText (географический тип данных)Создание экземпляра географического объекта MultiLineString на основе входных данных в формате WKT
STMLineFromText (географический тип данных)Создание экземпляра географического объекта Polygon на основе входных данных в формате WKT
STPolyFromText (географический тип данных)Создание экземпляра географического объекта MultiPolygon на основе входных данных в формате WKT
STMPolyFromText (географический тип данных)Создание экземпляра географического объекта GeometryCollection на основе входных данных в формате WKT
STGeomCollFromText (географический тип данных)
Построение экземпляра географического объекта на основе входных данных в формате Well-Known Binary
WKB представляет собой описанный консорциумом OGC двоичный формат, позволяющий осуществлять обмен данными типа Geography между клиентскими приложениями и базой данных SQL. С помощью следующих функций создаются экземпляры географических объектов на основе входных данных WKB:
Создание экземпляра географического объекта любого типа на основе входных данных в формате WKB
STGeomFromWKB (географический тип данных)Создание экземпляра географического объекта Point на основе входных данных в формате WKB
STPointFromWKB (географический тип данных)Создание экземпляра географического объекта MultiPoint на основе входных данных в формате WKB
STMPointFromWKB (географический тип данных)Создание экземпляра географического объекта LineString на основе входных данных в формате WKB
STLineFromWKB (тип данных geography)Создание экземпляра географического объекта MultiLineString на основе входных данных в формате WKB
STMLineFromWKB (географический тип данных)Создание экземпляра географического объекта Polygon на основе входных данных в формате WKB
STPolyFromWKB (географический тип данных)Создание экземпляра географического объекта MultiPolygon на основе входных данных в формате WKB
STMPolyFromWKB (географический тип данных)Создание экземпляра географического объекта GeometryCollection на основе входных данных в формате WKB
STGeomCollFromWKB (географический тип данных)STGeomCollFromWKB (географический тип данных)
Построение экземпляра географического объекта на основе входных данных в формате GML Text
Тип данных geometry предоставляет метод, с помощью которого создается экземпляр geography на основе GML, XML-представления экземпляров geography. SQL Server поддерживает подмножество GML.
Дополнительные сведения о языке GML см. в спецификации OGC: Спецификации OGC, язык GML.
- Создание экземпляра географического объекта любого типа на основе входных данных в формате GML
GeomFromGML (тип данных geography)
Получение данных в формате Well-Known Text и Well-Known Binary из экземпляра географического объекта
Можно использовать следующие методы для получения данных экземпляра geography в формате WKT или формате WKB:
Возврат WKT-представления экземпляра географического объекта
STAsText (тип данных geography)Получение представления экземпляра географического объекта в формате WKT, включая все значения Z и M
AsTextZM (тип данных geography)Возврат WKB-представления экземпляра географического объекта
STAsBinary (тип данных geography)Возврат GML-представления экземпляра географического объекта
AsGml (тип данных geography)
Выполнение запроса к свойствам и методам экземпляров географических объектов
Все экземпляры geography обладают рядом свойств, получить которые можно с помощью методов, предоставляемых в SQL Server. В следующих разделах определяются свойства и поведение географических типов, а также методы запросов к каждому из них.
Допустимость, тип экземпляра и сведения GeometryCollection
Когда экземпляр geography создан, можно использовать следующие методы, чтобы получить типа экземпляра или, если это экземпляр GeometryCollection, конкретный экземпляр geography.
Возврат типа географического экземпляра
STGeometryType (тип данных geography)Определение принадлежности географического экземпляра к заданному типу
InstanceOf (тип данных geography)Проверка соответствия формата экземпляра географического объекта его типу
STNumGeometries (тип данных geography)Возврат конкретного географического экземпляра из экземпляра GeometryCollection
STGeometryN (тип данных geography)STGeometryN (тип данных geography)
Число точек
Все непустые экземпляры geography состоят из точек. Данные точки представляют координаты широты и долготы, соответствующие месту создания экземпляров geography. В типе данных geography предусмотрены многочисленные встроенные методы запросов к точкам экземпляра.
Получение числа точек, образующих экземпляр
STNumPoints (тип данных geography)Получение выбранной точки в экземпляре
STPointN (тип данных geometry)Получение начальной точки экземпляра
STStartPoint (тип данных geography)Получение конечной точки экземпляра
STEndpoint (тип данных geography)
Измерение
Непустой экземпляр объекта geography может быть 0-мерным, одномерным или двумерным. Экземпляры geography без измерений, например Point и MultiPoint, не имеют длины или площади. Одномерные объекты, такие как LineString, CircularString, CompoundCurve и MultiLineString, имеют длину. Двумерные объекты, такие как Polygon, CurvePolygon и MultiPolygon, имеют длину и площадь. В отчете пустых экземпляров указывается измерение -1, а в отчетах GeometryCollection — максимальное измерение содержимого.
Получение измерения экземпляра
Метод STDimension (тип данных geography)Получение длины экземпляра
STLength (тип данных geography)Получение площади экземпляра
STArea (тип данных geography)
Пустой экземпляр
Пустой экземплярgeography не имеет ни одной точки. Длина пустых экземпляров LineString, CircularString, CompoundCurve и MultiLineString равна 0. Площадь пустых экземпляров Polygon, CurvePolygon и MultiPolygon равна 0.
- Проверка, является ли экземпляр пустым
STIsEmpty (тип данных geography)
Замыкание
Замкнутый экземпляр geography — это фигура, начальная и конечная точки которой совпадают. Экземпляры Polygon считаются замкнутыми. Экземпляры Point не замкнуты.
Кольцо — это простой замкнутый экземпляр LineString.
Определение, является ли экземпляр замкнутым
STIsClosed (тип данных geography)Получение количества колец экземпляра объекта Polygon
NumRings (geography Data Type)Получение указанного кольца какого-либо географического объекта
RingN (тип данных geography)
Идентификатор пространственной ссылки (SRID)
Идентификатор пространственной ссылки (SRID) представляет собой идентификатор, указывающий на систему эллиптических координат, в которой находится экземпляр geography. Сравнение двух экземпляров geography с различными идентификаторами SRID невозможно.
- Задание или возврат идентификатора SRID экземпляра
STSrid (тип данных geography)
Это свойство можно изменять.
Определение связей между экземплярами географических объектов
Тип данных geography предоставляет множество встроенных методов, с помощью которых можно определить связи между двумя объектами типа geography.
Определение возможного наличия одинакового набора точек в двух объектах
STEquals (тип данных geometry)Определение отсутствия перекрытия двух объектов
STDisjoint (тип данных geometry)Определение пересечения двух объектов
STIntersects (тип данных geometry)Определение точки или точек пересечения двух объектов
STIntersection (тип данных geography)Определение кратчайшего расстояния между точками двух географических объектов
STDistance (тип данных geometry)Определение разницы в точках между двумя географическими объектами
STDifference (тип данных geography)Получение симметрической разницы (или уникальных точек) между двумя экземплярами географических объектов
STSymDifference (тип данных geography)
Обязательное использование поддерживаемых SRID в экземплярах географических объектах
В SQL Server поддерживаются идентификаторы SRID, основанные на стандартах EPSG. При выполнении вычислений или применении методов работы с географическими пространственными данными должны использоваться поддерживаемые SQL Server идентификаторы SRID для экземпляров geography. Заданный SRID должен соответствовать одному из идентификаторов SRID, отображенных в представлении каталога sys.spatial_reference_systems. Как было упомянуто ранее, результаты вычислений на пространственных данных с использованием типа данных geography зависят от эллипсоида, использованного при создании рабочих данных, поскольку каждому эллипсоиду назначается отдельный идентификатор пространственной ссылки (SRID).
При применении методов к экземплярам geography в SQL Server используется значение идентификатора SRID по умолчанию, равное 4326, соответствующее системе пространственных ссылок WGS 84. Если используются данные системы пространственных ссылок, отличной от WGS 84 (или если значение SRID отличается от 4326), для собственных географических пространственных данных необходимо определить отдельный идентификатор SRID.
Примеры
В следующих примерах иллюстрируется добавление и запрос географических данных.
В первом примере создается таблица со столбцом идентификаторов и столбцом 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
Во втором примере для получения точки, в которых пересекаются два вставленных ранее объекта geography, используется метод STIntersection().
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();