Типи просторових даних, Microsoft Docs

Існує два типи просторових даних. Тип даних geometry використовується для планарних чи евклідових даних. Тип даних geometry відповідає специфікації консорціуму OGC "Simple Features for SQL" версії 1.1.0.

Крім того, SQL Server підтримує тип даних geography, який використовується для зберігання еліптичних даних, таких як координати GPS широти та довготи.

Типи даних geometry та geography підтримують одинадцять просторових об'єктів або типів екземплярів. Однак лише сім із цих типів екземплярів є інстанційними; такі екземпляри можна створювати в базі даних та працювати з ними. Ці екземпляри успадковують деякі властивості від батьківських типів даних, які дозволяють розрізняти їх як Points, LineStrings, Polygons або кілька екземплярів geometry або geography в GeometryCollection.

На малюнку нижче зображено ієрархію geometry, на якій засновані типи даних geometry та geography. Інстанційні типи geometry та geography виділені синім.

даних

Як показано на малюнку, сімома інстанційними типами geometry та geography є Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon та GeometryCollection. Типи geometry та geography можуть розпізнавати певний екземпляр, якщо він має правильний формат, навіть у тому випадку, якщо він не був явно визначений. Наприклад, якщо визначити екземпляр Point явно за допомогою методуSTPointFromText(), то типи geometry та geography будуть розпізнавати екземпляр як Point, якщо вхідні дані методу мали правильний формат. Якщо визначити такий самий екземпляр за допомогою методу STGeomFromText(), то обидва типи даних geometry та geography будуть розпізнавати екземпляр як Point.

Додаткові відомості процих примірниках див. у наступних розділах:

Відмінність двох типів даних

Два типи просторових даних часто демонструють однакову поведінку, однак вони мають ряд ключових відмінностей у способі зберігання та управління даними.

Як визначаються межі з'єднання

Визначальними даними для типів LineString та Polygon можуть бути лише вершини. Кордоном з'єднання між двома вершинами у типі geometry є пряма лінія. Однак межею з'єднання між двома вершинами у типі geography є коротка велика еліптична крива, прокладена між вершинами. Великий еліпс являє собою перетин еліпсоїда з площиною, що проходить через його центр, а велика еліптична крива є сегментом кривої на великому еліпсі.

Вимірювання у просторових типах даних

У планарної моделі (чи моделі плоскої Землі) вимір відстаней і площ проводять у таких одиницях виміру, у яких представляються координати. При використанні типу даних geometry відстань між точками (2, 2) і (5, 6) становить 5 одиниць, незалежно від одиниць, що використовуються.

В еліптичній моделі, або моделі круглої Землі, координати вказуються в градусах довготи та широти. Однак довжини та площі зазвичай вимірюються в метрах і квадратних метрах, хоча виміри можуть залежати від ідентифікатора просторового посилання (SRID) екземпляра geography. Найпоширенішою одиницею вимірювання типу даних geography є метр.

Орієнтація просторових об'єктів

У планарній системі орієнтація кільця багатокутника є несуттєвим чинником. Наприклад, багатокутник ((0, 0), (10, 0), (0, 20), (0, 0)) ідентичний багатокутнику ((0, 0), (0, 20), (10, 0), ( 0, 0)). Специфікація "Simple Features for SQL"консорціум OGC не визначає положення кільця, а SQL Server його не враховує.

В еліптичній моделі без вказівки орієнтації багатокутник не визначений чи є неоднозначним. Наприклад, чи описує кільце навколо екватора північну чи південну півкулю? При використанні типу даних geography для зберігання просторового екземпляра необхідно вказати орієнтацію кільця та точно описати розташування екземпляра.

У SQL Server 2008 діють такі обмеження використання типу даних geography.

Будь-який екземпляр geography повинен лежати в межах однієї півкулі. Не дозволяється збереження просторових об'єктів більше розміру півкулі.

Будь-який екземпляр geography у поданні консорціуму OGC Well-Known Text (WKT) або Well-Known Binary (WKB), що породжує об'єкт більше півкулі, призводить до виникнення виключення ArgumentException.

Методи типу даних geography, що вимагають вказівки двох екземплярів geography, такі якSTIntersection(),STUnion(),STDifference() таSTSymDifference(), повернуть NULL, якщо результати методів не вміщаються в одній півкулі.STBuffer() також повертає NULL, якщо вихідні дані не вміщаються в одній півкулі.

Зовнішнє та внутрішнє кільце не важливі для типу даних.

У специфікації «Simple Features for SQL» консорціуму OGC обговорюються зовнішні та внутрішні кільця, але їхня відмінність не має значення для типу даних SQL Servergeography: будь-яке кільце багатокутника можна вважати зовнішнім кільцем.

Щоб отримати додаткові відомості про специфікації OGC, див.