Membuat tabel PostGIS spasial sebagai hasil dari permintaan PostGIS

8

Ketika saya ingin menyimpan hasil kueri spasial sebagai tabel PostGIS lain, apa yang harus saya lakukan? Saya tertarik mengidentifikasi semua bangunan tempat tinggal yang berada dalam satu set paket:

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;

Ini tampaknya berhasil, tetapi tidak mengembalikan hasil spasial - sebaliknya tabel memiliki representasi biner dari geometri. Saya tidak yakin apa yang harus saya lakukan untuk membuat tabel sebagai hasilnya. Apakah saya harus terlebih dahulu membuat tabel, dan kemudian mengubah hasilnya menjadi geometri?

(Saya telah membaca dokumentasi, tetapi saya merasa seperti saya kehilangan istilah pencarian yang tepat karena saya merasa ini harus menjadi hal yang cukup jelas untuk dilakukan).

Saya menyadari bahwa ada banyak perintah untuk membuat geometri

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

tapi saya tidak tahu pilihan mana yang harus dipilih, atau apakah ini pendekatan yang tepat.

djq
sumber

Jawaban:

8

Anda dapat mendaftarkan Kolom Geometri secara manual di geometry_columns . Sesuatu seperti:

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')
underdark
sumber
1
Saya menerima pesan kesalahan yang mengatakan ERROR: column "polygon" does not exist SQL state: 42703Apakah Anda tahu apa yang menyebabkan kesalahan? Tabelnya memang ada, dan saya juga mencoba menggunakan POLYGON.
djq
Maaf, lupa menambahkan ''.
underdark
5

Hasilnya adalah tabel spasial dengan hanya satu kolom dalam bentuk geometri. Representasi biner benar. Jika Anda menggunakan ini di luar PostGIS (katakanlah ArcGIS atau QGIS atau apa pun), itu mungkin mencari dua hal:

Ragi Yaser Burhum
sumber
Untuk mengklarifikasi (saya akan memperbarui pertanyaan) Saya ingin membuat tabel di PostGIS dengan hasilnya.
djq
ya, jadi pendekatan dan hasil Anda OK. Sama seperti di GeoDatabases, baris di kolom geometri terbuat dari geometri berseri. Jika Anda ingin melihat isinya, cukup gunakan ST_AsText pada kolom geometri, seperti yang akan Anda lakukan dengan tabel postgis lainnya.
Ragi Yaser Burhum