WKT
Well-known text (WKT) — це текстова мова розмітки для представлення об'єктів векторної геометрії. Існує бінарний еквівалент, відомий як well-known binary (WKB), який використовується для передачі та зберігання тієї ж інформації у більш компактній формі, зручній для комп'ютерної обробки, але нечитабельній для людини. Формати були спочатку визначені Open Geospatial Consortium (OGC) і описані в їхньому Simple Feature Access.[1] Поточне стандартне визначення знаходиться в стандарті ISO/IEC 13249-3:2016.[2]
WKT може представляти наступні різні геометричні об'єкти:
- Point, MultiPoint (Точка, Мульти Точка)
- LineString, MultiLineString (Лінія, Мульти Лінія)
- Polygon, MultiPolygon, Triangle (Полігон, Мульти Полігон, Трикутник)
- PolyhedralSurface (Багатогранник)
- TIN (Тріангуляційна нерегулярна мережа)
- GeometryCollection (Набір Геометрій)
Координати для геометрій можуть бути 2D (x, y), 3D (x, y, z), 4D (x, y, z, m) зі значенням m, яке є частиною лінійної системи відліку, або 2D зі значенням m (x, y, m). Тривимірні геометрії позначаються літерою «Z» після типу геометрії, а геометрії з лінійною системою відліку мають літеру «M» після типу геометрії. Порожні геометрії, які не містять координат, можуть бути вказані за допомогою символу EMPTY
після назви типу.
Геометрії WKT використовуються у всіх специфікаціях OGC і присутні в застосунках, які реалізують ці специфікації. Наприклад, PostGIS містить функції, які можуть конвертувати геометрії в та з представлення WKT, роблячи їх читабельними для людини.
Стандартне визначення OGC вимагає, щоб полігон був топологічно замкнутим. Також зазначається, що якщо зовнішнє кільце полігону визначено в проти годинникової стрілки, то воно буде видно з «зовні». Будь-які внутрішні кільця повинні бути визначені в протилежному напрямку порівняно із зовнішнім кільцем, у цьому випадку за годинниковою стрілкою.[3]
Тип | Приклади | |
---|---|---|
Точка | POINT (30 10)
| |
Лінія | LINESTRING (30 10, 10 30, 40 40)
| |
Полігон | POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
| |
POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),
|
Тип | Приклади | |
---|---|---|
MultiPoint | MULTIPOINT ((10 40), (40 30), (20 20), (30 10))
| |
MULTIPOINT (10 40, 40 30, 20 20, 30 10)
| ||
MultiLineString | MULTILINESTRING ((10 10, 20 20, 10 40),
| |
MultiPolygon | MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),
| |
MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),
| ||
GeometryCollection | GEOMETRYCOLLECTION (POINT (40 10),
|
Нижче наведено деякі інші приклади рядків WKT для опису геометрії: (Примітка: Кожен елемент нижче є окремою геометрією.)
GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))
POINT ZM (1 1 5 60)
POINT M (1 1 80)
POINT EMPTY
MULTIPOLYGON EMPTY
TRIANGLE((0 0 0,0 1 0,1 1 0,0 0 0))
TIN (((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)))
POLYHEDRALSURFACE Z ( PATCHES
((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)),
((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)),
((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
((1 1 1, 1 0 1, 0 0 1, 0 1 1, 1 1 1)),
((1 1 1, 1 0 1, 1 0 0, 1 1 0, 1 1 1)),
((1 1 1, 1 1 0, 0 1 0, 0 1 1, 1 1 1))
)
Well-known binary (WKB) представлення зазвичай показуються у вигляді шістнадцяткових рядків.
Перший байт вказує на порядок байтів для даних:
0x00
: big endian0x01
: little endian
Наступні 4 байти є 32-бітним беззнаковим цілим числом для типу геометрії, як описано нижче:
Тип | 2D | Z | M | ZM |
---|---|---|---|---|
Geometry | 0 |
1000 |
2000 |
3000
|
Point | 1 |
1001 |
2001 |
3001
|
LineString | 2 |
1002 |
2002 |
3002
|
Polygon | 3 |
1003 |
2003 |
3003
|
MultiPoint | 4 |
1004 |
2004 |
3004
|
MultiLineString | 5 |
1005 |
2005 |
3005
|
MultiPolygon | 6 |
1006 |
2006 |
3006
|
GeometryCollection | 7 |
1007 |
2007 |
3007
|
CircularString | 8 |
1008 |
2008 |
3008
|
CompoundCurve | 9 |
1009 |
2009 |
3009
|
CurvePolygon | 10 |
1010 |
2010 |
3010
|
MultiCurve | 11 |
1011 |
2011 |
3011
|
MultiSurface | 12 |
1012 |
2012 |
3012
|
Curve | 13 |
1013 |
2013 |
3013
|
Surface | 14 |
1014 |
2014 |
3014
|
PolyhedralSurface | 15 |
1015 |
2015 |
3015
|
TIN | 16 |
1016 |
2016 |
3016
|
Triangle | 17 |
1017 |
2017 |
3017
|
Circle | 18 |
1018 |
2018 |
3018
|
GeodesicString | 19 |
1019 |
2019 |
3019
|
EllipticalCurve | 20 |
1020 |
2020 |
3020
|
NurbsCurve | 21 |
1021 |
2021 |
3021
|
Clothoid | 22 |
1022 |
2022 |
3022
|
SpiralCurve | 23 |
1023 |
2023 |
3023
|
CompoundSurface | 24 |
1024 |
2024 |
3024
|
BrepSolid |
|
1025 |
|
|
AffinePlacement | 102 |
1102 |
|
|
Кожен тип даних має унікальну структуру даних, таку як кількість точок або лінійних кілець, за якими слідують координати у форматі 64-бітних чисел з рухомою комою.
Наприклад, геометрія POINT(2.0 4.0)
представлена як: 000000000140000000000000004010000000000000
, де:
- 1-байтове ціле число
00
або 0: big endian - 4-байтове ціле число
00000001
або 1: POINT (2D) - 8-байтове число з рухомою комою
4000000000000000
або 2.0: x-координата - 8-байтове число з рухомою комою
4010000000000000
або 4.0: y-координата
- EWKT та EWKB — Extended Well-Known Text/Binary
- Специфічний формат PostGIS, який включає ідентифікатор системи просторових координат (SRID) та до 4 ординатних значень (XYZM).[4][5] Наприклад:
SRID=4326;POINT(-44.3 60.1)
для визначення координати довготи/широти з використанням WGS 84 системи координат. Він також підтримує кругові криві, слідуючи елементам, названим (але не повністю визначеним) у початковому WKT: CircularString, CompoundCurve, CurvePolygon та CompoundSurface.[6] - AGF Text — Autodesk Geometry Format
- Розширення до OGC's Standard (на той час), щоб включити криволінійні елементи; найбільш помітно використовується в MapGuide.[7]
- Simple Features
- Geography Markup Language
- Well-known text representation of coordinate reference systems
- ↑ Herring, John R., ред. (28 травня 2011), OpenGIS® Implementation Standard for Geographic information – Simple feature access – Part 1: Common architecture, № OGC 06-103r4, Open Geospatial Consortium, процитовано 28 січня 2019
- ↑ Information technology – Database languages – SQL multimedia and application packages – Part 3: Spatial, № ISO/IEC 13249-3:2016 (вид. 5th), ISO, 15 січня 2016, процитовано 28 січня 2019
- ↑ Див. OGC Implementation Specification for geographic information — Simple Feature Access, section 6.1.11.1. http://www.opengeospatial.org/standards/sfa
- ↑ Postgis/Postgis. GitHub. 6 жовтня 2021.
- ↑ ST_GeomFromEWKT. Процитовано 25 листопада 2022.
- ↑ Chapter 4: Using PostGIS: Data Management and Queries. postgis.net. Процитовано 30 липня 2021.
- ↑ MapGuide API Reference: AGF Text. Процитовано 14 вересня 2023.