Wie teile ich viele Punkte räumlich auf?

9

Ich habe Standortdaten von Kunden mit über 130 Millionen Datensätzen, die im ganzen Land verteilt sind. Dies ist eine räumliche Tabelle in PostGIS

Ich möchte jetzt das gesamte Land in "Servicebereiche" aufteilen, so dass jeder Servicebereich Folgendes hat:

  • Mindestens 30 Kunden
  • Ist höchstens 1000 km².

Ich habe das Aggregat-Tool von ArcGIS untersucht, aber es erfüllt meine Kriterien nicht, da:

  • Die Mindestanzahl wird nicht berücksichtigt
  • Ich habe nur Qgis & Grass zur Verfügung.

Mit welchem ​​Tool / Prozess kann ich dies erreichen?

Devdatta Tengshe
quelle

Antworten:

4

Ich habe ein kleines Experiment durchgeführt:

  • generierte 900 zufällige Punkte
  • verband sie mit minimalem Spanning Tree
  • irgendwo in der Mitte ein Waschbecken gepflückt

Geben Sie hier die Bildbeschreibung ein

  • drehte die Links um, um einen Richtungsgraphen zu bilden, dh jeder Knoten entlud sich schließlich in dieselbe Senke

Geben Sie hier die Bildbeschreibung ein

  • Ausgeführtes Skript, mit dem ich kleinere Einzugsgebiete zu größeren zusammenfasse, um eine durchschnittliche "Größe" von 30 zu erhalten.

ERGEBNIS:

Geben Sie hier die Bildbeschreibung ein

Lassen Sie mich wissen, wenn dies von Interesse ist. Ich kann das Skript ausgraben (es ist bereits irgendwo auf dieser Site veröffentlicht) oder den Workflow ausführlicher erläutern. Ich habe ArcGIS verwendet.

-------------------------------------

** UPDATE September 2017

Es ist dem obigen sehr ähnlich, verwendet jedoch Rasteransatz-, Entfernungs- und Hydrologie-Tools von ArcGIS. Ein schwieriger Teil ist die Erstellung eines minimalen Spannbaums und das Auffinden von Einzugsgebieten im Rasterformat.

Dies sind die Schritte, die ich befolgt habe:

  • Triangulieren Sie Knoten (Punkte zum Cluster), extrahieren Sie dreieckige Netzwerkkanten und konvertieren Sie Knoten in das WEIGHT- Raster:

Geben Sie hier die Bildbeschreibung ein

  • Feld in der Kantentabelle berechnen: Ich verwende (ShapeLength ^ 3 / 1e6). In Raster konvertieren, Lücken mit sehr hohem Wert füllen, um COST- Raster zu erstellen . Dies fördert den Fluss zwischen nahe beieinander liegenden Punkten. Es ist zu hoffen, dass die Strömungspfade dem Minimum Spanning Tree (MST) ähneln, anstatt sich in der Nähe von geraden Linien in Richtung Senke zu befinden.
  • Wählen Sie einen beliebigen Knoten (OUTLET / SINK) aus und erstellen Sie ein Cost Back Link-Raster unter Verwendung der COST-Oberfläche und von SINK als Quelle. Konvertieren Sie das Backlink-Raster mithilfe von in ein anständiges Flow Direction-Raster Int(Power(2,"backlink"-1)). Sammeln Sie den Durchfluss mithilfe der Durchflussrichtung und des Gewichtsrasters. Wie man sehen kann, erzeugt der Trick mit der Kostenzuweisung wirklich etwas Ähnliches wie MST:

Geben Sie hier die Bildbeschreibung ein

Ich habe mich entschlossen, Punkte nach 50 zu gruppieren. Unter Berücksichtigung der fraktalen Struktur des Netzwerks habe ich den Grenzwert zu Beginn von 'High Flow Streams', dh Con ("FlowAccum"> 45,1), etwas niedriger als die INLET-Punkte festgelegt. Einlässe definiert als Zellen wo

Hoher Durchfluss vorhanden & Fokusstatistik = 2 & Zelle ist kein SINK (kein Datenwert in Durchflussrichtung) :

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie Einlässe als Stockpunkte und Durchflussrichtung, um Einzugsgebiete zu definieren. Bild zeigt 115 abgeleitete Einzugsgebiete:

Geben Sie hier die Bildbeschreibung ein

Ihre Statistiken: Mittelwert = 50,33, min = 46 und max = 74.

Um einen zweiten Satz von Einzugsgebieten zu erhalten, reicht es aus, das GEWICHTS-Raster unter bereits definierten Einzugsgebieten zu löschen, die Durchflussvakuumierung usw. zu berechnen.

Die Methode funktioniert für Millionen von Punkten, da sie auf Raster basiert. Die Triangulation dieser Anzahl von Punkten wird ebenfalls kein Problem darstellen.

FelixIP
quelle
1
Ich weiß nicht, ob dies für mich verwendbar sein wird, aber es sieht verdammt interessant aus. Bitte poste das Skript, wenn du kannst.
Devdatta Tengshe
Ich werde das Skript später heute oder Montag veröffentlichen und mir einen Tag frei nehmen. In der Zwischenzeit werfen Sie einen Blick auf gis.stackexchange.com/questions/179559/…, wo ich die Idee dahinter beschrieben habe
FelixIP
Ich habe es über Nacht an 100.000 Punkten getestet. Der letzte Schritt dauerte fast 6 Stunden und ist kein Go- Ansatz, zumindest nicht in ArcGIS. Ganz zu schweigen davon, dass ich MST selbst codieren musste, weil das Tool I von Patterson feststeckte.
FelixIP
Hast du es geschafft, es zu lösen? Es scheint, dass ich Raster-Ansatz verwendet habe, kann Workflow posten, wenn dies von Interesse ist /
FelixIP
Bitte. Ich habe es mit einer Bruteforce-Methode gelöst, die für meinen Zweck in Ordnung war. Aber ich bin sicher, dass andere von Ihrem neuen Ansatz profitieren könnten.
Devdatta Tengshe