Erstellen einer räumlichen PostGIS-Tabelle als Ergebnis einer PostGIS-Abfrage

8

Was kann ich tun, wenn ich die Ergebnisse einer räumlichen Abfrage als eine andere PostGIS-Tabelle speichern möchte? Ich bin daran interessiert, alle Wohngebäude zu identifizieren, die in eine Reihe von Parzellen fallen:

CREATE TABLE residentialBuildings AS
SELECT buildings.the_geom
FROM parcels as p
JOIN buildings as b
ON ST_Contains(p.the_geom, b.the_geom)
WHERE p.residentialarea > 0;

Dies scheint zu funktionieren, gibt jedoch kein räumliches Ergebnis zurück. Stattdessen enthält die Tabelle die binäre Darstellung der Geometrie. Ich bin mir nicht sicher, was ich tun soll, um eine Tabelle zu erstellen. Muß ich zuerst machte einen Tisch, und dann wandelt das Ergebnis in eine Geometrie?

(Ich habe die Dokumentation gelesen, aber ich habe das Gefühl, dass mir die richtigen Suchbegriffe fehlen, da ich der Meinung bin, dass dies eine ziemlich offensichtliche Sache sein muss.)

Mir ist klar, dass es viele Befehle gibt, um eine Geometrie zu erstellen

ST_GeogFromText 
ST_GeographyFromText 
ST_GeogFromWKB 
ST_GeomCollFromText 
ST_GeomFromEWKB 
ST_GeomFromEWKT 
ST_GeometryFromText 
ST_GeomFromGML 
ST_GeomFromKML 
ST_GMLToSQL 
ST_GeomFromText 
ST_GeomFromWKB 

Ich weiß jedoch nicht, aus welcher Option ich wählen soll oder ob dies der richtige Ansatz ist.

djq
quelle

Antworten:

8

Sie können Geometriespalten manuell in geometr_columns registrieren . Etwas wie:

INSERT INTO geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type")
VALUES ('', 'public', 'residentialBuildings', 'the_geom', 2, <yourSRID>, 'MULTIPOLYGON')
Unterdunkel
quelle
1
Ich erhalte eine Fehlermeldung mit der Aufschrift ERROR: column "polygon" does not exist SQL state: 42703Wissen Sie, was den Fehler verursachen könnte? Die Tabelle existiert, und ich habe auch versucht, sie zu verwenden POLYGON.
DJQ
Sorry, habe vergessen '' hinzuzufügen.
Underdark
5

Das Ergebnis ist eine räumliche Tabelle mit nur einer Spalte in Geometrieform. Die binäre Darstellung ist korrekt. Wenn Sie dies außerhalb von PostGIS verwenden (z. B. ArcGIS oder QGIS oder was auch immer), werden wahrscheinlich zwei Dinge gesucht:

Ragi Yaser Burhum
quelle
Zur Verdeutlichung (ich werde die Frage aktualisieren) möchte ich eine Tabelle in PostGIS mit dem Ergebnis erstellen.
DJQ
Ja, Ihr Ansatz und Ihr Ergebnis sind in Ordnung. Genau wie in GeoDatabases bestehen die Zeilen in der Geometriespalte aus serialisierten Geometrien. Wenn Sie den Inhalt anzeigen möchten, verwenden Sie einfach ST_AsText für die Geometriespalte, genau wie bei jeder anderen Postgis-Tabelle.
Ragi Yaser Burhum