Открыть сервис

WKT

WKT (от англ. Well-Known Text) — это текстовый формат представления пространственных (геометрических) объектов, определённый стандартом Open Geospatial Consortium (OGC). Используется для описания точек, линий, многоугольников, а также их коллекций и трёхмерных вариантов в системах географических информационных систем (ГИС), базах данных и при обмене данными между различными программными продуктами. WKT является человекочитаемым и машинно-обрабатываемым форматом, который служит альтернативой бинарным форматам, таким как WKB (Well-Known Binary).

История

Формат WKT был впервые стандартизирован в 1999 году в рамках спецификации OGC Simple Features Access (ISO 19125). Разработка велась консорциумом Open Geospatial Consortium (OGC), который объединяет более 500 организаций (включая государственные учреждения, университеты и частные компании) для создания открытых стандартов в области геопространственных данных. Первоначально WKT предназначался для описания двумерных геометрий в декартовой системе координат, но со временем был расширен для поддержки трёхмерных и четырёхмерных объектов (включая меры — M-координаты).

В 2010-х годах стандарт был дополнен поддержкой кривых (например, дуг окружностей) и сложных поверхностей. В 2021 году OGC выпустил версию 2.0 стандарта Simple Features, где WKT получил уточнения для работы с системами координат (CRS) и временными измерениями. На сегодняшний день WKT является обязательным форматом для многих ГИС-продуктов, включая PostGIS, QGIS, ArcGIS, а также для библиотек, таких как Shapely (Python) и JTS (Java).

Структура и синтаксис

WKT представляет собой строку, состоящую из ключевого слова, обозначающего тип геометрии, и набора координат в скобках. Координаты разделяются пробелами, а точки — запятыми. Основные типы геометрий:

  • POINT — точка (одна пара координат).
  • LINESTRING — линия (последовательность точек).
  • POLYGON — многоугольник (внешний контур и, опционально, внутренние отверстия).
  • MULTIPOINT — набор точек.
  • MULTILINESTRING — набор линий.
  • MULTIPOLYGON — набор многоугольников.
  • GEOMETRYCOLLECTION — коллекция разнородных геометрий.

Примеры:

  • POINT (30.5 45.2) — точка с долготой 30.5 и широтой 45.2.
  • LINESTRING (0 0, 10 10, 20 0) — ломаная линия из трёх точек.
  • POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0)) — квадрат.
  • MULTIPOLYGON (((0 0, 10 0, 10 10, 0 10, 0 0)), ((20 20, 30 20, 30 30, 20 30, 20 20))) — два квадрата.

Для трёхмерных объектов добавляется суффикс Z (например, POINT Z (1 2 3)), для объектов с мерой — M (например, POINT M (1 2 100)), для комбинированных — ZM. В версии 2.0 стандарта также поддерживаются кривые, такие как CIRCULARSTRING (дуга окружности) и COMPOUNDCURVE (составная кривая).

Применение

В базах данных

WKT широко используется в пространственных расширениях реляционных баз данных. Например, в PostgreSQL с расширением PostGIS, в MySQL, Oracle Spatial и SQL Server. Функции ST_GeomFromText() и ST_AsText() позволяют преобразовывать WKT-строки в геометрические объекты и обратно. Это упрощает импорт и экспорт данных, а также ручное редактирование.

В ГИС-программах

  • QGIS (свободная ГИС) поддерживает импорт/экспорт WKT через буфер обмена и текстовые файлы.
  • ArcGIS (проприетарная ГИС, разрабатываемая Esri) использует WKT для описания проекций и систем координат в формате .prj.
  • Google Earth Engine и Mapbox принимают WKT для задания геометрий запросов.

В программировании

Библиотеки на языках Python, Java, C++ и JavaScript предоставляют функции для парсинга и генерации WKT. Например, в Python библиотека Shapely позволяет создавать объекты из WKT: from shapely.wkt import loads; point = loads("POINT (1 2)"). В Java аналогичную функциональность предоставляет библиотека JTS (Java Topology Suite).

В геодезии и картографии

WKT используется для описания систем координат (CRS) в формате Well-Known Text for Coordinate Reference Systems (WKT-CRS). Этот подформат определяет эллипсоид, проекцию, датум и параметры трансформации. Например, для системы WGS 84 (EPSG:4326) WKT-CRS может выглядеть так: GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433]].

Преимущества и недостатки

Преимущества

  • Человекочитаемость — данные могут быть просмотрены и отредактированы в любом текстовом редакторе.
  • Стандартизация — единый формат, поддерживаемый большинством ГИС-продуктов.
  • Компактность — для простых геометрий WKT занимает меньше места, чем XML-форматы (например, GML).
  • Расширяемостьподдержка трёхмерных и временных данных.

Недостатки

  • Отсутствие сжатия — для сложных объектов (например, с тысячами вершин) WKT-строки становятся громоздкими.
  • Чувствительность к синтаксису — лишние пробелы или неправильный порядок скобок приводят к ошибкам парсинга.
  • Ограниченная точность — координаты записываются в десятичной системе, что может привести к потере точности при округлении (например, для высокоточных геодезических данных).
  • Отсутствие метаданных — WKT не содержит информации о системе координат, времени создания или атрибутах объекта (для этого требуется отдельный формат, например, GeoJSON).

Сравнение с другими форматами

ФорматТипЧитаемостьПоддержка CRSРазмер файла
WKTТекстовыйВысокаяДа (через WKT-CRS)Средний
WKBБинарныйНизкаяНетМалый
GeoJSONТекстовый (JSON)ВысокаяДа (через crs)Большой
GMLXMLСредняяДаОчень большой
KMLXMLСредняяДаБольшой

WKT предпочтителен для быстрого обмена простыми геометриями, в то время как GeoJSON и GML лучше подходят для сложных структур с атрибутами.

Интересные факты

  • Формат WKT лежит в основе стандарта Simple Features OGC, который также определяет WKB (бинарный аналог) и SQL-функции для работы с геометрией.
  • В 2019 году в стандарт OGC были добавлены типы TIN (триангуляционная нерегулярная сеть) и POLYHEDRALSURFACE (многогранная поверхность), которые используются в 3D-моделировании.
  • WKT-строки могут быть вложенными: например, GEOMETRYCOLLECTION(POINT(1 2), LINESTRING(3 4, 5 6)).
  • В некоторых ГИС (например, в PostGIS) WKT используется для описания пространственных индексов и оптимизации запросов.

Источники

  • Open Geospatial Consortium. Simple Feature Access — Part 1: Common Architecture (ISO 19125-1:2004).
  • Open Geospatial Consortium. Well-known text representation of coordinate reference systems (OGC 12-063r5).
  • PostGIS Documentation. Geometry Input/Output Functions.
  • Shapely Documentation. Well-Known Text (WKT).
  • Esri. ArcGIS Help: Well-Known Text (WKT) for coordinate systems.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →