Comprendre le format: WKB de WKT et comment convertir le premier en dernier [fermé]

8

Je ne comprends pas quel type de format j'ai mes données. Le nom de la colonne est wkb_geom , donc j'ai supposé que les données étaient au format WKB, mais ensuite je vérifiais et je n'ai pas pu trouver d'exemple. Les données sont comme ceci:

"0106000020E6100000010000000103000000010000007218000007000060B1D42B4010000060A372454007000060B1D42B40030000009D724540030000E0D5D42B40030000009D724540030000E0D5D42B40050000C08A7245400B000040FAD42B40050000C08A7245400B000040FAD42B40130000807B7245400B000040FAD4 (...)"

Est-ce au format WKB ou WKT ?? Deuxième question, au cas où il serait au format WKB, comment puis-je le convertir au format WKT? J'essayais de suivre cette suggestion

Comment convertir WKB en WKT?

donc la requête est

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

mais il continue de dire que la fonction ST_GeomFromWKB n'existe pas.

user3520314
la source
1
C'est un vidage hexadécimal de WKB, pas WKB lui-même.
Vince
1
Quel environnement logiciel utilisez-vous? Est-ce PostGIS selon l'exemple ou autre chose?. De plus, si vous utilisez Postgresql, avez-vous installé PostGIS (ce n'est pas une partie standard de Postgresql - ce qui pourrait expliquer pourquoi la fonction est manquante - pouvez-vous confirmer? Enfin, PostGIS stocke la géométrie dans un format hexadécimal (notez le commentaire de Vince), alors avez-vous essayé ST_AsText?
MappaGnosis
oui j'utilise PostGIS avec l'environnement postgreSQL. J'ai essayé celui-là aussi comme cela a été suggéré dans le fil que j'ai déjà suivi ... Les fonctions de Paul Ramsey Je les ai toutes essayées .. Btw avec cette requête UPDATE "ita_adm1" SET wkb_geometry = ST_AsText ("wkb_geometry") c'est l'erreur J'obtiens ERRORE: la géométrie SRID (0) ne correspond pas à la colonne SRID (4326)
user3520314

Réponses:

18

D'une manière générale, cela s'appelle WKB codé hexadécimal. Cet exemple spécifique est la version étendue , appelée EWKB, car elle a SRID = 4326 comme trouvé par E6100000.

WKB peut être visualisé sous plusieurs formes. La représentation sous forme de chaîne codée hexadécimale est la plus courante, qui, s'il s'agit en fait de texte, peut être convertie à l'aide d'une simple conversion ::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)))

Utilisez uniquement ST_GeomFromWKB si elle est crue byteaflux binaire.

En outre, lorsque les données de géométrie sont sélectionnées dans une base de données PostGIS, la représentation EWKB au format hexadécimal est affichée dans le résultat de la requête. Pour obtenir des représentations WKT ou EWKT, utilisez les fonctions ST_AsText ou ST_AsEWKT , comme illustré ci-dessus.

Mike T
la source