Well-known text representation of geometry
Textul cunoscut (Well-known text - WKT) este un limbaj de marcare pentru reprezentarea obiectelor geometrice de tip vector pe o hartă . Un echivalent binar, cunoscut sub numele well-known binary (WKB), este utilizat pentru a transfera și a stoca aceleași informații în bazele de date. Formatele au fost inițial definite de Open Geospatial Consortium (OGC) și descrise în Simple Feature Access[1] Definiția standard actuală este în standardul ISO/IEC 13249-3: 2016.[2]
Obiecte geometrice
WKT poate reprezenta următoarele obiecte geometrice distincte:
- Punct, MultiPunct
- Line, MultiLinie
- Poligon, MultiPoligon, Triunghi
- Obiecte Poliedrice
- TIN (Rețea Neregulată Triunghiulară)
- Colectie Geometrii
Coordonatele pentru geometrii pot fi 2D (x, y), 3D (x, y, z), 4D (x, y, z, m) cu o valoare m care face parte dintr-un sistem liniar de referință, sau 2D cu o valoare m (x, y, m). Geometriile tridimensionale sunt desemnate de "Z" după tipul de geometrie, iar geometriile cu un sistem liniar de referință au valoarea "M" după tipul de geometrie. Geometriile goale care nu conțin coordonate pot fi specificate folosind simbolul EMPTY
după numele tipului.
Geometriile WKT sunt utilizate în toate specificațiile OGC și sunt prezente în aplicațiile care implementează aceste specificații. De exemplu, PostGIS conține funcții care pot converti geometriile în și dintr-o reprezentare WKT, ceea ce le face umane lizibile.
Definiția standard OGC necesită închiderea topologică a unui poligon. De asemenea, se afirmă că, dacă inelul liniar exterior al unui poligon este definit într-o direcție în sens invers acelor de ceasornic, acesta va fi văzut din „partea de sus”. Orice inele liniare interioare trebuie definite în mod opus în comparație cu inelul exterior, în acest caz, în sensul acelor de ceasornic.[3]
Tip geometrie | Exemplu | |
---|---|---|
Punct | ![]() | POINT (30 10) |
Liniar | ![]() | LINESTRING (30 10, 10 30, 40 40) |
Poligon | ![]() | POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)) |
![]() | POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),
|
Tip geometrie | Exemplu | |
---|---|---|
Multi Punct | ![]() | MULTIPOINT ((10 40), (40 30), (20 20), (30 10)) |
MULTIPOINT (10 40, 40 30, 20 20, 30 10) | ||
MultiLine | ![]() | MULTILINESTRING ((10 10, 20 20, 10 40),
|
MultiPoligon | ![]() | MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),
|
![]() | MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),
| |
Colectie de geometrii | ![]() | GEOMETRYCOLLECTION (POINT (40 10),
|
Următoarele sunt alte câteva exemple de șiruri WKT geometrice:
(Notă: Fiecare element de mai jos este o geometrie individuală.)
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 binar (reprezentari binare)
Reprezentările binare (WKB) sunt prezentate în șiruri hexadecimale .
Primul octet indică comanda de byte pentru date:
00
: endian mare01
: endian mic
Următorii 4 octeți sunt un număr întreg nesemnat pe 32 de biți pentru tipul de geometrie, așa cum este descris mai jos:
Tip | 2D | Z | M | ZM |
---|---|---|---|---|
Geometry | 0000 | 1000 | 2000 | 3000 |
Point | 0001 | 1001 | 2001 | 3001 |
LineString | 0002 | 1002 | 2002 | 3002 |
Polygon | 0003 | 1003 | 2003 | 3003 |
MultiPoint | 0004 | 1004 | 2004 | 3004 |
MultiLineString | 0005 | 1005 | 2005 | 3005 |
MultiPolygon | 0006 | 1006 | 2006 | 3006 |
GeometryCollection | 0007 | 1007 | 2007 | 3007 |
CircularString | 0008 | 1008 | 2008 | 3008 |
CompoundCurve | 0009 | 1009 | 2009 | 3009 |
CurvePolygon | 0010 | 1010 | 2010 | 3010 |
MultiCurve | 0011 | 1011 | 2011 | 3011 |
MultiSurface | 0012 | 1012 | 2012 | 3012 |
Curve | 0013 | 1013 | 2013 | 3013 |
Surface | 0014 | 1014 | 2014 | 3014 |
PolyhedralSurface | 0015 | 1015 | 2015 | 3015 |
TIN | 0016 | 1016 | 2016 | 3016 |
Triangle | 0017 | 1017 | 2017 | 3017 |
Circle | 0018 | 1018 | 2018 | 3018 |
GeodesicString | 0019 | 1019 | 2019 | 3019 |
EllipticalCurve | 0020 | 1020 | 2020 | 3020 |
NurbsCurve | 0021 | 1021 | 2021 | 3021 |
Clothoid | 0022 | 1022 | 2022 | 3022 |
SpiralCurve | 0023 | 1023 | 2023 | 3023 |
CompoundSurface | 0024 | 1024 | 2024 | 3024 |
BrepSolid | 1025 | |||
AffinePlacement | 102 | 1102 |
Fiecare tip de date are o structură de date unică, cum ar fi numărul de puncte sau inele liniare, urmată de coordonate în numere duble pe 64 de biți.
De exemplu, geometria POINT(2.0 4.0)
este reprezentată in binar ca:
00 00000001 4000000000000000 4010000000000000
, unde:
- 1-octet număr întreg
00
sau 0: endian mare - numar întreg 4-byte
00000001
sau 1: POINT (2D) - 8-byte float
4000000000000000
sau 2.0: x -coordinate - 8-byte float
4010000000000000
sau 4.0: y -coordinate
Variante WKT
- EWKT și EWKB - Text binecunoscut extins/binar (Extended Well-Known Text/Binary )
- Un format specific PostGIS care include identificatorul sistemului de referință spațial (SRID) și până la 4 valori ordonate (XYZM).[4][5] De exemplu:
SRID=4326;POINT(-44.3 60.1)
pentru a localiza o coordonată de longitudine / latitudine folosind sistemul de coordonate de referință WGS 84 . - Text AGF - format geometric Autodesk
- O extensie la standardul OGC (la vremea respectivă), pentru a include elemente curbate; cel mai notabil utilizat în MapGuide.[6]
Suport software
Motoare de baze de date
- Apache Drill acceptă o gamă completă de interogări geospatiale începând cu versiunea 1.12, precum și citirea fișierelor ESRI Shape (SHP).
- Apache Solr serverul de căutare a incepand cu versiunea 4.0[7] prin JTS
- Elasticsearch distribuit, motor de căutare și analiză RESTincepand cu versiunea 6.2[8]
- PostgreSQL cu Modulul PostGIS 2.0
- Kinetica baza de date geospatială accelerată GPU
- Oracle Spatial 9i, 10g, 11g
- OmniSci începând cu 4.0
- Server MarkLogic începând cu 4.2[9]
- MemSQL începând cu versiunea 4[10]
- MySQL începând cu versiunea 4.1[11]
- MariaDB, toate versiunile
- Neo4j [12]
- IBM DB2 LUW 9, 10 cu Spatial Extender
- IBM DB2 pentru z/OS 9, 10 cu Spatial Support
- IBM Netezza cu Netezza Spatial
- IBM Informix 9,10,11 cu modulul de spațiu de date
- Microsoft SQL Server 2008 R2, 2012, 2014, 2016
- SpatiaLite
- Teradata 6.1, 6.2, 12, 13 (nativă în versiunea 13 prin completare în versiunile anterioare)
- Ingres GeoSpatial
- Altibase 5.x
- SQL Anywhere 12
- SAP HANA SP07, SP08
- H2 începând cu 1.3.173 (28.07.2013)[13]
- Vertica începând cu 7.1.0[14]
- VoltDB începând V6.0[15]
API-uri
- Boost C++ libraries (C++): See Geometry io/wkt header
- Esri geometry-api-java
- GEOS (C/C++)
- Shapely (Python): Consultați Documentația Arhivat în , la Wayback Machine. Shapely și Shapely în PyPI
- GeoPHP (PHP)
- GDAL (C/C ++ cu legături la Java, Python și altele)
- GeoRust: rust-wkt (legături de rugină)
- JTS Topology Suite (Java)
- Spatial4j (Java)
- NetTopologySuite (.NET)
- OpenLayers (JavaScript)
- OpenScales (ActionScript)
- parsewkt (Python) parser WKT in directorii python
- pygeoif (Python) parser WKT cu expresii obișnuite
- rgeo (Ruby)
- sf (R)
- Terraformer (JavaScript)
- WellKnownLib (C #. Net) Text binecunoscut și parser binar
Protocoale
- GeoSPARQL
- SensorThings API
Vezi și
- Simple Features
- Geography Markup Language
- Well-known text representation of coordinate reference systems
- ^ Herring, John R., ed. (), OpenGIS® Implementation Standard for Geographic information – Simple feature access – Part 1: Common architecture (OGC 06-103r4), accesat în
- ^ Information technology – Database languages – SQL multimedia and application packages – Part 3: Spatial (ISO/IEC 13249-3:2016) (ed. 5th), ISO, , accesat în
- ^ See the OGC Implementation Specification for geographic information – Simple Feature Access, section 6.1.11.1. http://www.opengeospatial.org/standards/sfa
- ^ postgis/postgis, GitHub,
- ^ „copie arhivă”. Arhivat din original la . Accesat în .
- ^ „copie arhivă”. Arhivat din original la . Accesat în .
- ^ Solr GEO support
- ^ Well-Known Text (WKT) Input Type in Elasticsearch documentation
- ^ Geospatial Search Applications (Search Developer's Guide) — MarkLogic 10 Product Documentation, docs.marklogic.com
- ^ „copie arhivă”. Arhivat din original la . Accesat în .
- ^ Well-Known Text (WKT) Format, MySQL documentation
- ^ Neo4j Spatial, neo4j-contrib.github.io
- ^ H2 create spatial index documentation
- ^ „HP Vertica 7.1.x Release Notes”. my.vertica.com (în engleză). Arhivat din original la . Accesat în .
- ^ Volt Active Data Adds Geospatial Query Support to Industry’s Most Innovative Fast Data Platform (în engleză), Volt Active Data
Legături externe
- Simple Feature Access Specificații
- Standard spațial ISO (există o taxă pentru acest lucru)
- Notarea BNF de WKT Arhivat în , la Wayback Machine.
- EBNF Notarea WKT
- Conversia online între reprezentările obiectelor de geometrie Arhivat în , la Wayback Machine.