Postgis - 'geometry_dump' veri türünü 'geometri' türüne dönüştürme


18

Üzerinde çalışan ST_Union () olan özellik sınırlarının bir veri kümesi ile çalışıyorum, böylece tüm çokgenler bir tablonun bir satırında çok çokgen olarak görünür. Bunları ayırmak istiyorum, böylece her şekil için ayrı bir satır / çokgen elde ediyorum. Bu konuda ST_Dump () çalışmayı denedim ve veri kümesindeki çokgenleri ayırmak gibi görünüyor, ancak artık bir GIS'de görüntüleyemiyorum (şu anda QGIS kullanıyorum). Bu sütunun veri türü bunun bir 'geometry_dump' olduğunu söylüyor ve bu yüzden onu görselleştiremiyorum. Postgres veritabanına QGIS'den eriştiğimde, bu yeni tablo geometri olmadan veri kümeleri başlığı altında listeleniyor.

Herkes 'geometri_dump'ı' geometriye dönüştürmek için yapabileceğim bir şey olup olmadığını biliyor mu?

Yanıtlar:


31

geometry_dumpVeri türü basit bir kompozit tip iki alanlarla:

  1. path[] - dökülen nesne içindeki geometrinin konumunu tutan bir 1-d dizi ve
  2. geom - Orijinalin basit bir geometri alt kümesi, bu da istediğiniz şeydir.

Erişmek için geomsadece kullanın (ST_Dump(the_geom)).geom(ekstra parantez gereklidir ve kompozit türlerden üyelere erişirken biraz gotcha olur). Örneğin:

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)

PostGIS kılavuzu ST_Dump için diğer iyi örnekler vardır.


Teşekkürler, tam da ihtiyacım olan bu. Ben hiç kullanmadım veya ".geom" gibi bir şey ile SQL sözdizimi rastlamak. Şerefe.
Roman Trubka

1
Ek parantezler önemlidir: Doğru: "SELECT (ST_Dump (geom)). Geom FROM tablosu" Yanlış: "SELECT ST_Dump (geom) .geom FROM tablosu"
HeikkiVesanto
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.