Postgis - Mengubah tipe data 'geometry_dump' menjadi tipe 'geometri'

18

Saya bekerja dengan dataset batas properti yang telah menjalankan ST_Union (), sehingga semua poligon muncul sebagai multi poligon dalam satu baris tabel. Saya ingin memisahkan ini jadi saya mendapatkan baris / poligon terpisah untuk setiap bentuk. Saya telah mencoba menjalankan ST_Dump () pada ini dan tampaknya memisahkan poligon dalam dataset tetapi saya tidak dapat lagi melihat ini dalam GIS (Saya saat ini menggunakan QGIS). Tipe data untuk kolom ini mengatakan itu adalah 'geometry_dump' dan saya berasumsi inilah sebabnya saya tidak bisa memvisualisasikannya. Ketika saya mengakses database Postgres saya dari QGIS, tabel baru ini terdaftar di bawah judul dataset tanpa geometri.

Adakah yang tahu kalau ada sesuatu yang bisa saya lakukan untuk mengubah 'geometry_dump' menjadi 'geometri'?

Roman Trubka
sumber

Jawaban:

30

The geometry_dumptipe data adalah sederhana jenis komposit dengan dua bidang:

  1. path[] - larik 1-d yang menahan posisi geometri di dalam objek yang dibuang, dan
  2. geom - subset geometri sederhana dari aslinya, yang Anda inginkan.

Untuk mengakses geom, cukup gunakan (ST_Dump(the_geom)).geom(tanda kurung tambahan diperlukan, dan sedikit gotcha ketika mengakses anggota dari tipe komposit). Sebagai contoh:

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)

The pengguna PostGIS memiliki contoh-contoh lain yang baik untuk ST_Dump.

Mike T
sumber
Terima kasih, ini yang saya butuhkan. Saya tidak pernah menggunakan atau menemukan sintaks SQL dengan sesuatu seperti ".geom". Bersulang.
Roman Trubka
Kurung tambahan penting agar: Benar: "SELECT (ST_Dump (geom)). Geom FROM table" Salah: "SELECT ST_Dump (geom) .geom FROM table"
HeikkiVesanto