Хорошо известный текст ( WKT ) - это язык разметки текста для представления объектов векторной геометрии . Двоичное эквивалент, известный как хорошо известный двоичный ( ВКБ ), используется для передачи и хранения и ту же информацию в более компактной форме , удобной для компьютерной обработки , но это не читаемый человеком. Форматы были изначально определены Open Geospatial Consortium (OGC) и описаны в их Simple Feature Access . [1] Текущее стандартное определение содержится в стандарте ISO / IEC 13249-3: 2016. [2]
Геометрические объекты [ править ]
WKT может представлять следующие различные геометрические объекты:
- Точка , Многоточечная
- LineString , MultiLineString
- Многоугольник , Мультиполигон, Треугольник
- МногогранникПоверхность
- ИНН ( нерегулярная триангулированная сеть )
- GeometryCollection
Координаты для геометрии могут быть 2D ( x , y ), 3D ( x , y , z ), 4D ( x , y , z , m ) со значением m, которое является частью линейной системы привязки, или 2D со значением m ( х , у , м ). Трехмерные геометрии обозначаются буквой Z после типа геометрии, а геометрии с линейной системой отсчета.после типа геометрии стоит буква "M". Пустые геометрические фигуры, не содержащие координат, можно указать с помощью символа EMPTY
после имени типа.
Геометрия WKT используется во всех спецификациях OGC и присутствует в приложениях, реализующих эти спецификации. Например, PostGIS содержит функции, которые могут преобразовывать геометрию в представление WKT и обратно, делая их удобочитаемыми.
Стандартное определение OGC требует, чтобы полигон был топологически замкнутым. В нем также говорится, что если внешнее линейное кольцо многоугольника определено в направлении против часовой стрелки, оно будет видно «сверху». Любые внутренние линейные кольца следует определять противоположным образом по сравнению с внешним кольцом, в данном случае по часовой стрелке. [3]
Тип | Примеры | |
---|---|---|
Точка | POINT (30 10) | |
LineString | 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 (((30 20, 45 40, 10 40, 30 20)), | |
MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), | ||
GeometryCollection | GEOMETRYCOLLECTION (POINT (40 10), |
Ниже приведены некоторые другие примеры геометрических строк WKT: (Примечание: каждый элемент ниже представляет собой отдельную геометрию.)
ГЕОМЕТРИКОЛЛЕКЦИЯ (ТОЧКА (4 6), ЛИНИЯ (4 6,7 10))ТОЧКА ZM (1 1 5 60)ТОЧКА M (1 1 80)ТОЧКА ПУСТОМУЛЬТИПОЛИГОН ПУСТОТРЕУГОЛЬНИК ((0 0 0,0 1 0,1 1 0,0 0 0))ИНН (((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)))ПОЛИГЕДРАЛЬНАЯ ПОВЕРХНОСТЬ Z (ПАТЧИ ((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)) )
Хорошо известный двоичный файл [ править ]
Хорошо известные двоичные (WKB) представления обычно отображаются в шестнадцатеричных строках.
Первый байт указывает порядок байтов данных:
00
: big endian01
: little endian
Следующие 4 байта представляют собой 32-битное целое число без знака для типа геометрии, как описано ниже:
Тип | 2D | Z | M | ZM |
---|---|---|---|---|
Геометрия | 0000 | 1000 | 2000 | 3000 |
Точка | 0001 | 1001 | 2001 | 3001 |
LineString | 0002 | 1002 | 2002 | 3002 |
Многоугольник | 0003 | 1003 | 2003 | 3003 |
MultiPoint | 0004 | 1004 | 2004 | 3004 |
MultiLineString | 0005 | 1005 | 2005 | 3005 |
Мультиполигон | 0006 | 1006 | 2006 | 3006 |
GeometryCollection | 0007 | 1007 | 2007 | 3007 |
CircularString | 0008 | 1008 | 2008 | 3008 |
CompoundCurve | 0009 | 1009 | 2009 | 3009 |
КриваяПолигон | 0010 | 1010 | 2010 | 3010 |
MultiCurve | 0011 | 1011 | 2011 | 3011 |
MultiSurface | 0012 | 1012 | 2012 | 3012 |
Изгиб | 0013 | 1013 | 2013 | 3013 |
Поверхность | 0014 | 1014 | 2014 | 3014 |
МногогранникПоверхность | 0015 | 1015 | 2015 | 3015 |
БАНКА | 0016 | 1016 | 2016 | 3016 |
Треугольник | 0017 | 1017 | 2017 | 3017 |
Круг | 0018 | 1018 | 2018 | 3018 |
GeodesicString | 0019 | 1019 | 2019 | 3019 |
Эллиптическая кривая | 0020 | 1020 | 2020 | 3020 |
NurbsCurve | 0021 | 1021 | 2021 | 3021 |
Клотоид | 0022 | 1022 | 2022 | 3022 |
SpiralCurve | 0023 | 1023 | 2023 | 3023 |
СоставПоверхность | 0024 | 1024 | 2024 | 3024 |
BrepSolid |
| 1025 |
|
|
AffinePlacement | 102 | 1102 |
|
|
Каждый тип данных имеет уникальную структуру данных, такую как количество точек или линейных колец, за которыми следуют координаты в виде 64-битных чисел двойной точности.
Например, геометрия POINT(2.0 4.0)
представлена как:, где:000000000140000000000000004010000000000000
- 1-байтовое целое число
00
или 0: с прямым порядком байтов - 4-байтовое целое число
00000001
или 1: ТОЧКА (2D) - 8-байтовое число с плавающей запятой
4000000000000000
или 2.0: координата x - 8-байтовое число с плавающей запятой
4010000000000000
или 4.0: y- координата
Варианты формата [ править ]
- EWKT и EWKB - расширенный общеизвестный текст / двоичный файл
- PostGIS -специфического формат , который включает в себя идентификатор пространственной системы координат (SRID) и до 4 -х значений ординат (XYZM). [4] [5] Например:
SRID=4326;POINT(-44.3 60.1)
чтобы найти долготы / широты координат с использованием координат WGS 84 опорной системой координат. - Текст AGF - формат геометрии Autodesk
- Расширение стандарта OGC (в то время) для включения изогнутых элементов; наиболее часто используется в MapGuide . [6]
Поддержка программного обеспечения [ править ]
Ядра базы данных [ править ]
- Amazon Redshift с 21 ноября 2019 г. [7]
- Apache Drill поддерживает полный спектр геопространственных запросов, начиная с версии 1.12, а также чтение файлов ESRI Shape (SHP).
- Сервер поиска предприятия Apache Solr с версии 4.0 [8] через JTS
- Elasticsearch распределенного, RESTful поиска и аналитика двигателя начиная с 6.2 [9]
- Google BigQuery поддерживает географические информационные системы BigQuery с апреля 2019 года.
- GigaSpaces InsightEdge [10]
- PostgreSQL с модулем PostGIS 2.0
- Kinetica GPU-ускорение геопространственной базы данных
- Oracle Spatial 9i, 10g, 11g
- OmniSci с 4.0
- MarkLogic Server с версии 4.2 [11]
- MemSQL с 4 [12]
- MySQL начиная с версии 4.1 [13]
- MariaDB , все версии
- Neo4j [14]
- OrientDB [15]
- IBM DB2 LUW 9, 10, 11.1 с пространственным расширителем; 11.5 с помощью Spatial Analytics или Spatial Extender [16]
- IBM DB2 для z / OS 9, 10 с пространственной поддержкой
- IBM Netezza с Netezza Spatial
- IBM Informix 9,10,11 с модулем Spatial datablade
- Microsoft SQL Server с 2008 R2 [17]
- Snowflake Inc.
- SpatiaLite
- Teradata 6.1, 6.2, 12, 13 (встроенная в 13 через надстройку в предыдущих версиях)
- Ingres GeoSpatial
- Altibase 5.x
- SQL Anywhere 12
- SAP HANA SP07, SP08
- H2 с 1.3.173 (2013-07-28) [18]
- Vertica с версии 7.1.0 [19]
- VoltDB, начиная с V6.0 [20]
API [ править ]
- Библиотеки Boost C ++ (C ++): см. Заголовки Geometry io / wkt
- Esri geometry-api-java
- GEOS (C / C ++)
- Shapely (Python): см. Документацию по Shapely и Shapely в PyPI.
- GeoPHP (PHP)
- GDAL (C / C ++ с привязкой к Java, Python и др.)
- GeoRust: rust-wkt (привязки Rust)
- Пакет топологии JTS (Java)
- Spatial4j (Java)
- NetTopologySuite (.NET)
- OpenLayers (JavaScript)
- OpenScales (ActionScript)
- parsewkt (Python) - синтаксический анализатор привязок от WKT к словарям Python
- pygeoif (Python) анализирует wkt с помощью регулярных выражений
- rgeo (Рубин)
- SF (R)
- Терраформер (JavaScript)
- WellKnownLib (C # .Net) Известный текстовый и двоичный синтаксический анализатор
Протоколы [ править ]
- GeoSPARQL
- SensorThings API
См. Также [ править ]
- Простые функции
- Язык разметки географии
- Общеизвестное текстовое представление систем координат
Ссылки [ править ]
- ^ Херринг, Джон Р., изд. (2011-05-28), Стандарт реализации OpenGIS® для географической информации - Простой доступ к функциям - Часть 1: Общая архитектура , Open Geospatial Consortium , получено 2019-01-28
- ^ Информационные технологии - Языки баз данных - Мультимедиа и пакеты приложений SQL - Часть 3: Пространственное (5-е изд.), ISO , 2016-01-15 , получено 2019-01-28
- ^ См. Спецификацию реализации OGC для получения географической информации - Простой доступ к функциям, раздел 6.1.11.1. http://www.opengeospatial.org/standards/sfa
- ^ https://github.com/postgis/postgis/blob/2.1.0/doc/ZMSgeoms.txt
- ^ http://postgis.org/docs/ST_GeomFromEWKT.html
- ^ http://e-logistic-plans.gdfsuez.com/mapguide/help/webapi/da/dc0/group___agf_text.htm
- ^ Amazon Redshift объявляет о поддержке пространственных данных
- ^ Поддержка Solr GEO
- ^ Тип ввода общеизвестного текста (WKT) в документации Elasticsearch
- ^ «Геопространственные запросы» . docs.gigaspaces.com . Проверено 2 июня 2020 .
- ^ https://docs.marklogic.com/guide/search-dev/geospatial
- ^ http://docs.memsql.com/docs/geospatial-guide
- ^ Формат общеизвестного текста (WKT) , документация MySQL
- ^ https://neo4j-contrib.github.io/spatial/
- ^ https://orientdb.com/docs/3.1.x/indexing/Spatial-Index.html
- ^ https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.spatial.topics.doc/doc/db2sb03.html
- ^ https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/bb933970(v=sql.105)
- ^ H2 создать документацию по пространственному индексу
- ^ «Примечания к выпуску HP Vertica 7.1.x» . my.vertica.com . Проверено 21 марта 2018 .
- ^ https://www.voltdb.com/company/press-releases/voltdb-adds-geospatial-query-support-industrys-innovative-fast-data-platform/
Внешние ссылки [ править ]
- Спецификация простого доступа к функциям
- Пространственный стандарт ISO (за это взимается плата)
- BNF-обозначение WKT
- EBNF Нотация WKT
- Онлайн-преобразование между представлениями геометрических объектов