Ich habe zwei Shapefiles, die Gitter mit Werten darstellen, die durch abgestufte Farben symbolisiert sind, wie unten gezeigt:
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.
Gibt es eine Möglichkeit, diese Funktion zu umgehen?
Antworten:
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 :
... dann Importieren Sie die Symbologie aus der * .lyr-Datei in Ihren realen Datensatz:
quelle
@ ChrisW sagte:
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.
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.
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:
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.
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:
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:
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:
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:
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.
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.
quelle
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:
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!
quelle
save class breaks
ERLEDIGT
quelle
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.
quelle
Eine einfachere, aber auch schmutzigere Lösung, die für mich funktioniert hat. Vergessen Sie nicht, eine Sicherungskopie Ihrer Originaldaten anzulegen.
quelle
Ich glaube, es geht um Feature-Legenden, aber nicht um Raster. Wenn es um Raster geht, ignoriere ich meinen Vorschlag. Ich benutze normalerweise diese:
Hoffe es hilft, FP
quelle
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.
Laden von XML-Klassenumbrüchen: Dasselbe Menü, in dem Sie die Vorlage gespeichert haben (siehe 1), klicken Sie auf "Klassenumbrüche laden".
quelle
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
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.
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).
Hoffe das hilft und entschuldige eventuelle Rechtschreibfehler.
quelle