Well-Known Text¶
Well-Known Text (WKT, «хорошо известный текст») — это текстовый формат представления пространственных объектов и систем координат, разработанный для обмена геопространственными данными между различными информационными системами. WKT описывает геометрические фигуры (точки, линии, многоугольники) и их наборы, а также системы отсчёта (проекции, датумы, эллипсоиды) в виде удобочитаемых строк. Формат стандартизирован Международной организацией по стандартизации (ISO) и Консорциумом Open Geospatial Consortium (OGC) в рамках стандарта ISO 19125-1:2004 «Simple feature access — Part 1: Common architecture».
¶История и стандартизация
Формат WKT был впервые предложен в 1990-х годах компанией Oracle Corporation для использования в своей системе управления базами данных (СУБД) Oracle Spatial. В 1999 году OGC включил WKT в спецификацию «Simple Features Specification for SQL» (SFS), которая описывает способы хранения и запросов к геометрическим данным в реляционных базах данных. В 2004 году эта спецификация стала международным стандартом ISO 19125-1.
Развитие формата продолжилось в рамках стандарта ISO 19162:2015 «Geographic information — Well-known text representation of coordinate reference systems», который уточнил и расширил описание систем координат (CRS) в WKT. В 2019 году вышла вторая редакция этого стандарта (ISO 19162:2019), добавившая поддержку новых типов систем координат и улучшенную обработку параметров проекций.
¶Синтаксис и структура
WKT использует текстовые строки, где геометрические объекты описываются с помощью ключевых слов, скобок и числовых значений. Основные типы геометрии:
- Point (Точка) —
POINT (x y)— одна координатная пара. - LineString (Ломаная линия) —
LINESTRING (x1 y1, x2 y2, ..., xn yn)— последовательность точек, соединённых отрезками. - Polygon (Многоугольник) —
POLYGON ((x1 y1, x2 y2, ..., xn yn, x1 y1))— замкнутая фигура, заданная внешним кольцом и, опционально, внутренними кольцами (отверстиями). - MultiPoint (Набор точек) —
MULTIPOINT ((x1 y1), (x2 y2))— коллекция точек. - MultiLineString (Набор линий) —
MULTILINESTRING ((x1 y1, x2 y2), (x3 y3, x4 y4))— коллекция линий. - MultiPolygon (Набор многоугольников) —
MULTIPOLYGON (((x1 y1, ..., x1 y1)), ((x2 y2, ..., x2 y2)))— коллекция многоугольников. - GeometryCollection (Коллекция геометрий) —
GEOMETRYCOLLECTION (POINT (x y), LINESTRING (x1 y1, x2 y2), ...)— произвольный набор геометрических объектов разных типов.
Координаты обычно задаются в порядке (X, Y) для двумерных объектов, (X, Y, Z) для трёхмерных и (X, Y, M) для объектов с мерой (например, временем или высотой). Для систем координат (CRS) используется синтаксис, начинающийся с ключевого слова GEOGCS (географическая система координат) или PROJCS (проекционная система координат), с вложенными описаниями датума, эллипсоида, проекции и параметров.
¶Применение
WKT широко используется в геоинформационных системах (ГИС), базах данных и веб-сервисах для:
- Обмена данными — экспорт и импорт геометрии между различными программами (например, QGIS, ArcGIS, PostGIS, Oracle Spatial, Microsoft SQL Server).
- Хранения — в текстовых файлах (CSV, GeoJSON, XML) или в полях таблиц баз данных.
- Описания систем координат — в метаданных карт, слоёв и сервисов (например, в файлах .prj, сопровождающих шейп-файлы).
- Веб-картографирования — в API (например, OpenLayers, Leaflet) для задания геометрии пользовательских объектов.
В России WKT применяется в государственных информационных системах, таких как Единая электронная картографическая основа (ЕЭКО), а также в коммерческих ГИС-продуктах (например, «Панорама», «ИнГео»). При описании местных систем координат (например, СК-42, СК-95, МСК-XX) WKT позволяет точно задать параметры проекции и датума.
¶Примеры
Примеры строк WKT для различных геометрических объектов:
- Точка:
POINT (37.6173 55.7558)— координаты центра Москвы (долгота, широта). - Линия:
LINESTRING (30.0 10.0, 10.0 30.0, 40.0 40.0)— ломаная из трёх точек. - Многоугольник с отверстием:
POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0), (2 2, 8 2, 8 8, 2 8, 2 2))— квадрат с внутренним квадратным отверстием. - Набор точек:
MULTIPOINT ((10 40), (40 30), (20 20), (30 10))— четыре точки. - Система координат (WGS 84):
`` GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.01745329251994328, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4326"]] ``
¶Критика и ограничения
Несмотря на широкое распространение, WKT имеет ряд недостатков:
- Избыточность — текстовое представление занимает больше места, чем бинарные форматы (например, Well-Known Binary, WKB).
- Отсутствие строгой типизации — в ранних версиях не было чёткого разделения между двумерными и трёхмерными объектами, что приводило к ошибкам при интерпретации.
- Сложность синтаксиса для CRS — описание систем координат громоздко и трудночитаемо, особенно для проекций с большим числом параметров.
- Проблемы с точностью — при преобразовании между WKT и внутренними форматами (например, с плавающей запятой) возможна потеря точности для очень больших или очень малых чисел.
В ответ на эти ограничения были разработаны альтернативные форматы, такие как GeoJSON (более компактный, но менее гибкий для CRS) и WKB (бинарный, более эффективный для хранения и передачи). Тем не менее WKT остаётся стандартом де-факто для описания систем координат и простых геометрий в ГИС-сообществе.
¶Интересные факты
- WKT поддерживается в большинстве современных СУБД, включая PostgreSQL (расширение PostGIS), MySQL (начиная с версии 5.7), Oracle Spatial и Microsoft SQL Server.
- Формат WKT используется в стандарте GeoPackage (OGC) для хранения геометрии в бинарном виде (WKB), но текстовое представление (WKT) применяется в метаданных.
- В 2018 году OGC выпустил спецификацию «Well-Known Text Representation of Coordinate Reference Systems (WKT-CRS)», которая стала основой для нового стандарта ISO 19162:2019.
- В России WKT активно применяется при создании цифровых топографических карт и планов, а также в системах автоматизированного проектирования (САПР) для задач землеустройства и кадастра.
¶Источники
- ISO 19125-1:2004 «Geographic information — Simple feature access — Part 1: Common architecture»
- ISO 19162:2019 «Geographic information — Well-known text representation of coordinate reference systems»
- Open Geospatial Consortium (OGC) — «Simple Features Specification for SQL» (1999)
- Oracle Corporation — «Oracle Spatial and Graph Developer's Guide» (2019)
- PostGIS Documentation — «Geometry Input/Output» (2023)
- «Well-Known Text» — статья в Википедии (англ.)