El texto conocido ( WKT ) es un lenguaje de marcado de texto para representar objetos de geometría vectorial . Un equivalente binario , conocido como binario conocido ( WKB ), se utiliza para transferir y almacenar la misma información en una forma más compacta, conveniente para el procesamiento por computadora, pero que no es legible por humanos. Los formatos fueron originalmente definidos por Open Geospatial Consortium (OGC) y descritos en su Simple Feature Access . [1] La definición estándar actual está en la norma ISO / IEC 13249-3: 2016. [2]
Objetos geométricos
WKT puede representar los siguientes objetos geométricos distintos:
- Punto , multipunto
- LineString , MultiLineString
- Polígono , Multipolígono, Triángulo
- Superficie poliédrica
- TIN ( Red irregular triangulada )
- GeometríaColección
Las coordenadas de las geometrías pueden ser 2D ( x , y ), 3D ( x , y , z ), 4D ( x , y , z , m ) con un valor m que forma parte de un sistema de referencia lineal o 2D con un valor m ( x , y , m ). Las geometrías tridimensionales se designan con una "Z" después del tipo de geometría y las geometrías con un sistema de referencia lineal tienen una "M" después del tipo de geometría. Las geometrías vacías que no contienen coordenadas se pueden especificar usando el símbolo EMPTY
después del nombre del tipo.
Las geometrías WKT se utilizan en todas las especificaciones OGC y están presentes en aplicaciones que implementan estas especificaciones. Por ejemplo, PostGIS contiene funciones que pueden convertir geometrías hacia y desde una representación WKT, haciéndolas legibles por humanos.
La definición estándar de OGC requiere que un polígono esté topológicamente cerrado. También establece que si el anillo lineal exterior de un polígono se define en sentido antihorario, se verá desde la "parte superior". Cualquier anillo lineal interior debe definirse de manera opuesta en comparación con el anillo exterior, en este caso, en el sentido de las agujas del reloj. [3]
Tipo | Ejemplos de | |
---|---|---|
Punto | POINT (30 10) | |
LineString | LINESTRING (30 10, 10 30, 40 40) | |
Polígono | POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)) | |
POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), |
Tipo | Ejemplos de | |
---|---|---|
Multipunto | 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)), | ||
GeometríaColección | GEOMETRYCOLLECTION (POINT (40 10), |
Los siguientes son algunos otros ejemplos de cadenas WKT geométricas: (Nota: cada elemento a continuación es una geometría individual).
COLECCIÓN DE GEOMETRÍA (PUNTO (4 6), CORDÓN (4 6,7 10))PUNTO ZM (1 1 5 60)PUNTO M (1 1 80)PUNTO VACÍOMULTIPOLÍGONO VACÍOTRIÁNGULO ((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)))SUPERFICIE POLIEDRAL Z (PARCHES ((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)) )
Binario conocido
Las representaciones binarias conocidas (WKB) se muestran normalmente en cadenas hexadecimales .
El primer byte indica el orden de bytes de los datos:
00
: big endian01
: pequeño endian
Los siguientes 4 bytes son un entero sin signo de 32 bits para el tipo de geometría, como se describe a continuación:
Tipo | 2D | Z | METRO | ZM |
---|---|---|---|---|
Geometría | 0000 | 1000 | 2000 | 3000 |
Punto | 0001 | 1001 | 2001 | 3001 |
LineString | 0002 | 1002 | 2002 | 3002 |
Polígono | 0003 | 1003 | 2003 | 3003 |
Multipunto | 0004 | 1004 | 2004 | 3004 |
MultiLineString | 0005 | 1005 | 2005 | 3005 |
MultiPolygon | 0006 | 1006 | 2006 | 3006 |
GeometríaColección | 0007 | 1007 | 2007 | 3007 |
CircularString | 0008 | 1008 | 2008 | 3008 |
CompuestoCurva | 0009 | 1009 | 2009 | 3009 |
CurvePolygon | 0010 | 1010 | 2010 | 3010 |
MultiCurve | 0011 | 1011 | 2011 | 3011 |
MultiSuperficie | 0012 | 1012 | 2012 | 3012 |
Curva | 0013 | 1013 | 2013 | 3013 |
Superficie | 0014 | 1014 | 2014 | 3014 |
Superficie poliédrica | 0015 | 1015 | 2015 | 3015 |
ESTAÑO | 0016 | 1016 | 2016 | 3016 |
Triángulo | 0017 | 1017 | 2017 | 3017 |
Circulo | 0018 | 1018 | 2018 | 3018 |
Cadena geodésica | 0019 | 1019 | 2019 | 3019 |
ElípticaCurva | 0020 | 1020 | 2020 | 3020 |
NurbsCurve | 0021 | 1021 | 2021 | 3021 |
Clotoide | 0022 | 1022 | 2022 | 3022 |
EspiralCurva | 0023 | 1023 | 2023 | 3023 |
CompuestoSuperficie | 0024 | 1024 | 2024 | 3024 |
BrepSolid |
| 1025 |
| |
AffinePlacement | 102 | 1102 |
| |
Cada tipo de datos tiene una estructura de datos única, como el número de puntos o anillos lineales, seguido de coordenadas en números dobles de 64 bits .
Por ejemplo, la geometría POINT(2.0 4.0)
se representa como:, donde:000000000140000000000000004010000000000000
- Entero de 1 byte
00
o 0: big endian - Entero de 4 bytes
00000001
o 1: PUNTO (2D) - Flotante de 8 bytes
4000000000000000
o 2.0: x -coordinate - Flotante de 8 bytes
4010000000000000
o 4.0: coordenada y
Variaciones de formato
- EWKT y EWKB : texto bien conocido extendido / binario
- Un formato específico de PostGIS que incluye el identificador del sistema de referencia espacial (SRID) y hasta 4 valores de ordenadas (XYZM). [4] [5] Por ejemplo:
SRID=4326;POINT(-44.3 60.1)
para localizar una coordenada de longitud / latitud utilizando el sistema de coordenadas de referencia WGS 84 . - Texto AGF : formato de geometría de Autodesk
- Una extensión del Estándar de OGC (en ese momento), para incluir elementos curvos; más notablemente utilizado en MapGuide . [6]
Soporte de software
Motores de base de datos
- Amazon Redshift desde el 21 de noviembre de 2019 [7]
- Apache Drill admite una gama completa de consultas geoespaciales desde la versión 1.12, así como la lectura de archivos ESRI Shape (SHP).
- Servidor de búsqueda empresarial Apache Solr desde 4.0 [8] a través de JTS
- Elasticsearch distribuido, motor de análisis y búsqueda RESTful desde 6.2 [9]
- Google BigQuery es compatible con los sistemas de información geográfica de BigQuery desde abril de 2019.
- GigaSpaces InsightEdge [10]
- PostgreSQL con el módulo PostGIS 2.0
- Kinetica acelerado por GPU base de datos geoespacial
- Oracle Spatial 9i, 10g, 11g
- OmniSci desde 4.0
- MarkLogic Server desde 4.2 [11]
- MemSQL desde 4 [12]
- MySQL desde 4.1 [13]
- MariaDB , todas las versiones
- Neo4j [14]
- OrientDB [15]
- IBM DB2 LUW 9, 10, 11.1 con Spatial Extender; 11.5 con Spatial Analytics o Spatial Extender [16]
- IBM DB2 para z / OS 9, 10 con soporte espacial
- IBM Netezza con Netezza Spatial
- IBM Informix 9,10,11 con módulo espacial datablade
- Microsoft SQL Server desde 2008 R2 [17]
- Snowflake Inc.
- SpatiaLite
- Teradata 6.1, 6.2, 12, 13 (nativo en 13 a través del complemento en versiones anteriores)
- Ingres GeoSpatial
- Altibase 5.x
- SQL en cualquier lugar 12
- SAP HANA SP07, SP08
- H2 desde 1.3.173 (28-07-2013) [18]
- Vertica desde 7.1.0 [19]
- VoltDB desde V6.0 [20]
API
- Mejore las bibliotecas de C ++ (C ++): consulte los encabezados Geometry io / wkt
- Esri geometry-api-java
- GEOS (C / C ++)
- Shapely (Python): consulte la documentación de Shapely y Shapely en PyPI
- GeoPHP (PHP)
- GDAL (C / C ++ con enlaces a Java, Python y otros)
- GeoRust: rust-wkt (fijaciones de óxido)
- Conjunto de topología JTS (Java)
- Spatial4j (Java)
- NetTopologySuite (.NET)
- OpenLayers (JavaScript)
- OpenScales (ActionScript)
- parsewkt (Python) es un analizador de clavijas de WKT a diccionarios de Python
- pygeoif (Python) analiza wkt con expresiones regulares
- rgeo (rubí)
- sf (R)
- Terraformer (JavaScript)
- WellKnownLib (C # .Net) Analizador binario y de texto bien conocido
Protocolos
- GeoSPARQL
- API SensorThings
Ver también
- Funciones simples
- Lenguaje de marcado de geografía
- Representación de texto conocida de sistemas de referencia de coordenadas
Referencias
- ^ Arenque, John R., ed. (2011-05-28), OpenGIS® Implementation Standard for Geographic information - Simple feature access - Part 1: Common architecture , Open Geospatial Consortium , consultado el 28 de enero de 2019
- ^ Tecnología de la información - Lenguajes de base de datos - Paquetes de aplicaciones y multimedia SQL - Parte 3: Spatial (5th ed.), ISO , 2016-01-15 , consultado el 2019-01-28
- ^ Consulte la Especificación de implementación de OGC para obtener información geográfica - Acceso a funciones simples, sección 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 anuncia soporte para datos espaciales
- ^ Soporte de Solr GEO
- ^ Tipo de entrada de texto conocido (WKT) en la documentación de Elasticsearch
- ^ "Consultas geoespaciales" . docs.gigaspaces.com . Consultado el 2 de junio de 2020 .
- ^ https://docs.marklogic.com/guide/search-dev/geospatial
- ^ http://docs.memsql.com/docs/geospatial-guide
- ^ Formato de texto conocido (WKT) , documentación de 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 crear documentación de índice espacial
- ^ "Notas de la versión de HP Vertica 7.1.x" . my.vertica.com . Consultado el 21 de marzo de 2018 .
- ^ https://www.voltdb.com/company/press-releases/voltdb-adds-geospatial-query-support-industrys-innovative-fast-data-platform/
enlaces externos
- Especificación de acceso a funciones simples
- Estándar espacial ISO (hay un cargo por esto)
- Notación BNF de WKT
- Notación EBNF de WKT
- Conversión en línea entre representaciones de objetos geométricos