Postgis - Chuyển đổi kiểu dữ liệu 'hình học_dump' sang loại 'hình học'


18

Tôi đang làm việc với một tập dữ liệu về các ranh giới thuộc tính có ST_Union () chạy trên nó, do đó tất cả các đa giác xuất hiện dưới dạng đa giác trong một hàng của bảng. Tôi muốn tách chúng ra để tôi có được một hàng / đa giác riêng cho mỗi hình. Tôi đã thử chạy ST_Dump () trên cái này và nó dường như tách ra các đa giác trong bộ dữ liệu nhưng tôi không còn có thể xem cái này trong một hệ thống GIS (tôi hiện đang sử dụng QGIS). Kiểu dữ liệu cho cột này cho biết đó là 'hình học_dump' và tôi cho rằng đây là lý do tại sao tôi không thể hình dung được nó. Khi tôi truy cập cơ sở dữ liệu Postgres của mình từ QGIS, bảng mới này được liệt kê dưới tiêu đề của bộ dữ liệu mà không có hình học.

Có ai biết nếu tôi có thể làm gì đó để chuyển đổi 'hình học_dump' thành 'hình học' không?

Câu trả lời:


30

Kiểu geometry_dumpdữ liệu là kiểu hỗn hợp đơn giản với hai trường:

  1. path[] - mảng 1-d giữ vị trí hình học trong đối tượng bị đổ và
  2. geom - một tập hợp hình học đơn giản của bản gốc, đó là những gì bạn muốn.

Để truy cập geom, chỉ cần sử dụng (ST_Dump(the_geom)).geom(bắt buộc phải có thêm dấu ngoặc đơn và là một chút bí mật khi truy cập các thành viên từ các loại tổng hợp). Ví dụ:

WITH data AS (SELECT 'MULTIPOLYGON (((170 190, 110 150, 200 120, 170 190)), 
  ((220 160, 230 110, 280 120, 220 160)), 
  ((220 200, 260 240, 270 190, 220 200)))'::geometry AS the_geom)

SELECT ST_AsText( (ST_Dump(the_geom)).geom )
FROM data;
                 st_astext
--------------------------------------------
 POLYGON((170 190,110 150,200 120,170 190))
 POLYGON((220 160,230 110,280 120,220 160))
 POLYGON((220 200,260 240,270 190,220 200))
(3 rows)

Các nhãn hiệu PostGIS có các ví dụ tốt khác cho ST_Dump.


Cảm ơn, đây chỉ là những gì tôi cần. Tôi chưa bao giờ sử dụng hoặc bắt gặp cú pháp SQL với một cái gì đó như ".geom". Chúc mừng.
Roman Trubka

Dấu ngoặc phụ rất quan trọng vì vậy: Chính xác: "CHỌN (ST_Dump (geom)). Geom TỪ bảng" Không chính xác: "CHỌN ST_Dump (geom) .geom TỪ bảng"
HeikkiVesanto
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.