Entendendo o formato: WKB da WKT e como converter o primeiro para o último [fechado]

8

Não entendo que tipo de formato tenho meus dados. O nome da coluna é wkb_geom , então eu supunha que os dados estavam no formato WKB, mas então eu estava verificando e não consegui encontrar um exemplo disso. Os dados são assim:

"0106000020E6100000010000000103000000010000007218000007000060B1D42B4010000060A372454007000060B1D42B40030000009D724540030000E0D5D42B40030000009D724540030000E0D5D42B40050000C08A7245400B000040FAD42B40050000C08A7245400B000040FAD42B40130000807B7245400B000040FAD4 (...)"

Está no formato WKB ou WKT? Segunda pergunta, se estiver no formato WKB, como posso convertê-lo no formato WKT? Eu estava tentando seguir essa sugestão

Como converter WKB para WKT?

então a consulta é

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

mas continua dizendo que a função ST_GeomFromWKB não existe.

user3520314
fonte
1
Esse é um dump hexadecimal do WKB, não o próprio WKB.
Vince
1
Qual ambiente de software você está usando? É PostGIS conforme o exemplo ou algo mais ?. Além disso, se você estiver usando o Postgresql, possui o PostGIS instalado (não é uma parte padrão do Postgresql - o que poderia explicar por que está faltando a função - você pode confirmar? Finalmente o PostGIS armazena geometria em um formato hexadecimal (observe o comentário de Vince), então você já tentou ST_AsText?
MappaGnosis 6/15
sim, eu uso o PostGIS com o ambiente postgreSQL. Eu tentei esse também, como foi sugerido no segmento que eu já segui ... As funções de Paul Ramsey Eu tentei todas elas. Btw com essa consulta UPDATE "ita_adm1" SET wkb_geometry = ST_AsText ("wkb_geometry") que é o erro recebo errore: Geometria SRID (0) não corresponde SRID coluna (4326)
user3520314

Respostas:

18

De um modo geral, isso é chamado de WKB codificado em hexadecimal. Este exemplo específico é a versão estendida , chamada EWKB, pois possui SRID = 4326, conforme encontrado por E6100000.

O WKB pode ser visualizado de várias formas. A representação de seqüência de caracteres codificada em hexadecimal é a mais comum, que se for realmente texto pode ser convertida usando uma conversão simples ::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)))

Use apenas ST_GeomFromWKB se for um byteafluxo binário bruto .

Além disso, quando dados de geometria são selecionados de um banco de dados PostGIS, a representação EWKB codificada em hexadecimal é mostrada no resultado da consulta. Para obter representações WKT ou EWKT, use as funções ST_AsText ou ST_AsEWKT , conforme demonstrado acima.

Mike T
fonte