Das Format verstehen: WKB von WKT und wie man das erste in das letztere konvertiert [geschlossen]

8

Ich verstehe nicht, in welchem ​​Format ich meine Daten habe. Der Spaltenname ist wkb_geom , also nahm ich an, dass die Daten im WKB-Format vorliegen, aber dann habe ich mich umgesehen und konnte kein Beispiel dafür finden. Daten sind wie folgt:

"0106000020E6100000010000000103000000010000007218000007000060B1D42B4010000060A372454007000060B1D42B40030000009D724540030000E0D5D42B40030000009D724540030000E0D5D42B40050000C08A7245400B000040FAD42B40050000C08A7245400B000040FAD42B40130000807B7245400B000040FAD4 (...)""

Ist es im WKB- oder WKT-Format? Zweite Frage: Wenn es im WKB-Format vorliegt, wie kann ich es in das WKT-Format konvertieren? Ich habe versucht, diesem Vorschlag zu folgen

Wie konvertiere ich WKB zu WKT?

so ist die Abfrage

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

aber es wird immer wieder gesagt, dass die Funktion ST_GeomFromWKB nicht existiert.

user3520314
quelle
1
Das ist ein hexadezimaler Dump von WKB, nicht von WKB selbst.
Vince
1
Welche Softwareumgebung verwenden Sie? Ist es PostGIS gemäß dem Beispiel oder etwas anderes? Wenn Sie Postgresql verwenden, ist PostGIS installiert (es ist kein Standardbestandteil von Postgresql - was erklären könnte, warum die Funktion fehlt - können Sie dies bestätigen? Schließlich speichert PostGIS die Geometrie in einem hexadezimalen Format (siehe Vince's Kommentar). Also haben Sie ST_AsText ausprobiert?
MappaGnosis
Ja, ich verwende PostGIS mit der PostgreSQL-Umgebung. Ich habe es auch versucht, wie es in dem Thread vorgeschlagen wurde, dem ich bereits gefolgt bin ... Paul Ramseys Funktionen Ich habe sie alle ausprobiert. Übrigens mit dieser Abfrage UPDATE "ita_adm1" SET wkb_geometry = ST_AsText ("wkb_geometry"), das ist der Fehler Ich erhalte FEHLER: Geometrie SRID (0) stimmt nicht mit Spalte SRID (4326)
überein

Antworten:

18

Im Allgemeinen wird dies als hexadezimal codiertes WKB bezeichnet. Dieses spezielle Beispiel ist die erweiterte Version mit dem Namen EWKB, da sie die SRID = 4326 hat, wie von gefunden E6100000.

WKB kann in einigen Formen angezeigt werden. Die hexadezimal codierte Zeichenfolgendarstellung ist die häufigste, die, wenn es sich tatsächlich um Text handelt, mit einer einfachen Umwandlung konvertiert werden kann ::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)))

Verwenden Sie ST_GeomFromWKB nur, wenn es sich um einen rohen Binärstrom handelt bytea.

Wenn Geometriedaten aus einer PostGIS-Datenbank ausgewählt werden, wird außerdem die hexadezimal codierte EWKB-Darstellung im Abfrageergebnis angezeigt. Verwenden Sie die oben gezeigten Funktionen ST_AsText oder ST_AsEWKT , um WKT- oder EWKT-Darstellungen abzurufen .

Mike T.
quelle