Ich versuche, diesen ArcGIS-Prozess in PostGIS zu replizieren: http://blogs.esri.com/esri/arcgis/2012/11/13/spaghetti_and_meatballs/ . Hier wird beschrieben, wie gepufferte Punkte anhand ihrer Schnittpunkte in Polygone zerlegt werden, die Anzahl der Ebenen gezählt und diese den Polygonen zugeordnet werden, um sie zu klassifizieren. Ich verwende es, um eine grobe Punktdichtekarte mit Vektoren zu erstellen, und die Ergebnisse waren für meinen Datensatz in ArcGIS überraschend gut. Ich habe jedoch Probleme, in PostGIS etwas zu finden, das für die Erstellung dynamischer Punktdichteebenen für eine Webkarte erforderlich ist.
In ArcGIS habe ich einfach das Schnittwerkzeug auf meiner Ebene mit gepufferten Punkten ausgeführt, um die benötigten Formen zu erstellen.
In PostGIS habe ich diese Abfrage ausgeführt:
CREATE TABLE buffer_table AS
SELECT a.gid AS gid, ST_Buffer(a.geo,.003) AS geo
FROM public.pointTable a;
CREATE TABLE intersections AS
SELECT a.gid AS gid_a, b.gid AS gid_b, ST_Intersection(a.geo,b.geo) AS geo
FROM public.pointTable a, public.pointTable b
WHERE ST_Intersects(a.geo, b.geo) AND a.gid < b.gid;
DELETE FROM intersections WHERE id_a = id_b;
Die Ausgabe sieht ziemlich identisch mit der ArcGIS-Ausgabe aus, außer dass die Polygone nicht in dem Maße zerlegt werden, wie es für eine aussagekräftige Dichtekarte erforderlich ist. Hier sind Screenshots von dem, was ich meine:
ArcGIS befindet sich links und PostGIS rechts. Es ist etwas schwer zu sagen, aber das ArcGIS-Bild zeigt das 'innere' Polygon, das dort erstellt wurde, wo sich alle 3 Puffer schneiden. Die PostGIS-Ausgabe hingegen erstellt dieses innere Polygon nicht und behält stattdessen seine Komponenten bei. Dies macht es unmöglich, eine Klassifizierung für nur diesen Innenbereich mit 3 übereinanderliegenden Schichten im Vergleich zu nur 1 für die Außenteile bereitzustellen.
Kennt jemand eine PostGIS-Funktion, um das Polygon so weit aufzuschlüsseln, wie ich es brauche? Kennt jemand einen besseren Weg, um eine Punktdichtekarte mit Vektoren in PostGIS zu erstellen?