Batch-Vorgänge versus transaktionale Vorgänge bei „Point In Polygon“

Die Konzepte von Batch-Vorgängen versus transaktionalen Vorgängen bei „Point In Polygon“-Vorgängen unterscheiden sich im wesentlichen darin, ob in einem Echtzeitszenario bereits alle Ihre Punkt- und Geometriedaten vorliegen oder ob die Punkt- oder Geometriedaten nacheinander in den Schritt eintreten. Wenn Ihre Anwendung Punkte hat, die zur Laufzeit entstehen (z. B. der Speicherort einer Versicherungsrichtlinie wird durch eine Kundenabfrage generiert), und nur die Polygondaten vorhanden sind, wird dies als transaktionaler Anwendungsfall bezeichnet. Bei einem Batch-Anwendungsfall hingegen sind sowohl die Punkt- als auch die Polygondaten in Tabellen gespeichert. Das Location Intelligence-Modul verfügt über zwei Schritte zum Lösen von „Point In Polygon“-Anwendungsfällen: „Query Spatial Data“ und „Centrus Point In Polygon“ („Legacy Point In Polygon“). Jeder Schritt hat Leistungsunterschiede beim Ausführen von Batch-Vorgängen oder transaktionalen Vorgängen bei „Point In Polygon“. Weitere Informationen über die Schritte „Query Spatial Data“ und „Legacy Point In Polygon“ finden Sie unter:

Für transaktionale „Point In Polygon“-Anwendungsfälle wird die Verwendung des „Point In Polygon“-Schrittes anstelle des „Query Spatial Data“-Schrittes empfohlen. Der „Point In Polygon“-Schritt hat eine höhere Leistung, wenn Echtzeitdaten in den Schritt gelesen werden. Der „Query Spatial Data“-Schritt übertrifft den „Centrus Point In Polygon“-Schritt in Hinblick auf Batch-Verarbeitung und Skalierbarkeit. „Query Spatial Data“ bietet mehr Flexibilität beim Speicherort der Punkt- und Polygondaten und welche Tabelle Sie durchlaufen. Wenn Sie die Eigenschaften Ihrer Daten kennen (einschließlich der Komplexität von Polygonen sowie die Anzahl von Punkten und Polygonen), können Sie Ihren Fluss so strukturieren, dass eine optimale Leistung erzielt wird.

Beispiele zur Erstellung eines „Query Spatial Data“-Batchflusses und eines transaktionalen „Point In Polygon“-Flusses finden Sie unter:

Welches Datenformat kann verwendet werden? Der Typ und das Format Ihrer Daten bestimmen auch, welchen Vorgang Sie in Spectrum verwenden. Der „Centrus Point In Polygon“-Vorgang unterstützt nur das GSB-Format. Wenn Sie einen transaktionalen „Point In Polygon“-Schritt ausführen, benötigen Sie Leistung. Sie können Ihre Daten in das GSB-Format konvertieren und dann ist der „Centrus Point In Polygon“-Vorgang die schnellere Methode. Es wird empfohlen, Ihre Daten nur in ein GSB-Format zu konvertieren, wenn es aus Gründen der Leistung erforderlich ist. Es gibt andere Unterschiede, die Ihre Anforderungen beeinflussen könnten. TAB-Dateien unterstützen beispielsweise mehrere Sprachen und eine größere Anzahl von Koordinatensystemen. GSB ist hingegen nur in Englisch verfügbar und hat eine eingeschränktere Unterstützung von Koordinatensystemen.

Wenn Sie feststellen, dass der „Centrus Point In Polygon“-Vorgang Ihre Lösung optimiert, und Ihre Daten ein anderes Format haben als GSB, gibt es ein in Spectrum enthaltenes Dienstprogramm, das Ihre vorhandenen Daten in das GSB-Format umwandelt. SpatialImport ist ein Windows-Befehlszeilenprogramm zum Umwandeln von .SHP-, TAB-, .MIF/.MID- und .DBF-Dateien in eine Centrus-Datenbankdatei (.GSB). Es kann über den Bereich „Spectrum Spatial“ auf der Begrüßungsseite unter SpatialImport auf der Registerkarte „Dienstprogramme“ heruntergeladen werden. Nach dem Herunterladen der ZIP-Datei haben Sie die Option, entweder die 32-Bit- (x86) oder die 64-Bit-Version (x64) zu verwenden. Weitere Informationen zur Verwendung dieses Dienstprogramms erhalten Sie unter Location Intelligence-Modul – Dienstprogramm zur Konvertierung.

Anmerkung: Wenn Sie Gründe haben, die Daten nicht in das GSB-Format zu konvertieren (z. B. Bedenken in Bezug auf Datenduplizierung), können Sie den „Query Spatial Data“-Vorgang für transaktionale Anwendungsfälle verwenden und auf Ihre Tabellendaten zugreifen, die entweder in nativen TAB-Dateien oder räumlichen Datenbankquellen gespeichert sind.

Warum sollte „Query Spatial Data“ für die Batch-Verarbeitung verwendet werden? Wie bereits erwähnt, bietet der „Query Spatial Data“-Schritt mehr Flexibilität und mehr Leistungsoptionen. Nehmen Sie beispielhaft die Batch-Verarbeitungen der folgenden zwei Flussszenarien (gehen Sie davon aus, dass die Polygone und Punkte dieselben sind):

  1. „Read Spatial Data“ liest eine Liste von Punkten aus einer TAB-Datei (Millionen von Punkten).

    Spatial Calculator erstellt Breitengrad- und Längengrad-Spaltenwerte aus den Punkten.

    Der „Centrus Point In Polygon“-Schritt fragt einen großen Satz von Polygonen ab (GSB).

  2. „Read Spatial Data“ liest einen großen Satz von Polygonen aus einer TAB-Datei.

    „Query Spatial Data“ verwendet einen „Contains“-Filter für die Punkttabelle (Millionen von Punkten)

Angesichts dieser beiden Szenarien, mit einer Poolgröße von 1 und 1 Laufzeit, ist „Centrus Point In Polygon“ (Szenario 1) schneller als „Query Spatial Data“ (Szenario 2). Mit Zunahme der gebündelten Instanzen und Laufzeiten bleibt die Leistung von Szenario 1 konsistent, während die Leistung von Szenario 2 effektiv skaliert wird. Bei 4 gebündelten Instanzen und 4 Laufzeiten ist „Query Spatial Data“ schneller als der „Centrus Point In Polygon“-Schritt. Bei einem Batchprozess, wo Sie alle Ihre Punkte und Polygone bereits vorliegen haben und alle Geometrien verarbeiten möchten, ist das zweite Szenario unter Verwendung des „Query Spatial Data“-Schrittes viel effektiver. In Fällen, wo sich die Polygondaten nicht ändern und Punkte nacheinander eingehen (d. h. ein Benutzer gibt eine Adresse ein, diese wird geocodiert, dann wird bestimmt, in welches Verkaufsgebiet die Adresse fällt), ist das erste Szenario mithilfe des „Centrus Point In Polygon“-Schrittes die schnellere Lösung.

Sind andere Überlegungen zur Leistung zu berücksichtigen? Wenn Sie „Query Spatial Data“ verwenden, müssen Sie die Anzahl der Punkte und Polygone berücksichtigen, die verarbeitet werden. Wenn Sie mehr Polygone als Punkte vorliegen haben, ziehen Sie den Durchlauf bei Punkten in Betracht (Lesen eines Punktes gleichzeitig unter Verwendung von „Read Spatial Data“ und Durchsuchen der Polygontabelle mithilfe von „Query Spatial Data“). Wenn Sie mehr Punkte als Polygone vorliegen haben, ziehen Sie den Durchlauf bei Polygonen in Betracht (Lesen eines Polygons gleichzeitig unter Verwendung von „Read Spatial Data“ und Durchsuchen der Punkttabelle mithilfe von „Query Spatial Data“).

Wo sind Ihre Daten zu finden? Sie sollten wissen, wo sich Ihre Daten befinden und welchen Datentyp Sie für Ihre Lösung nutzen. TAB-Dateien im Dateisystem führen zu einer anderen Leistung Ihres Vorgangs als Daten in einem DBMS. Spectrum delegiert die Verarbeitung bestimmter Vorgänge (räumliche Verbindungen) an die Datenbank (z. B. Oracle und SQL Server), wodurch die Leistung gesteigert wird. Beispielsweise Vorgänge wie diesem:

SELECT a.id, b.id FROM flood_plane a, customers b WHERE MI_Contains(a.geom, b.geom)
Anmerkung: Wenn Sie denselben Vorgang ausführen möchten, wenn beide Tabellen native TAB-Dateien sind (keine Daten in einer Datenbank), erzielen Sie eine höhere Leistung, wenn Sie die Datensätze nacheinander aus einer der Tabellen lesen und die Abfrage mithilfe von „Query Spatial Data“ für die andere Tabelle ausführen.

Sind Ihre Daten statisch oder variabel? Wenn Sie wissen, dass sich Ihre Daten nicht ändern (alle oder nur einige Ihrer Daten) und Sie den „Query Spatial Data“-Vorgang verwenden, gibt es eine Konfigurationsoption beim Erstellen Ihrer benannten Ressourcen, die die Leistung wesentlich steigern kann. In Spectrum wird diese als Veränderlichkeit bezeichnet. Die Veränderlichkeit ist bei allen Ressourcen standardmäßig auf „true“ gesetzt. Dies bedeutet, Spectrum geht davon aus, dass sich die Daten jederzeit ändern können, und muss die Daten jedes Mal beim Zugriff überprüfen, um zu bestimmen, ob sie sich geändert haben, und um zu entscheiden, ob neue Daten geladen werden müssen.

Welche Auswirkungen hat die Veränderlichkeit also auf „Point In Polygon“-Vorgänge? Wenn die Veränderlichkeit auf „true“ gesetzt ist und selbst wenn sich die Datenquelle nicht geändert hat, verringert allein das Überprüfen der Ressource die Leistung. Wenn Sie wissen, dass sich Ihre Daten nicht ändern werden und Leistung eine wichtige Anforderung ist, deaktivieren Sie die Veränderlichkeit. Wenn die Leistung ein Problem ist und Sie wissen, dass sich einige Ihrer Daten ändern werden (etwa Client-Listen oder Messpunkte), andere Ihrer Daten wiederum nicht (Parzellen, ländliche Gebiete oder Verkaufsgebiete), dann stellen Sie sicher, dass die Veränderlichkeit bei Ihren statischen Daten deaktiviert ist. Dies könnte die Gesamtleistung wesentlich steigern. Weitere Informationen zur Veränderlichkeit und wie Sie diese Einstellung für Ressourcen ändern können, finden Sie unter Volatilität von Datenquellen.