Bagaimana cara mendapatkan tipe geometri dari tabel PostGIS kosong?

9

Saya memiliki aplikasi web yang perlu mengetahui jenis geometri bidang geom tabel PostGIS sebelum memasukkan baris ke dalamnya. Saya menggunakan kueri berikut untuk menentukan tipe geometri kolom geom:

SELECT GeometryType(geom) FROM my_schema.building LIMIT 1

Ini mengembalikan tipe geometri dari baris aktual, jadi itu tidak berfungsi ketika meja saya kosong. Bagaimana cara menentukan jenis geometri kolom geometri itu sendiri?

Penyamak
sumber

Jawaban:

16

Kueri dapat dijalankan terhadap geometry_columnstabel dengan cara ini

SELECT type 
FROM geometry_columns 
WHERE f_table_schema = 'my_schema' 
AND f_table_name = 'building' 
and f_geometry_column = 'geom';

(atau, jika Anda menggunakan tipe geografi , ganti geometry_columnsdengan geography_columnsdan f_geometry_columndengan f_geography_column)

atlefren
sumber
Sql dalam jawaban akan kembali geometryuntuk jenis, sementara kita masih tidak bisa tahu apakah geometri itu titik atau garis.
Giser
1
Itu berarti bahwa kolom geometri Anda diatur ke jenis geometri "geometri" (yaitu menerima semua jenis geometri). Dalam hal ini Anda harus memeriksa setiap geometri secara tidak jelas menggunakan ST_GeometryType
atlefren
SELECT GeometryType(geom) FROM my_schema.building LIMIT 1seperti ini sebagai pos OP? Tidak berfungsi jika tabel kosong.
Giser
Dan satu hal lagi, jika semua kolom geometri diset untuk geometrymengetik untuk semua tabel, dapatkah saya membuat tampilan berisi semua tabel yang mungkin berisi points lines polyogn?
Giser
1
Baik. Analogi: menyatakan bahwa kolom geom adalah tipe "geometri" seperti menunjuk laci untuk kaus kaki warna apa pun. Memeriksa apa warna kaus kaki di laci ini adalah mustahil ketika kosong.
atlefren
3

Cari tabel geometry_columns. Semua kolom geo dengan tipe geometri dan srid terdaftar di sini. Jika ada kolom dengan tipe GEOMETRI di sana semua tipe geometri dapat disimpan.

wumpz
sumber