Hiểu định dạng: WKB từ WKT và cách chuyển đổi cái đầu tiên thành cái sau [đã đóng]


8

Tôi không hiểu loại định dạng nào tôi có dữ liệu của mình. Tên cột là wkb_geom , vì vậy tôi cho rằng dữ liệu ở định dạng WKB, nhưng sau đó tôi đã kiểm tra xung quanh và tôi không thể tìm thấy ví dụ về nó. Dữ liệu là như thế này:

"0106000020E6100000010000000103000000010000007218000007000060B1D42B4010000060A372454007000060B1D42B40030000009D724540030000E0D5D42B40030000009D724540030000E0D5D42B40050000C08A7245400B000040FAD42B40050000C08A7245400B000040FAD42B40130000807B7245400B000040FAD4 (...)"

Nó ở định dạng WKB hay WKT ?? Câu hỏi thứ hai, trong trường hợp nó ở định dạng WKB, làm thế nào tôi có thể chuyển đổi nó thành định dạng WKT? Tôi đã cố gắng làm theo gợi ý này

Làm thế nào để chuyển đổi WKB sang WKT?

vì vậy truy vấn là

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

nhưng nó cứ nói rằng hàm ST_GeomFromWKB không tồn tại.


1
Đó là một bãi chứa thập lục phân của WKB, không phải bản thân WKB.
Vince

1
Bạn đang sử dụng môi trường phần mềm nào? Có phải PostGIS theo ví dụ hay cái gì khác không?. Ngoài ra, nếu bạn đang sử dụng Postgresql, bạn đã cài đặt PostGIS chưa (nó không phải là một phần tiêu chuẩn của Postgresql - điều này có thể giải thích tại sao chức năng bị thiếu - bạn có thể xác nhận không? Cuối cùng, PostGIS lưu trữ hình học ở định dạng thập lục phân (lưu ý bình luận của Vince), vậy bạn đã thử ST_AsText chưa?
MappaGnosis

có, tôi sử dụng PostGIS với môi trường postgreSQL. Tôi cũng đã thử một cái như nó đã được đề xuất trong luồng mà tôi đã theo dõi ... Các chức năng của Paul Ramsey Tôi đã thử tất cả .. Btw với truy vấn đó CẬP NHẬT "ita_adm1" SET wkb_geometry = ST_AsText ("wkb_geometry") đó là lỗi Tôi nhận được ERRORE: Geometry SRID (0) không khớp với cột SRID (4326)
user3520314

Câu trả lời:


18

Nói chung, đây được gọi là WKB được mã hóa hex. Ví dụ cụ thể này là phiên bản mở rộng , được gọi là EWKB, vì nó có SRID = 4326 như được tìm thấy bởi E6100000.

WKB có thể được xem trong một vài hình thức. Biểu diễn chuỗi được mã hóa bằng hex là phổ biến nhất, nếu nó thực sự là văn bản có thể được chuyển đổi bằng cách sử dụng một biểu mẫu đơn giản ::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)))

Chỉ sử dụng ST_GeomFromWKB nếu đó là bytealuồng nhị phân thô .

Hơn nữa, khi dữ liệu hình học được chọn từ cơ sở dữ liệu PostGIS, biểu diễn EWKB được mã hóa hex được hiển thị trong kết quả truy vấn. Để nhận các biểu diễn WKT hoặc EWKT, hãy sử dụng các hàm ST_AsText hoặc ST_AsEWKT , như đã trình bày ở trên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.