SpoilerDieser Blog beschreibt die Funktionalität von Pro 2.9 (zum Zeitpunkt des Schreibens noch nicht veröffentlicht) – fragen Sie Ihren Esri-Vertreter nach ArcGIS Knowledge!
Einige Dinge in der Informationstechnologie scheinen dauerhafte Beispiele für Daten liefern, keine Informationen zu sein, und wenn Sie datengetrieben sein wollen, ist es Information, die Sie wollen. Mein Beispiel hier ist das Visualisieren und Analysieren von Beziehungen zwischen georelationale Datensätzen, ein Schlüsselbereich, den ArcGIS bewohnt und mit dem ich über die Grundlagen hinaus immer Schwierigkeiten hatte. Sie können Joins und Relates auf Kartenebenen anwenden, aber diese scheinen in Bezug auf Leistung und Benutzerfreundlichkeit ziemlich schnell an ihre Grenzen zu stoßen, zum Beispiel wie man Kardinalität visualisiert und wie man performante Abfragen durchführt. Außerdem wird es noch schwieriger, wenn Ihre Datensätze aus verschiedenen Quellen stammen. Ich habe Umwege über codierte Ansätze gemacht, aber gelernt, dass sie nicht skalieren.
ArcGIS Data Interoperability und ArcGIS Knowledge zur Rettung!
Wie kommt es zu dieser Kombination? Nun, Data Interoperability in Pro 2.8+ beinhaltet die Tech Preview Version des Esri Knowledge graph database reader/writer und löst das 'All-Source'-Problem beim Aufbau und der Pflege von Knowledge graph Datenbanken. Der Reader/Writer ist nicht nur flexibel, sondern auch schnell. Zum Zeitpunkt des Schreibens befindet sich Knowledge noch im Aufbau und ich verwende Alpha Pro 2.9 Software, aber das Thema passt so gut zum datengetriebenen Arbeiten, dass ich nicht widerstehen konnte.
Hier sind einige Grafiken aus meiner ETL-Arbeit zur Befüllung eines Graphen, die Arbeitsbereiche sind im Post-Download enthalten. Der Graph, den ich aufbaue, ist Immobiliendaten; die Knoten sind Schwerpunkte von Katastertiteln plus andere Entitäten für Eigentümer und Belastungen (normalerweise Mietverträge und Hypotheken), mit Beziehungen wie 'besitzt' und 'belastet'.
Laden der Entitäten (Knoten)
Laden der Beziehungen
Quell-Immobilienknoten
Es gibt über 10 Millionen Entitäten und über 10 Millionen Beziehungen im Graphen. Ich habe mein Datenmodell etwas vereinfacht, um einige rechtliche Details zu ignorieren (es gibt etwas namens Estate, das komplexere Beziehungen zwischen Titeln und Eigentümern ermöglicht), um mir einen Graphen zu geben, bei dem Immobilientitelpunkte (die blauen Punkte) einen oder mehrere Eigentumsanteile daran haben und Eigentumsanteile null oder mehr Belastungen haben. Titelpunkte sind offensichtlich räumlich, Eigentümer und Belastungen sind tabellarisch. Hier sind einige Feature-Zahlen:
Datenmodell
Sie werden sehen, dass der Datenimport in zwei Teilen erfolgte, zuerst Entitäten dann Beziehungen. Das liegt daran, dass Entitätsbeziehungen mit automatisch generierten GlobalID-Feldern hergestellt werden, daher müssen zuerst Entitäten erstellt werden; Sie bekommen eine Vorstellung davon aus den Arbeitsbereichen. Die GlobalIDs der Entitäten werden zu Ursprung- und Ziel-GlobalIDs der Beziehungen.
Graphen leben in einem Enterprise Portal; ich verwende Enterprise 10.9.1/Pro 2.9 als mein Portal und Client.
Es gibt unzählige Abfragen, die Sie an Ihren Graph stellen können; dies wird interaktiv entweder mit einem sogenannten Link Chart oder mit der Cypher -Abfragesprache erleichtert.
Zuerst ein einfacher Link Chart. Meine Daten sind nicht wirklich vom Typ, bei dem Verbindungen interaktiv neu entdeckt werden durch Link Chart Exploration; alle Beziehungen sind bereits bekannt, aber Sie können Entitäten auswählen und zu einem Link Chart hinzufügen, um Ihre Daten zu untersuchen. Dies ist mein erster Ausflug in Knowledge, also halte ich es einfach. Hier ist wer einige Titel irgendwo besitzt:
Einfacher Link Chart
Ich habe die interaktiven Werkzeuge nicht verwendet, um die Diagrammentitäten zu erstellen; ich habe eine Cypher-Abfrage verwendet:
match (ee:Encumbrancee {name:'Her Majesty The Queen'})-[oe:owns_encumbrance]-(e:Encumbrance)-[he:has_encumbrance]-(t:Title {land_district:'Otago'}) return ee,oe,e,he,t limit 5
Dies fand 5 Titel in einem bestimmten Landbezirk, die durch eine einzelne Belastung belastet sind. Ich lasse Link Charts an dieser Stelle hinter mir, aber sie kommen mit Werkzeugen zum Befüllen und sind eine großartige Möglichkeit Verbindungen zu erkunden.
Es gibt größere Muster zu entdecken! Zum Beispiel wo sind Titel stark belastet?
Unbelastete (grün) und belastete (rot) Titel
Wenn ich das wirklich machen würde, könnte ich demografische Variablen meinen Titelpunkten vor dem Laden in meinen Graph hinzufügen, was mir erlauben würde Bevölkerungssegmente zu analysieren.
Es gibt interessante Dinge zu lernen ohne Demografie zu studieren. Ein Vorteil von Graphdatenbanken ist, dass sie schnell Aggregatstatistiken abfragen können im Vergleich zu äquivalenten SQL-Anweisungen; zum Beispiel schauen wir uns die Verteilung des Marktanteils der Belastungshalter (finanzielle Institution oder Vermieter) an.
Belastungsbestände nach Institution
Dieses Ergebnis wurde innerhalb weniger Sekunden aus meinem Graph mit der Abfrage im Kontrollfeld ermittelt:
match (e:Encumbrance) where e.name is not null return e.name, count(*) as book order by book desc
Die Daten der Belastungshalter haben eine lange Schwanzverteilung; sagen wir mal wir interessieren uns für die großen kommerziellen Kreditgeber, die ich als solche definiere, die 10.000 oder mehr Belastungen haben und Unternehmen sind.
Große Kreditgeber
Diese Zusammenfassung bezieht sich auf den gesamten Datensatz; Sie werden bemerken, dass drei Institutionen im Markt Kopf an Kopf liegen; dann fällt der Marktanteil schnell ab und es gibt 12, die meine Kriterien erfüllen. Gibt es etwas anderes an meinem Untersuchungsgebiet? Ich habe eine Abfrage gemacht um das herauszufinden:
match (e:Encumbrance)
with e.name as lender , count(*) as book where book > 10000 and lender contains 'Limited'
with collect(lender) as biglenders
match (t:Title {land_district:'Otago'})-[:has_encumbrance]-(e:Encumbrance) where e.name in biglenders
return t, e
Hier ist die Karte und ein Diagramm:
Die Kreditlandschaft
Ich könnte vielleicht einen Fall machen für Hot Spots, bei denen einige Institutionen besser abschneiden als andere, aber es ist das Diagramm, das interessant ist, die Bestände der vier führenden Institutionen folgen nicht der nationalen Verteilung.<\/P>
Wir können uns belastete Bestände in einem Untersuchungsgebiet ansehen:<\/P>
match (o:Owner)-[:has_owner]-(t:Title {land_district:'Otago'})-[:has_encumbrance]-(e:Encumbrance) where e.name contains 'Limited'<\/STRONG>
with o.prime_other_names + ' ' + o.prime_surname as owner, o.corporate_name as company, count(*) as holdings<\/STRONG>
return owner, company,holdings order by holdings desc<\/STRONG><\/P> <\/P>
Bestände<\/span><\/span><\/P> <\/P>Oder eine verwandte Abfrage, welche Nicht-Landwirtschafts-Titel sind von den großen Kreditgebern belastet? <\/P>match (e:Encumbrance)<\/STRONG>
with e.name as lender , count(*) as book where book > 10000 and lender contains 'Limited'<\/STRONG>
with collect(lender) as biglenders<\/STRONG>
match (t:Title {land_district:'Otago'})-[:has_encumbrance]-(e:Encumbrance)<\/STRONG>
where e.name in biglenders<\/STRONG>
with t,e<\/STRONG>
match (o:Owner)-[:has_owner]-(t)-[:has_encumbrance]-(e)<\/STRONG>
where not (o.corporate_name contains 'Farm' or o.corporate_name contains 'Pasture')<\/STRONG>
return o,t,e<\/STRONG><\/P>Ich möchte hinzufügen, dass dies immer noch viele Farmen erfasste, da das Datenmodell Landnutzungsklassifizierungsabfragen nicht wirklich unterstützt, aber natürlich könnte ich bei Vorliegen von Landnutzungsflächen vorher eine Überlagerung der Titelpunkte machen und es dann richtig durchführen.<\/P> <\/P>
Nicht-landwirtschaftliche Belastungen nach Bank<\/span><\/span><\/P>Während ich dies schreibe, bin ich dem erforderlichen Software-Release voraus. Ich hoffe, dies gibt Ihnen eine Vorstellung von der Kunst des Möglichen mit ArcGIS Knowledge<\/STRONG>, um komplexe Beziehungen in Big Data einfach und schnell abzufragen. Dies war mein erster Ausflug in Knowledge und ich habe viel gelernt, einschließlich der Grundlagen der OpenCypher<\/STRONG>-Graphabfragesprache, die Sie oben sehen. Wie ich im Spoiler-Alert sage, wenden Sie sich an Ihren Esri-Vertreter bezüglich der Release-Pläne (Pro 2.9) und wenn Sie wirklich interessiert sind, an die Early Adopter Community bei Pro 2.8.<\/P> <\/P> <\/P>