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) | Большой |
| GML | XML | Средняя | Да | Очень большой |
| KML | XML | Средняя | Да | Большой |
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 →