Manuelles Klassifizieren abgestufter Daten außerhalb des Bereichs in ArcGIS for Desktop?

13

Ich habe zwei Shapefiles, die Gitter mit Werten darstellen, die durch abgestufte Farben symbolisiert sind, wie unten gezeigt:

Original

Sie sehen, dass die beiden Shapefiles ähnliche Datenbereiche umfassen, den Bereichen in diesen Daten jedoch leicht unterschiedliche Farben zuweisen. Ich möchte die Bereiche in jedem der beiden Shapefiles mit denselben Farben für dieselben Bereiche symbolisieren, um den Vergleich zwischen den Dateien zu vereinfachen und die Verwendung einer einzelnen Legende zu ermöglichen.

Wenn ich jedoch versuche, die Bereiche mit einem manuellen Intervall zu klassifizieren, erzwingt ArcGIS, dass der oberste Bereich auch den Mindestwert aus dem Dataset enthält. Sie können dies im Bereich "-81,64 - 10,00" des linken Datenrahmens unten sehen. Dadurch wird die gesamte Ebene mit dieser Farbe symbolisiert. Im Wesentlichen erfordert ArcGIS, dass der Mindestwert im Dataset als Wert in einem der Bereiche verwendet wird.

Neue Intervalle

Gibt es eine Möglichkeit, diese Funktion zu umgehen?

hfisch
quelle
Ich erinnere mich, dass ich dieses Problem auch hatte, obwohl ich mich nicht genau erinnern kann, wie ich es gelöst habe. Wenn Sie als "gleiches Intervall" klassifizieren und auf die Werte doppelklicken, können Sie sie dann so ändern?
GISKid
@GISKid Sobald ich doppelt klicke, kehrt die Klassifizierung leider zu "Manuell" zurück.
hfisch
Was ist mit dem Anpassen der Werte im Histogramm selbst?
GISKid
@GISKid Die Werte werden auf den Mindestwert zurückgesetzt, wenn Sie sie unter den Mindestwert ziehen.
hfisch
2
Ich denke, die beste und einfachste Antwort darauf ist gis.stackexchange.com/a/136497 - die erste (und derzeit akzeptierte) Antwort ist viel zu lang für meinen Geschmack.
PolyGeo

Antworten:

12

Es ist definitiv ein großer Schmerz, wenn ArcMap versucht, hilfreich zu sein, auch wenn Sie es wirklich nicht wollen.

Eine Problemumgehung, die ich gefunden habe, besteht darin, ein neues temporäres Dataset zu erstellen und einige Punkte mit den minimalen und maximalen Werten hinzuzufügen, von denen Sie wissen, dass sie in der Ausgabe benötigt werden - decken Sie nur den gesamten Bereich ab.

Erstellen Sie Ihre Symbologie basierend auf diesem gefälschten Datensatz und speichern Sie diese Symbologie in einer Layer-Datei :

Bildbeschreibung hier eingeben

... dann Importieren Sie die Symbologie aus der * .lyr-Datei in Ihren realen Datensatz:

Bildbeschreibung hier eingeben

Stephen Blei
quelle
1
Diese Lösung ist weniger kitschig als meine. Ich wechsle zu deiner Antwort.
hfisch
Danke, funktioniert wie ein Zauber, wenn Sie alle Dialoge, die arcmap auf Sie wirft, mit ausreichender Sorgfalt lesen.
Luuklag
6

@ ChrisW sagte:

Soweit mir bekannt und nachweisbar, können Sie in den Daten keinen Einstufungsbereich unterhalb des Mindestwerts festlegen.

Dies brachte mich zum Nachdenken und ich fand tatsächlich eine Möglichkeit, den Klassifizierungsbereich unter den Mindestwert zu setzen. Mein ursprüngliches Problem beruhte auf der Tatsache, dass der niedrigste Klassifizierungsbereich erforderlich war, um den Mindestwert in den Daten zu enthalten.

Die anderen verwendeten Klassifizierungsbereiche unterliegen jedoch keiner solchen Einschränkung. Daher kann man zwei (oder mehr) Klassifizierungsbereiche zwingen, den Mindestwert in den Daten zu unterschreiten. Einer davon stellt den bevorzugten Mindestklassifizierungsbereich dar, während der andere als Dummy-Bereich für den Mindestwert fungiert.


Hier ist der Ausgangspunkt, den ich für die Klassifizierung verwendet habe. Jede der Schichten in den vier Datenrahmen wurde unter Verwendung eines definierten Intervalls von 10 Fuß ohne Berücksichtigung der Datenbereiche der anderen Schichten klassifiziert.

Startpunkt

Der maximale Klassifizierungsbereich in einem der vier Datenrahmen beträgt "0,01 bis 10,00" und der minimale Klassifizierungsbereich "-110,62 bis -110,00" (idealerweise "-119,00 bis -110,00"). Da ich versuche, 10-Fuß-Intervalle einzuhalten, ergibt dies insgesamt 13 Intervalle.


Ich verwende den oberen linken Datenrahmen als Quelle für meine allgemeine Legende. Ich öffne zunächst die Ebeneneigenschaften und gehe zu Klassifizieren. Da 13 Intervalle sichtbar sein sollen, muss ich 14 Intervalle auswählen , damit ein Dummy-Bereich verfügbar ist. Dazu wähle ich Manual als Methode und erstelle 14 Klassen.

Schritt 1a

Wenn die Bereiche in ihrem aktuellen Status eingerichtet sind (mit den größten Werten oben), haben Änderungen des in den Bereich eingegebenen Werts keine Auswirkungen auf etwas anderes als den Bereich ganz unten in der Liste. @ChrisW wies darauf hin, dass dies kein Fehler ist, sondern vielmehr eine Funktion zum Zuweisen von Unterbrechungswerten durch ArcGIS. Hier ist das Fenster Layer-Eigenschaften, nachdem Sie die manuelle Methode ausgewählt haben, aber bevor Sie Änderungen an den Bereichen vornehmen:

Schritt 1b


Um dieses Problem zu beheben, kehre ich die Sortierung der Ebene vorübergehend um. Zu diesem Zeitpunkt befinden sich die niedrigsten Bereiche oben und die höchsten Bereiche unten.

Schritt 2a

Wenn ich nun zum Ende der Liste der Bereiche scrolle (wo der höchste Bereich angezeigt wird) und beginne, die richtigen Intervalle von unten nach oben zu definieren, merkt sich ArcGIS die von mir definierten Bereiche:

Schritt 2b

In diesem Bild habe ich den oberen Wert in 5 der 14 Bereiche definiert, beginnend mit dem größten Wert (10,00) und abwärts arbeitend.


Wenn ich den Listenanfang erreiche und meinen 14. Bereich bearbeite, wird sein Minimalwert immer noch als Minimalwert in der Ebene definiert, da es keinen weiteren Bereich darunter gibt, aus dem ein Wert abgerufen werden kann:

Schritt 3a

Dies spielt jedoch keine Rolle, da es sich um den Dummy-Bereich handelt, den ich zuvor erwähnt habe. An diesem Punkt kehre ich die Sortierung der Ebene erneut um, sodass die höchsten Bereiche wieder oben liegen. Das Bild unten zeigt die aktualisierte Legende für den oberen linken Datenrahmen, die jetzt die richtigen Bereiche für alle vier Datenrahmen widerspiegelt , einschließlich des 14. Dummy-Bereichs:

Schritt 3b


Der nächste Schritt besteht darin, diese Änderungen auf den Rest der Datenrahmen zu übertragen. Einige Probleme treten jedoch auf, wenn ich versuche, die Symbologie in die anderen Datenrahmen zu importieren:

Schritt 4a

Wie @ChrisW hervorhob, ist dies auf meine Entscheidung zurückzuführen, mit einer Ebene zu beginnen, die nicht über alle Datenrahmen hinweg den absoluten Mindestwert aufweist. Es scheint, dass im Datenrahmen keine Bereiche angezeigt werden, die unter den im ursprünglichen Datenrahmen vorhandenen Bereichen liegen.

Wenn Sie mit einer Ebene wie der von mir erstellten beginnen, besteht die beste Lösung darin, die oben beschriebenen Schritte für jeden der vier Datenrahmen zu wiederholen. Manuelles Definieren von 14 Klassen, Umkehren der Klassensortierung, Neudefinieren des oberen Bereichs jedes Bereichs und Zurücksetzen der Sortierung, um die höchsten Bereiche oben zu platzieren.

Die einfachste Lösung besteht jedoch darin, den Klassifizierungsprozess mit dem Layer zu starten, der den kleinsten Wert hat. Die Option Symbologie importieren kann dann ordnungsgemäß für die anderen Datenrahmen verwendet werden.

Schritt 4b


Schließlich kann ich drei der Legenden löschen und entweder den Dummy-Bereich in der verbleibenden Legende ausblenden oder ihn in Grafiken konvertieren und den Dummy-Bereich löschen.

Endpunkt

hfisch
quelle
Ich bin froh, dass du etwas hinbekommen hast. Ich habe meine Antwort bearbeitet, um das von Ihnen angegebene Missverständnis zu korrigieren (ich bin mir nicht sicher, warum ich das gesagt habe - Ihre Originalbilder haben gezeigt, dass Sie es könnten).
Chris W
Eigentlich habe ich Probleme, dies zu replizieren. Könnten Sie, um die Antwort ein wenig nützlicher zu machen, genau festlegen, wie Sie diese Bereiche unterhalb des Mindestwerts erstellt haben?
Chris W
@ ChrisW Ich habe den Prozess stark erweitert. Lass es mich wissen, wenn es immer noch keinen Sinn ergibt!
hfisch
2
Danke für das Update. Ich habe das Problem herausgefunden - es gibt einen signifikanten Unterschied in der Art und Weise, wie Pausen zwischen den Klassifizierungs- und Symbologiedialogen definiert werden, der sich auf das bezieht, was Sie als Fehler befragen. Grundsätzlich werden die Unterbrechungswerte automatisch sortiert, aber die niedrigste Unterbrechung unter dem Mindestwert ist immer an den Mindestwert gebunden und wird oben (oder unten, je nach Sortierung) angezeigt. Obwohl Sie keine Gesamtzahl angeben können, können Sie Klassen in Manual hinzufügen oder entfernen, indem Sie mit der rechten Maustaste auf das Histogramm klicken.
Chris W
1
Wenn Sie die Symbologie auf andere Datenrahmen anwenden möchten, versuchen Sie, wie in meiner Antwort erwähnt, mit den Daten zu beginnen, die den niedrigsten Wert (-110,62) haben, und verwenden Sie diesen Wert für die anfängliche Symbologie. Ich stelle in deinem vorletzten Bild fest, dass der minimale Wert der Dummy-Klasse für alle vier immer noch -61,01 beträgt, was meiner Meinung nach der Grund dafür ist, dass nichts darunter wiedergegeben wird, obwohl es eine Klasse dafür gibt. Wenn Sie mit dem niedrigsten Wert beginnen und der minimale Wert höher ist, wird die minimale Symbologie meines Erachtens in die minimalen Daten einbezogen oder hervorgehoben, wenn Sie die Symbologie auf die anderen Datensätze anwenden.
Chris W
5

Ich glaube, ich bin auf dasselbe Problem gestoßen. Wenn ich richtig verstanden habe, hatten Sie zwei (oder mehr) Datensätze und müssen die entsprechenden Skalierungsbereiche für die Datensätze ermitteln, damit Vergleiche durchgeführt werden können.

Ich habe es gelöst durch:

  1. Erstellen Sie das erste Dataset, das angezeigt werden soll. Idealerweise mit dem größten Datenbereich, damit Symbole einfacher in den zweiten (kleineren) Datensatz kopiert werden können.

Bildbeschreibung hier eingeben

  1. Erstellen Sie Ihren zweiten Datensatz, aber machen Sie sich noch keine Gedanken über die Symbologie. Wählen Sie auf der Registerkarte Layer-Eigenschaften> Symbologie für die zweiten Datensätze die gleiche Art der Klassifizierung wie für den ersten Datensatz. In diesem Beispiel verwende ich Kategorien> Eindeutige Werte und klicke dann auf die Schaltfläche Alle Werte hinzufügen.

Bildbeschreibung hier eingeben

  1. Gruppieren Sie die Werte so, dass sie in die entsprechenden Bereiche fallen, die im ersten Datensatz verwendet werden. Wählen Sie alle Werte für eine bestimmte Kategorie aus, klicken Sie mit der rechten Maustaste und wählen Sie " Gruppe" . Die beiden oberen Kategorien wurden bereits in der Abbildung unten gruppiert, die vier hervorgehobenen Werte werden gleich in eine dritte Gruppe "gezogen".

Bildbeschreibung hier eingeben

  1. Ich finde es zu diesem Zeitpunkt einfacher, die Kategorien neu zu kennzeichnen, um den Überblick zu behalten. Zu diesem Zeitpunkt sehen Sie fünf der sieben ausgefüllten Kategorien.

Bildbeschreibung hier eingeben

  1. Schließlich (fast) und der Kern dieses Problems ist das Hinzufügen der leeren Kategorien, die außerhalb des Datenbereichs des zweiten Datensatzes existieren. In den Layer - Eigenschaften> Symbologie auf die Registerkarte Add Values Schaltfläche und bevölkern mit den erforderlichen Kategorien oberhalb und unterhalb der Datenbereiche je nach Bedarf.

Bildbeschreibung hier eingeben

  1. Beschriften Sie die neuen leeren Kategorien zuletzt neu, damit sie dem ersten Datensatz entsprechen, und färben Sie dann jede Kategorie neu ein, damit sie mit den ersten übereinstimmt.

Bildbeschreibung hier eingeben

Tut mir leid, wenn das etwas zu stark vereinfacht ist oder einfach falsch / schlecht. Ich bin ein langjähriger Benutzer von GIS Stack Exchange und habe darüber nachgedacht, wann ich angefangen habe, Beiträge zu leisten. Dies ist also mein erster Beitrag!

Nige
quelle
2
Es tut mir leid, dass gerade festgestellt wurde, dass das OP für graduierte Daten bestimmt ist, und nach einer kurzen Überprüfung ist jetzt klar, dass meine Lösung ungültig ist. Ich werde das nächste Mal genauer lesen ...
Nige
4
  1. Wählen Sie die Anzahl der gewünschten Klassen.
  2. Klicken Sie mit der rechten Maustaste auf die Symbole und wählen Sie save class breaks
  3. Dadurch wird eine XML-Datei gespeichert, die Sie in einem beliebigen Texteditor öffnen und bearbeiten können
  4. Bearbeiten Sie die gewünschten Klassenumbrüche in der XML-Datei und speichern Sie sie
  5. Klicken Sie erneut mit der rechten Maustaste auf die Symbole und importieren Sie die neu bearbeitete Klassenwechsel-Datei

ERLEDIGT

Craig
quelle
3

Während die Klassifizierung ähnliche Bereiche verwendet, teilen sich die Daten keinen Bereich. Ich denke, dass die Lösung hier darin besteht, sie in der Legende und den Farbzuweisungen zu lösen und nicht in der tatsächlichen Klassifizierung.

Beginnen Sie mit Ihrem Ergebnis unten links und konvertieren Sie diese Legende in eine Grafik. Bearbeiten Sie den Text, um die gewünschten Bereiche zu erhalten. Ich stelle fest, dass alle Ihre anderen Bilder eine Reichweite von 10 Einheiten haben, aber diese macht 20 und sie überlappen sich. Zum Beispiel haben drei der Bilder -49,99 bis -40,00, aber die untere linke hat -49,99 bis -60,00, und die nächste Klasse ist -59,99 bis -70,00. Die Bilder sind auch entgegengesetzte Bereiche - dh drei sind links niedriger, während links unten rechts niedriger ist (was für mich viel natürlicher ist und die Zahlen erhöht , wenn nicht die Werte von links nach rechts). Möglicherweise müssen diese Probleme zuerst behoben werden, um Zeit zu sparen, anstatt nur einen manuellen Text zu bearbeiten.

Sobald Sie eine Legende mit Bereichen und einem Farbverlauf haben, der Ihnen gefällt, können Sie zu den ersten beiden Ebenen (die bereits korrekt klassifiziert sind) zurückkehren und das Farbfeld jedes Bereichs manuell bearbeiten, um es an die Farbe anzupassen, die Sie für den Bereich in der Legende festgelegt haben . Da die beiden Ebenen keine eigenen Legenden anzeigen, spielt es keine Rolle, dass der Bereich in einer von ihnen tatsächlich -89,99 bis -80,00 und in der anderen -81,64 bis -80,00 beträgt, da beide dieselbe Farbe haben .

Beachten Sie jedoch, dass dies bedeutet, dass beide Datensätze den gleichen Bereich haben, den sie nicht haben. Tatsächlich sieht es so aus, als gäbe es zwei Farbfelder, die jeweils nur in einer Karte verwendet werden (das höchste und das niedrigste). Möglicherweise möchten Sie jeder Karte eine Notiz hinzufügen, die den absoluten Datenbereich angibt. Ich würde auch 'to' anstelle von '-' zwischen den Bereichen verwenden, da das Lesen bei den negativen Werten etwas verwirrend ist.


Alternative Lösung:

Soweit ich weiß und Beweise dafür finden kann, müssen Sie eine Klasse haben, die bei Ihrem Mindestwert beginnt. Sie können manuell Klassen (auch leere) über oder unter Ihrem Datenbereich hinzufügen, aber eine Klasse muss mit dem Mindestwert beginnen.

Richten Sie also Ihre Symbologie mit dem Raster ein, das den niedrigsten / niedrigsten Wert aller Raster enthält. Lass diese symbolisieren. Sie können dann die Klassenbezeichnung bearbeiten, um zu sagen, was Sie wollen. Wenn Ihr niedrigster Wert also 0,4 war, können Sie die Bezeichnung trotzdem so ändern, dass 0 angezeigt wird.

Sobald Sie dies erledigt haben und die gewünschte Farbskala eingestellt haben, speichern Sie eine Lyr-Datei der Symbologie. Sie sollten dann in der Lage sein, Ihre anderen Raster zu öffnen und dieselbe Symbologie anzuwenden. Da alle anderen Raster höhere Werte haben, sollten sie korrekt klassifiziert werden und nur der Minimalwert selbst steigt (oder diese Klasse wird möglicherweise gelöscht, wenn nichts in sie fällt). Womit Sie die Klassenbezeichnung wieder in die Klassenebene ändern können, anstatt den tatsächlichen Wert zu verwenden, wenn dies nicht mit der Symbologie in Einklang steht.

Chris W
quelle
Sie können den Schritt .lyr überspringen und einfach ein Raster nach Ihren Wünschen klassifizieren (Bereiche, Farben usw.) und dann die Importsymbologiefunktion verwenden, um dies auf alle Ihre anderen Raster anzuwenden. Öffnen Sie die Ebeneneigenschaften, wählen Sie die Registerkarte Symbologie, klicken Sie oben rechts auf das Ordnersymbol @ (das beim Bewegen des Mauszeigers auf Importieren zeigt) und wählen Sie dann das Raster aus, das Sie imitieren möchten.
JWallace
@JWallace Richtig, vorausgesetzt, Ihre anderen Raster sind bereits in dasselbe Kartendokument geladen (möglicherweise derselbe Datenrahmen - kann mich nicht erinnern, ob Sie damit eine Symbologie aus einem anderen importieren können), und Sie sind bereit, Ihre Arbeit beim Einrichten der Die Symbologie befindet sich nur im mxd (und Sie speichern möglicherweise eine Sicherungskopie davon, falls Sie Änderungen vornehmen). Ich habe eine grafische Antwort auf diese Schritte hier .
Chris W
Guter Fang an den seltsamen Einheiten für das Ergebnis unten links. Ich denke, das war ein Artefakt meiner Versuche, die Bereiche manuell zu definieren, und ich habe sie in umgekehrter Reihenfolge definiert. Die Verwendung von 'to' anstelle von '-' ist ebenfalls gut. Das Problem, das ich mit Ihrer ursprünglichen Lösung habe, ist, dass es viel manuelle Arbeit mit dem Färben und Beschriften erfordert, und ich muss eine Reihe dieser Figuren erzeugen. Ihre alternative Lösung gab mir jedoch einige Ideen. Ich denke, ich habe einen Weg gefunden, es ein bisschen eleganter zu machen und die Probleme des Minimalwerts zu beseitigen.
hfisch
3

Eine einfachere, aber auch schmutzigere Lösung, die für mich funktioniert hat. Vergessen Sie nicht, eine Sicherungskopie Ihrer Originaldaten anzulegen.

  1. Öffnen Sie die Attributtabelle und starten Sie die Bearbeitung
  2. Bearbeiten Sie zwei beliebige Werte manuell, sodass der minimale und der maximale Wert, auf denen Ihre Klassifizierung basieren soll, enthalten sind (denken Sie an die ursprünglichen Werte).
  3. Speichern und Bearbeitung beenden
  4. Klassifizieren Sie anhand der neuen Extrema
  5. Beginnen Sie von vorne und ersetzen Sie die geänderten Werte manuell durch die ursprünglichen Werte
  6. Die bestehende Klassifizierung bleibt davon unberührt
Alex_A
quelle
2

Ich glaube, es geht um Feature-Legenden, aber nicht um Raster. Wenn es um Raster geht, ignoriere ich meinen Vorschlag. Ich benutze normalerweise diese:

  • Füge 2 (oder mehr Shapefiles) CHILDS zu einem zusammen, nennen wir es FAMILY
  • Legende für FAMILIE erstellen
  • Importsymbologie für jedes KIND aus der FAMILIE

Hoffe es hilft, FP

FelixIP
quelle
Erkenne nur, dass es JWallace sehr ähnlich ist
FelixIP
2

Ich habe die folgende Problemumgehung durchgeführt. Ich habe meine eigenen Klassenumbrüche in einem XML-Dokument erstellt und es in die klassifizierte Symbologie beider Ebenen geladen.

  1. Um eine Vorlage eines Klassenumbrüche-XML-Dokuments zu erhalten: Klicken Sie in den Layereigenschaften mit der rechten Maustaste auf den Bereich der Klassifizierung und dann auf "Klassenumbrüche speichern".
  2. XML-Dokument bearbeiten: Geben Sie die Klassenumbrüche in das XML-Dokument ein. Sie können auch Zahlen eingeben, die außerhalb des Bereichs Ihrer Datasets liegen.
  3. Laden von XML-Klassenumbrüchen: Dasselbe Menü, in dem Sie die Vorlage gespeichert haben (siehe 1), klicken Sie auf "Klassenumbrüche laden".

    Schritt 1 und 3

Schritt 2

Maja Ott
quelle
1
Welche Version von ArcMap? Ich habe keine Möglichkeit, Klassenunterbrechungen in Version 10.6
matt wilkie
@mattwilkie Es ist keine Frage der Version, sondern des Datentyps. Sie sehen ein Symbologiedialogfeld für Vektordaten und das Speichern von Klassenumbrüchen ist nur für Rasterdaten verfügbar. Diese Antwort entspricht im Wesentlichen der von Craig, enthält jedoch Abbildungen.
Chris W
1

Eine andere Möglichkeit besteht darin, alle Werte aus jeder Ebene in einer Ebene zu kombinieren. Auf diese Weise haben Sie die minimalen und maximalen Werte in einer Ebene.

Die Abbildung: 1.
Kombinieren Sie die Werte aller Ebenen in einer Spalte (nennen wir sie All_Vals) in einem Excel-Arbeitsblatt

  1. Fügen Sie neben der Spalte All_Vals zwei neue Spalten mit den Namen X und Y hinzu und füllen Sie sie mit Nullen.

  2. Fügen Sie in arcmap das Excel-Arbeitsblatt als Tabelle hinzu und erstellen Sie mit dem Befehl / Tool display xy data eine Punkt-Feature-Class. Exportieren Sie dann die Ereignisebene in ein Shapefile (ich bezeichne sie als NB_Point) und fügen Sie sie dem Datenrahmen hinzu.

4. Konvertieren Sie die NB_Point-Formdatei in den Objektklassentyp Ihrer Layer. Wenn der Typ Ihres Objektklassentyps beispielsweise polygon ist, erstellen Sie mit dem Puffer-Tool eine polygonale Objektklasse aus dem NB_Point-Shapefile (nennen wir sie NB_polygon).

  1. Jetzt müssen Sie nur noch mit der rechten Maustaste auf die letzte Ebene NB_polygon klicken und die abgestufte Farbsymbolik mithilfe der natürlichen Umbruchklassifizierung anwenden. Exportieren Sie sie in eine .lyr-Datei, um sie als Eingabeebene zu verwenden, wenn Sie das Dienstprogramm zum Importieren von Ebenensymboliken für jede Ebene verwenden der ursprünglichen Schichten.

Hoffe das hilft und entschuldige eventuelle Rechtschreibfehler.

BMB
quelle