Wir stellen vor: Das Neo4j Spatial Plugin

22. Juli 2016
Die am häufigsten zitierte These aus der Geoinformationswelt besagt, dass 80% aller Informationen einen Raumbezug haben. Ausgehend von dieser These kann man behaupten, dass auch ein größter Teil vom Knoten in einem Graphdatensatz ebenfalls einen räumlichen Bezug besitzen. Die Verknüpfung von Graphelementen und deren geographischen Positionen erweitert den gesamten Datensatz um eine räumliche Dimension und ermöglicht somit die räumliche Analyse von Daten und Datenbeziehungen. 
 
Praktisch umgesetzt werden kann dies mit dem Neo4j Spatial – einem PlugIn für die Neo4J Datenbanken. Das PlugIn verwendet die R-Tree Indexstruktur zum Erstellen von räumlichen Indexes und räumlichen Abfragen. Die Geometrien werden dabei als die Attribute an die Knoten gespeichert. Dabei konnten nicht nur die Punktgeometrien (Längengrad, Breitengrad), sondern sogar Linien- und Polygongeometrien in dem WKT Format den Knoten zugeordnet werden. 
 
Die Installation von dem neo4j Spatial PlugIn erfolgt einfach durch das Herunterladen von Neo4j Spatial.zip für die entsprechende Neo4j Version und das Entpacken von .zip in der Neo4j/PlugIns – Verzeichnis. Erfolgt die Installation erfolgreich, findet man nach einem Neustart von Neo4j Server unter „Extensions“  den „SpatialPlugin“ – Eintrag mit der Übersicht der verfügbaren Methoden:
 

Das Erstellen von räumlichen Indexes kann in den folgenden Schritten zusammengefasst werden

 
1. Initialisierung von Geometrie Layer
 
Dabei können 2 unterschiedliche Methoden benutzt werden: 
"addSimplePointLayer", das nur für die Punktgeometrien geeignet ist und folgende Parameter benötigt:
 
{ 
    "layer" : "geom", 
    "lat" : "lat", 
    "lon" : "lon" 
}
 
"addGeometryWKTToLayer", welche auch die Verwaltung von Linien- und Polygongeometrien ermöglicht
 
  "layer" : "geom",
  "format" : "WKT",
  "nodePropertyName" : "wkt"
}
 
2. Erstellen von Geometrie Attributen für die Knoten (als „lat“ und „lon“ oder als „WKT“)
 
3. Hinzufügen von Geometrie Objekten zum Geometrie Layer mit Hilfe von „addNodeToLayer“ - Methode
 
Das Erstellen von räumlichen Indexe ermöglicht das Ausführen von räumlichen Anfragen, wie zum Beispiel eine Suche nach den am nächst gelegenen Knoten zu einem definierten Punkt mit Hilfe von „findClosestGeometries“. Die Kombination von räumlichen und typisch Cypher Abfragen ist auch möglich.  
 
Hier sind einige gute Blogbeiträge, die die Indexierung und das Erstellen von räumlichen Abfragen detaillierter beschreiben:
 
 
Das Neo4j Spatial Plugin ermöglicht somit die Analyse von Daten und ihre Beziehungen aus einer räumliche Perspektive. Und ein Perspektivenwechsel verschafft, wie bekannt, die neuen Informationen. 
 
Ein weiteres spannendes Thema ist die Graphvisualisierung im Context der räumlichen Information. Darüber schreibe ich aber in meinem nächsten Blogbeitrag. 
 
Link zum neo4j Spatial Projekt: https://github.com/neo4j-contrib/spatial
 
 

Neuen Kommentar schreiben