Hallo
In diesen Fällen erstelle ich eine Tabelle mit den Klassen und verbinde sie mit ihnen oder verwende eine Unterabfrage, um eine Liste von Klassen zu erstellen.
Ich denke, das bietet einen intuitiveren Ansatz und ich denke, es ist flexibler, da Sie die Klassen aktualisieren können, indem Sie einfach eine Tabelle aktualisieren.
Ein weiterer Vorteil ist, dass Sie auch die leeren Klassen erhalten können.
Der Unterabfrage-Ansatz könnte ungefähr so aussehen:
SELECT
d.disease_type,
ST_ConvexHull(ST_Collect(d.the_geom)) AS the_geom FROM disease_obs
RIGHT JOIN
(SELECT 0::float AS classbottom, 1.25::float AS classtop, 1::int AS classid
UNION ALL
SELECT 1.25::float AS classbottom, 3.5::float AS classtop, 2::int AS classid
UNION ALL
SELECT 3.5::float AS classbottom, 5::float AS classtop, 3::int AS classid) AS classes
ON disease_obs.continuous_value>=classes.classbottom AND disease_obs.continuous_value<classes.classbottom
GROUP BY classes.id;
Hier habe ich einen rechten Join verwendet, um auch die leeren Klassen zu erhalten, was manchmal nützlich sein kann. Wenn Sie nicht möchten, dass die leeren einfach zu einem inneren Join wechseln.
Wenn Sie die Klassen in eine Tabelle verschieben und den Rest der Abfrage in einer Ansicht platzieren, können Sie die Klassen ändern, ohne die Abfrage zu berühren.
HTH / Nicklas