Поделиться через


Создание, проектирование и создание запросов к экземплярам типа данных 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 на основе существующих.

Построение экземпляра географического объекта на основе входных данных в формате Well-Known Text

Тип данных geography предоставляет несколько встроенных методов, позволяющих создать экземпляр типа geography на основе представления Open Geospatial Consortium (OGC) WKT. Стандарт WKT представляет собой текстовую строку, позволяющую осуществлять обмен географическими данными в текстовой форме.

Построение экземпляра географического объекта на основе входных данных в формате Well-Known Binary

WKB представляет собой описанный консорциумом OGC двоичный формат, позволяющий осуществлять обмен данными типа Geography между клиентскими приложениями и базой данных SQL. С помощью следующих функций создаются экземпляры географических объектов на основе входных данных WKB:

Построение экземпляра географического объекта на основе входных данных в формате 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:

Выполнение запроса к свойствам и методам экземпляров географических объектов

Все экземпляры geography обладают рядом свойств, получить которые можно с помощью методов, предоставляемых в SQL Server. В следующих разделах определяются свойства и поведение географических типов, а также методы запросов к каждому из них.

Допустимость, тип экземпляра и сведения GeometryCollection

Когда экземпляр geography создан, можно использовать следующие методы, чтобы получить типа экземпляра или, если это экземпляр GeometryCollection, конкретный экземпляр geography.

Число точек

Все непустые экземпляры geography состоят из точек. Данные точки представляют координаты широты и долготы, соответствующие месту создания экземпляров geography. В типе данных geography предусмотрены многочисленные встроенные методы запросов к точкам экземпляра.

Измерение

Непустой экземпляр объекта geography может быть 0-мерным, одномерным или двумерным. Экземпляры geography без измерений, например Point и MultiPoint, не имеют длины или площади. Одномерные объекты, такие как LineString, CircularString, CompoundCurve и MultiLineString, имеют длину. Двумерные объекты, такие как Polygon, CurvePolygon и MultiPolygon, имеют длину и площадь. В отчете пустых экземпляров указывается измерение -1, а в отчетах GeometryCollection — максимальное измерение содержимого.

Пустой экземпляр

Пустой экземплярgeography не имеет ни одной точки. Длина пустых экземпляров LineString, CircularString, CompoundCurve и MultiLineString равна 0. Площадь пустых экземпляров Polygon, CurvePolygon и MultiPolygon равна 0.

Замыкание

Замкнутый экземпляр geography — это фигура, начальная и конечная точки которой совпадают. Экземпляры Polygon считаются замкнутыми. Экземпляры Point не замкнуты.

Кольцо — это простой замкнутый экземпляр LineString.

Идентификатор пространственной ссылки (SRID)

Идентификатор пространственной ссылки (SRID) представляет собой идентификатор, указывающий на систему эллиптических координат, в которой находится экземпляр geography. Сравнение двух экземпляров geography с различными идентификаторами SRID невозможно.

Это свойство можно изменять.

Определение связей между экземплярами географических объектов

Тип данных geography предоставляет множество встроенных методов, с помощью которых можно определить связи между двумя объектами типа 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();
    

См. также

Основные понятия

Пространственные данные (SQL Server)