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

modificare

WKT poate reprezenta următoarele obiecte geometrice distincte:

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]

Primitive Geometrice (2D)
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),

(20 30, 35 35, 30 20, 20 30))

Multi Geometrie(2D)
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),

(40 40, 30 30, 40 20, 30 10))

MultiPoligon   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)))

Colectie de geometrii   GEOMETRYCOLLECTION (POINT (40 10),

LINESTRING (10 10, 20 20, 10 40),

POLYGON ((40 40, 20 45, 45 30, 40 40)))

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)

modificare

Reprezentările binare (WKB) sunt prezentate în șiruri hexadecimale .

Primul octet indică comanda de byte pentru date:

  • 00  : endian mare
  • 01  : 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:

Tipuri de geometrii si codul integralei WKB
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

modificare
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

modificare

Motoare de baze de date

modificare

Protocoale

modificare

Vezi și

modificare
  • Simple Features
  • Geography Markup Language
  • Well-known text representation of coordinate reference systems
  1. ^ Herring, John R., ed. (), OpenGIS® Implementation Standard for Geographic information – Simple feature access – Part 1: Common architecture (OGC 06-103r4), accesat în  
  2. ^ Information technology – Database languages – SQL multimedia and application packages – Part 3: Spatial (ISO/IEC 13249-3:2016) (ed. 5th), ISO, , accesat în  
  3. ^ See the OGC Implementation Specification for geographic information – Simple Feature Access, section 6.1.11.1. http://www.opengeospatial.org/standards/sfa
  4. ^ postgis/postgis, GitHub,  
  5. ^ „copie arhivă”. Arhivat din original la . Accesat în . 
  6. ^ „copie arhivă”. Arhivat din original la . Accesat în . 
  7. ^ Solr GEO support
  8. ^ Well-Known Text (WKT) Input Type in Elasticsearch documentation
  9. ^ Geospatial Search Applications (Search Developer's Guide) — MarkLogic 10 Product Documentation, docs.marklogic.com 
  10. ^ „copie arhivă”. Arhivat din original la . Accesat în . 
  11. ^ Well-Known Text (WKT) Format, MySQL documentation
  12. ^ Neo4j Spatial, neo4j-contrib.github.io 
  13. ^ H2 create spatial index documentation
  14. ^ „HP Vertica 7.1.x Release Notes”. my.vertica.com (în engleză). Arhivat din original la . Accesat în . 
  15. ^ Volt Active Data Adds Geospatial Query Support to Industry’s Most Innovative Fast Data Platform (în engleză), Volt Active Data 

Legături externe

modificare