Memahami format: WKB dari WKT dan bagaimana mengkonversi yang pertama menjadi yang terakhir [ditutup]

8

Saya tidak mengerti format data apa yang saya miliki. Nama kolomnya adalah wkb_geom , jadi saya mengira bahwa data itu dalam format WKB, tapi kemudian saya memeriksa sekitar dan saya tidak dapat menemukan contohnya. Data seperti ini:

"0106000020E6100000010000000103000000010000007218000007000060B1D42B4010000060A372454007000060B1D42B40030000009D724540030000E0D5D42B40030000009D724540030000E0D5D42B40050000C08A7245400B000040FAD42B40050000C08A7245400B000040FAD42B40130000807B7245400B000040FAD4 (...)"

Apakah dalam format WKB atau WKT ?? Pertanyaan kedua, jika itu dalam format WKB, bagaimana saya bisa mengubahnya menjadi format WKT? Saya mencoba mengikuti saran ini

Bagaimana cara mengubah WKB ke WKT?

jadi pertanyaannya adalah

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

tetapi terus mengatakan bahwa fungsi ST_GeomFromWKB tidak ada.

pengguna3520314
sumber
1
Itu adalah dump hexadecimal dari WKB, bukan WKB itu sendiri.
Vince
1
Lingkungan perangkat lunak apa yang Anda gunakan? Apakah PostGIS sesuai dengan contoh atau sesuatu yang lain? Juga, jika Anda menggunakan Postgresql, apakah Anda telah menginstal PostGIS (itu bukan bagian standar dari Postgresql - yang dapat menjelaskan mengapa fungsi tersebut hilang - dapatkah Anda mengonfirmasi? Akhirnya PostGIS menyimpan geometri dalam format heksadesimal (perhatikan komentar Vince), jadi sudahkah Anda mencoba ST_AsText?
MappaGnosis
ya saya menggunakan PostGIS dengan lingkungan postgreSQL. Saya telah mencobanya juga seperti yang disarankan di utas yang sudah saya ikuti ... Fungsi Paul Ramsey Saya sudah mencoba semuanya .. Btw dengan permintaan itu UPDATE "ita_adm1" SET wkb_geometry = ST_AsText ("wkb_geometry") itulah kesalahannya Saya mendapatkan ERRORE: Geometry SRID (0) tidak cocok dengan kolom SRID (4326)
user3520314

Jawaban:

18

Secara umum, ini disebut WKB hex-encoded. Contoh spesifik ini adalah versi diperpanjang , disebut EWKB, karena memiliki SRID = 4326 seperti yang ditemukan oleh E6100000.

WKB dapat dilihat dalam beberapa bentuk. Representasi string hex-encoded adalah yang paling umum, yang jika sebenarnya teks dapat dikonversi menggunakan ::geometrygips sederhana :

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)))

Hanya gunakan ST_GeomFromWKB jika itu adalah byteaaliran biner mentah .

Lebih lanjut, ketika data geometri dipilih dari database PostGIS, representasi EWKB yang disandikan-hex ditunjukkan pada hasil permintaan. Untuk mendapatkan representasi WKT atau EWKT, gunakan fungsi ST_AsText atau ST_AsEWKT , seperti yang ditunjukkan di atas.

Mike T
sumber