WKT

WKT (Well-known text) — текстовый формат представления векторной геометрии и описания систем координат. Для хранения этой же информации в базах данных используется двоичный эквивалентный формат- WKB (Well-Known Binary). Форматы являются частью технологии "Simple Feature Access", созданной для предоставления общего интерфейса для обмена пространственными данными между различными программами и сервисами.

WKT
Расширение ..wkt
MIME-тип application/wkt
Тип формата ГИС формат файла
Открытый формат? да
WKB
Расширение ..wkb
Тип формата ГИС формат файла
Открытый формат? да

История

Форматы были первоначально определены Open Geospatial Consortium (OGC) в документе OGC 99-049[1]. В настоящее время актуальная редакция — OGC 06-103r3 и проект новой редакции OGC 06-104r3.

Well-known text

Геометрия

WKT может представлять следующие геометрические объекты:

Координаты для геометрии могут быть 2D (x, y), 3D (x, y, z), 4D (x, y, z, m) со значением m которое является частью системы linear referencing system или 2D со значением m (x, y, m). Пустые геометрии, которые не содержат координат, могут быть указаны с помощью символа EMPTY после имени типа.

WKT используется во всех спецификациях OGC и поддерживается в приложениях, которые реализуют эти спецификации. Например, PostGIS содержит функции, которые могут преобразовывать геометрию в представление WKT и из него, делая их удобочитаемыми для человека.

Полезно отметить, что стандартное определение OGC требует, чтобы Polygon имел замкнутую топологию. В нем также говорится, что если LineRing в представлении Polygon определено в направлении против часовой стрелки, оно будет внешним. Любые внутренние (дырки) LineRing должны быть определены противоположным образом по сравнению с внешним кольцом, в данном случае по часовой стрелке.[2]


Примитивные типы (2D)
Тип Примеры
Point POINT (30 10)
LineString LINESTRING (30 10, 10 30, 40 40)
Polygon POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),
(20 30, 35 35, 30 20, 20 30))
Мультитипы (2D)
Тип Примеры
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),
(40 40, 30 30, 40 20, 30 10))
MultiPolygon MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),
((15 5, 40 10, 10 20, 5 10, 15 5)))
MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),
((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),
(30 20, 20 15, 20 25, 30 20)))

Ниже приведено несколько дополнительных примеров строк 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
CIRCULARSTRING(1 5, 6 2, 7 3)
COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))
CURVEPOLYGON(CIRCULARSTRING(-2 0,-1 -1,0 0,1 -1,2 0,0 2,-2 0),(-1 0,0 0.5,1 0,0 1,-1 0))
MULTICURVE((5 5,3 5,3 3,0 3),CIRCULARSTRING(0 0,2 1,2 2))
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))
  )

Системы координат

WKT может описывать системы координат. Этот формат WKT был первоначально определен OGC в 1999 году, а затем расширен в 2001 году. Этот формат иногда называют «WKT 1». С развитием модели системы координат и несовместимостью реализация в разном ПО формат подвергся пересмотру. Обновленный стандарт «Well-known text representation of coordinate reference systems», иногда называемый как «WKT 2», был принят OGC в 2015 году. Этот стандарт совместно публикуется Международной организацией по стандартизации как ISO 19162 : 2015.

В примере ниже, WKT описывает двумерную географическую систему координат начиная с оси широты, за которой описывает ось долготы. Это система координат Земли WGS84:

GEODCRS["WGS 84",
  DATUM["World Geodetic System 1984",
    ELLIPSOID["WGS 84", 6378137, 298.257223563, LENGTHUNIT["metre", 1]]],
  CS[ellipsoidal, 2],
    AXIS["Latitude (lat)", north, ORDER[1]],
    AXIS["Longitude (lon)", east, ORDER[2]],
    ANGLEUNIT["degree", 0.0174532925199433]]

Формат WKT может описывать не только географические системы координат, но также геоцентрические, проектные, вертикальные, временные и инженерные (например, систему координат, привязанную к лодке). Стандарт описывает, как объединить эти системы координат.

Well-known binary

WKB (Well-known binary) — двоичное представление формата WKT в шестнадцатеричных строках.

Первый байт указывает порядок байт данных:

  • 00 : big endian - (прямой) порядок от старшего к младшему
  • 01 : little endian - (обратный) порядок от младшего к старшему

Следующие 4 байта представляют собой 32-bit unsigned integer указывающее тип геометрии:

Типы геометрии и коды WKB
Type2DZMZM
Geometry 0000100020003000
Point 0001100120013001
LineString 0002100220023002
Polygon 0003100320033003
MultiPoint 0004100420043004
MultiLineString 0005100520053005
MultiPolygon 0006100620063006
GeometryCollection 0007100720073007
CircularString 0008100820083008
CompoundCurve 0009100920093009
CurvePolygon 0010101020103010
MultiCurve 0011101120113011
MultiSurface 0012101220123012
Curve 0013101320133013
Surface 0014101420143014
PolyhedralSurface 0015101520153015
TIN 0016101620163016
Triangle 0017101720173017
Circle 0018101820183018
GeodesicString 0019101920193019
EllipticalCurve 0020102020203020
NurbsCurve 0021102120213021
Clothoid 0022102220223022
SpiralCurve 0023102320233023
CompoundSurface 0024102420243024
BrepSolid 1025
AffinePlacement 1021102

Каждый тип данных имеет уникальную структуру данных, например количество точек или линий контуров, за которыми следуют координаты в 64-bit double.

Например, геометрия POINT(2.0 4.0) представлена ​​как: 000000000140000000000000004010000000000000, где:

  • 1-byte integer 00 или 0: big endian
  • 4-byte integer 00000001 или 1: POINT (2D)
  • 8-byte float 4000000000000000 или 2.0: x-координата
  • 8-byte float 4010000000000000 или 4.0: y-координата

Варианты формата

EWKT и EWKBExtended Well-Known Text/Binary

Специфичный формат PostGIS, расширенный идентификатором пространственной системы координат (SRID) и до 4-х значений ординат (XYZM)[3][4].
Например: SRID=4326;POINT(-44.3 60.1) описывает долготу/широту в системе координат WGS 84.

AGF TextФормат геометрии Autodesk

Расширение стандарта OGC (актуальное на тот момент), включающий кривые.
Наиболее заметно используется в MapGuide.[5]

Поддержка Базами Данных

  • PostgreSQL с модулем PostGIS 2.0
  • Oracle Spatial 9i, 10g, 11g
  • OmniSci с версии 4.0
  • MySQL с версии 4.1[6]
  • MariaDB, все версии
  • Neo4j[7]
  • IBM DB2 LUW 9, 10 с пространственным расширителем
  • IBM DB2 for z/OS 9, 10 с пространственным расширителем
  • IBM Netezza с расширением Netezza
  • IBM Informix 9,10,11 с модулем пространственной базы данных
  • Microsoft SQL Server 2008 R2, 2012, 2014, 2016
  • SpatiaLite
  • Teradata 6.1, 6.2, 12, 13 (встроен в версию 13, в предыдущих версиях через плагин)
  • Ingres GeoSpatial
  • Altibase 5.x
  • SQL Anywhere 12

API обеспечивающие поддержку

Примечания

  1. Simple Feature Access - Part 2
  2. См. спецификацию реализации OGC для географической информации - Simple Feature Access, раздел 6.1.11.1. http://www.opengeospatial.org/standards/sfa
  3. postgis/ZMSgeoms.txt at 2.1.0 · postgis/postgis · GitHub
  4. ST_GeomFromEWKT
  5. Архивированная копия (недоступная ссылка). Дата обращения: 4 февраля 2019. Архивировано 12 ноября 2017 года.
  6. Well-Known Text (WKT) Format, Документация MySQL
  7. Neo4j Spatial
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.