Finden Sie Unterschiede zwischen Shapefiles mit ArcGIS for Desktop?

12

Jeden Monat muss ich einige Straßendaten für eine ganze Grafschaft (über 47.000 Datensätze) QA / QC. Der erste Schritt besteht darin, die beiden Dateien zu vergleichen. Derzeit verwende ich ein Tool, das vor ca. 5 Jahren im eigenen Haus über VBA erstellt wurde. Es vergleicht die beiden Dateien und meldet die Unterschiede anhand einiger Faktoren (hinzugefügte Datensätze, gelöschte Datensätze, Adressänderungen, Stadtänderungen, Änderungen der Segmentlänge / Eckpunkte). Diese exportiere ich dann in einzelne Shapefiles. Darüber hinaus funktioniert das Tool, funktioniert ArcGIS 9.3jedoch nicht mehrArcGIS 10.1

Das Tool funktioniert hervorragend, dauert jedoch ungefähr eine Stunde.

Ich habe begonnen, dieses Tool hoffentlich zu verbessern, um die Leistung zu beschleunigen. Ich habe eine Vielzahl von Methoden untersucht, einschließlich der Compare Feature Toolund Select by Location.

Beide Tools arbeiten erheblich schneller, scheinen jedoch nicht alles zu erfassen, was ich brauche. Das große Problem, das ich mit dem habe, Compare Feature Toolist, dass ich nicht auswählen kann, auf welchem ​​Feld ich vergleichen möchte. Der Standardwert ist ObjectID, wenn ich nach Segment_ID vergleichen muss. Es gibt keine Option, um dies auszuwählen.

Hat jemand eine gute Lösung oder Ideen, wie man einen vollständigen Vergleich erzielen kann, wie ich es beschrieben habe?


Aus irgendeinem Grund erkennt ArcGIS den Join, den ich gemäß der Antwort von RyanDalton versuche, nicht.

Aber

Ich habe den Rat eines Joins befolgt und herausgefunden, wie die Unterschiede zwischen hinzugefügten und gelöschten Datensätzen in den beiden Dateien gefunden werden können, indem:

  1. Verknüpfen des Shapefiles des vorherigen Monats mit dem Shapefile des aktuellen Monats über das Feld Segment_ID
  2. Durchführen einer Definitionsabfrage, bei der Segment_ID NULL ist
  3. Exportieren in ein neues Shapefile (Features hinzugefügt)

Ich kehre dann die Verknüpfungen um und finde die gelöschten Funktionen

Wir arbeiten immer noch daran, die anderen aufgelisteten Unterschiede zu finden und sie dann alle in einem Modell zusammenzufügen.


Ich kann alle Datensätze finden, die sich geändert haben, indem ich aus einem der Datensätze, die mit dem anderen Datensatz identisch sind, eine Auswahl nach Standortdatensätzen durchführe. Ich wechsle dann die Auswahl und es gibt mir alle Datensätze, die nicht identisch sind.

Ich werde alles in ein Modell packen und hoffentlich funktioniert es genauso gut.

Craig
quelle

Antworten:

11

Mit dem Compare Feature Toolsollten Sie einfach Ihr Segment_IDFeld als Sortierfeld im Dialogfeld auswählen .

Das Feld [sort] oder die Felder [werden] zum Sortieren von Datensätzen in der Input Base Table und der Input Test Table verwendet. Die Datensätze sind in aufsteigender Reihenfolge sortiert. Durch Sortieren nach einem gemeinsamen Feld sowohl in den Eingabebasisfunktionen als auch in den Eingabetestfunktionen wird sichergestellt, dass Sie dieselbe Zeile aus jedem Eingabedatensatz vergleichen.

Wenn Sie das Feld Segment_ID als Teil Ihrer Ausgabetabelle abrufen möchten, versuchen Sie, die Ausgabetabelle Compare Featuremit Ihrer Quelle Test Tablezu verbinden cf.Object_ID=tt.Object_ID, und exportieren Sie dann die verknüpfte Tabelle mit Ihrer Segment_ID.

Sie können dies leicht in ein Modell einfügen, um die Wiederholbarkeit zu vereinfachen.

RyanKDalton
quelle
Ich habe dies getan, aber die Tabelle, die über das Vergleichstool erstellt wird, enthält nicht das Feld Segment_ID (das die eindeutige Kennung ist). Stattdessen wird nur die Objekt-ID aufgelistet, was mir wirklich nicht gut tut.
Craig
Meine Antwort wurde aktualisiert, um den Einstieg Segment_IDin Ihre Ausgabetabelle widerzuspiegeln .
RyanKDalton
Durch Hinzufügen des Joins stürzt ArcMap jedes Mal ab. Zurück zum Zeichenbrett.
Craig
1

Nach meinen Erfahrungen verwendet Feature Compare immer FID oder ObjectID als Grundlage für den Vergleich, auch wenn segment_id als Sortierfeld ausgewählt ist. Shapefile-FIDs werden recycelt (neu angeordnet), sodass nach einigen Änderungen viele, wenn nicht alle FIDs für ihre entsprechenden Regionen unterschiedlich sind. Sie haben somit einen "wahren" Merkmalsvergleichsfehler. Wenn Sie eine ObjectID aus GeoDatabase oder GISquirrel verwenden, werden die IDs nicht recycelt und Sie können sich auf dieses Tool verlassen. Sie müssen die Datenbanken über einen bestimmten Zeitraum hinweg aufbewahren, damit die ObjectIds niemals neu angeordnet werden.

Unabhängig davon ist die Beschreibung des Sortierfelds in der GP-Tool-Hilfe SEHR irreführend. Dieses Tool wäre enorm, wenn die Vergleichsbasis die segment_ID sein könnte.

user14022
quelle