Comprender el formato: WKB de WKT y cómo convertir el primero en el último [cerrado]

8

No entiendo qué tipo de formato tengo mis datos. El nombre de la columna es wkb_geom , así que supuse que los datos estaban en formato WKB, pero luego estaba revisando y no pude encontrar un ejemplo. Los datos son así:

"0106000020E6100000010000000103000000010000007218000007000060B1D42B4010000060A372454007000060B1D42B40030000009D724540030000E0D5D42B40030000009D724540030000E0D5D42B40050000C08A7245400B000040FAD42B40050000C08A7245400B000040FAD42B40130000807B7245400B000040FAD4 (...)"

¿Está en formato WKB o WKT? Segunda pregunta, en caso de que esté en formato WKB, ¿cómo puedo convertirlo al formato WKT? Estaba tratando de seguir esta sugerencia

¿Cómo convertir WKB a WKT?

entonces la consulta es

UPDATE "ita_adm1"
SET wkb_geometry  = ST_GeomFromWKB("wkb_geometry",4326)

pero sigue diciendo que la función ST_GeomFromWKB no existe.

usuario3520314
fuente
1
Ese es un volcado hexadecimal de WKB, no WKB en sí.
Vince
1
¿Qué entorno de software estás usando? ¿Es PostGIS según el ejemplo o algo más? Además, si está utilizando Postgresql, ¿tiene instalado PostGIS (no es una parte estándar de Postgresql, lo que podría explicar por qué falta la función), ¿puede confirmar? Finalmente, PostGIS almacena la geometría en un formato hexadecimal (tenga en cuenta el comentario de Vince), Entonces, ¿has probado ST_AsText?
MappaGnosis
Sí, uso PostGIS con el entorno postgreSQL. También probé este como se sugirió en el hilo que ya seguí ... Funciones de Paul Ramsey Las probé todas ... Por cierto, con esa consulta ACTUALIZAR "ita_adm1" SET wkb_geometry = ST_AsText ("wkb_geometry") ese es el error Obtengo ERRORE: Geometry SRID (0) no coincide con la columna SRID (4326)
user3520314

Respuestas:

18

En términos generales, esto se llama WKB codificado en hexadecimal. Este ejemplo específico es la versión extendida , llamada EWKB, ya que tiene SRID = 4326 como se encuentra en E6100000.

WKB se puede ver en algunas formas. La representación de cadena codificada en hexadecimal es la más común, que si en realidad es texto, se puede convertir usando una conversión simple ::geometry:

SELECT ST_AsText(wkb_geometry), ST_AsEWKT(wkb_geometry)
FROM (
  SELECT '0106000020620D000001000000010300000001000000040000000000000'
  '00000000000000000000000000000000000000000000000000000F03F000000000'
  '0000040000000000000004000000000000000000000000000000000'::geometry AS wkb_geometry
) AS f;
-[ RECORD 1 ]------------------------------------------
st_astext | MULTIPOLYGON(((0 0,0 1,2 2,0 0)))
st_asewkt | SRID=3426;MULTIPOLYGON(((0 0,0 1,2 2,0 0)))

Solo use ST_GeomFromWKB si es una byteasecuencia binaria sin formato .

Además, cuando se seleccionan datos de geometría de una base de datos PostGIS, la representación EWKB codificada en hexadecimal se muestra en el resultado de la consulta. Para obtener representaciones WKT o EWKT, use las funciones ST_AsText o ST_AsEWKT , como se demostró anteriormente.

Mike T
fuente