Postgis - Konwertowanie typu danych „geometry_dump” na typ „geometrii”

18

Pracuję z zestawem danych granic właściwości, w którym uruchomiono ST_Union (), dlatego wszystkie wielokąty pojawiają się jako wieloboki w jednym wierszu tabeli. Chciałbym je rozdzielić, aby uzyskać osobny rząd / wielokąt dla każdego kształtu. Próbowałem uruchomić ST_Dump () na tym i wydaje się, że oddziela wielokąty w zestawie danych, ale nie mogę już tego wyświetlić w GIS (obecnie używam QGIS). Typ danych tej kolumny mówi, że to „zrzut geometrii” i zakładam, że właśnie dlatego nie mogę jej wizualizować. Kiedy uzyskuję dostęp do mojej bazy danych Postgres z QGIS, ta nowa tabela jest wymieniona pod nagłówkiem zestawów danych bez geometrii.

Czy ktoś wie, czy mogę coś zrobić, aby przekonwertować „zrzut geometrii” na „geometrię”?

Roman Trubka
źródło

Odpowiedzi:

31

Typ geometry_dumpdanych to prosty typ złożony z dwoma polami:

  1. path[] - tablica 1-d utrzymująca pozycję geometrii w zrzuconym obiekcie, oraz
  2. geom - prosty podzbiór geometrii oryginału, który jest tym, czego chcesz.

Aby uzyskać dostęp geom, po prostu użyj (ST_Dump(the_geom)).geom(wymagane są dodatkowe nawiasy i jest to trochę kłopotliwe przy uzyskiwaniu dostępu do elementów z typów złożonych). Na przykład:

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)

Podręcznik PostGIS zawiera inne dobre przykłady dla ST_Dump.

Mike T.
źródło
Dzięki, właśnie tego potrzebowałem. Nigdy nie korzystałem ze składni SQL ani jej nie spotkałem z czymś takim jak „.geom”. Twoje zdrowie.
Roman Trubka
1
Dodatkowe nawiasy klamrowe są ważne, więc: Poprawnie: „SELECT (ST_Dump (geom)). Geom Z tabeli” Niepoprawnie: „SELECT ST_Dump (geom) .geom Z tabeli”
HeikkiVesanto