Dalam kode sampel untuk fungsi PostGIS ST_ConvexHull , banyak poligon akan dibuat berdasarkan nilai diskrit yang berbeda yang ditemukan di bidang "disease_type".
--Get estimate of infected area based on point observations
SELECT d.disease_type,
ST_ConvexHull(ST_Collect(d.the_geom)) As the_geom
FROM disease_obs As d
GROUP BY d.disease_type;
Katakanlah ada bidang numerik (sebut saja "bidang saya") dengan nilai kontinu dari 0-5. Bagaimana Anda akan menghasilkan hasil yang serupa dengan GROUP BY tetapi mendefinisikan breakpoint Anda sendiri (misalnya: 0-1.25, 1.25-3.5, 3.5-5)?
postgis
postgresql
RyanKDalton
sumber
sumber
Jawaban:
Anda dapat menggunakan CASE untuk membuat kelas. Sesuatu seperti itu:
sumber
Halo
Apa yang saya gunakan untuk melakukan dalam kasus-kasus itu adalah membuat tabel dengan kelas-kelas dan bergabung melawan mereka atau menggunakan subquery untuk membuat daftar kelas.
Saya pikir itu memberikan pendekatan yang lebih intuitif dan saya pikir itu lebih fleksibel karena Anda dapat memperbarui kelas hanya dengan memperbarui tabel.
Manfaat lain adalah Anda bisa mendapatkan kelas kosong juga.
pendekatan subquery bisa terlihat seperti:
Di sini saya menggunakan hak untuk bergabung juga mendapatkan kelas-kelas kosong yang kadang-kadang berguna. Jika Anda tidak ingin yang kosong cukup ubah menjadi gabungan batin.
Jika Anda memindahkan kelas ke tabel dan menempatkan sisa kueri dalam tampilan, Anda dapat mengubah kelas tanpa menyentuh kueri.
HTH / Nicklas
sumber