Mam dwa pliki kształtów reprezentujące siatki o wartościach symbolizowanych za pomocą stopniowanych kolorów, pokazanych poniżej:
Widać, że dwa pliki kształtów obejmują podobne zakresy danych, ale przypisują nieco inne kolory zakresom w tych danych. Chciałbym symbolizować zakresy w każdym z dwóch plików kształtów za pomocą tych samych kolorów dla tych samych zakresów, umożliwiając łatwiejsze porównywanie plików i pozwalając na użycie jednej legendy.
Jednak gdy próbuję sklasyfikować zakresy z ręcznym interwałem, ArcGIS wymusza, aby zakres, który powinien być najwyższy, obejmował również minimalną wartość z zestawu danych. Możesz to zobaczyć w przedziale „-81.64 - 10.00” lewej ramki danych poniżej. Wymusza to symbolizację całej warstwy tym kolorem. Zasadniczo ArcGIS wymaga, aby minimalna wartość w zbiorze danych była używana jako wartość w jednym z zakresów.
Czy istnieje sposób na obejście tej funkcji?
Odpowiedzi:
To zdecydowanie poważny ból, gdy ArcMap stara się być pomocny, nawet jeśli naprawdę tego nie chcesz.
Jednym z obejść, które znalazłem, jest utworzenie nowego tymczasowego zestawu danych i dodanie kilku punktów z minimalnymi i maksymalnymi wartościami, które, jak wiesz, będą potrzebne w danych wyjściowych - pamiętaj, aby objąć cały zakres.
Utwórz swoją symbolikę na podstawie tego fałszywego zestawu danych i zapisz tę symbolikę w pliku warstwy :
... następnie zaimportuj symbolikę z pliku * .lyr do prawdziwego zestawu danych:
źródło
@ChrisW powiedział:
To skłoniło mnie do myślenia i faktycznie znalazłem sposób na ustawienie zakresu klasyfikacji poniżej wartości minimalnej. Mój oryginalny problem opierał się na fakcie, że do zawarcia minimalnej wartości w danych wymagany był najniższy zakres klasyfikacji.
Jednak takie ograniczenie nie jest nakładane na inne stosowane zakresy klasyfikacji. Dlatego można zmusić dwa (lub więcej) zakresy klasyfikacji, aby spadły poniżej wartości minimalnej w danych. Jeden z nich będzie reprezentował preferowany minimalny zakres klasyfikacji, podczas gdy drugi będzie działał jako fikcyjny zakres zawierający minimalną wartość.
Oto punkt początkowy, który wykorzystałem do klasyfikacji. Każda z warstw w czterech ramkach danych została sklasyfikowana przy użyciu określonego przedziału 10 stóp bez względu na zakresy danych innych warstw.
Maksymalny zakres klasyfikacji w którejkolwiek z czterech ramek danych to „0,01 do 10,00”, a minimalny zakres klasyfikacji to „-110,62 do -110,00” (idealnie będzie to „-119,00 do -110,00”). Ponieważ próbuję utrzymać 10-stopowe odstępy, przekłada się to w sumie na 13 odstępów.
Używam lewej górnej ramki danych jako źródła mojej ogólnej legendy. Zaczynam od otwarcia Właściwości warstwy i przejścia do Klasyfikacji. Ponieważ chcę, aby 13 przedziałów było widocznych, muszę wybrać 14 przedziałów, aby mieć dostępny zakres zastępczy. Robię to, wybierając Metoda jako metodę i tworząc 14 klas.
Przy zakresach ustawionych w ich bieżącym stanie (z największymi wartościami na górze) wszelkie zmiany wartości wprowadzonych w zakresie nie będą miały wpływu na nic innego niż zakres na samym dole listy. @ChrisW wskazał, że nie jest to błąd, ale raczej funkcja przypisywania wartości przerwania przez ArcGIS. Oto okno Właściwości warstwy po wybraniu metody Ręcznie, ale przed wprowadzeniem jakichkolwiek zmian w zakresach:
Aby rozwiązać ten problem, tymczasowo odwracam sortowanie warstwy. W tym momencie najniższe zakresy znajdują się na górze, a najwyższe na dole.
Teraz, jeśli przejdę na dół listy zakresów (gdzie wyświetlany jest najwyższy zakres) i zacznę definiować odpowiednie przedziały od dołu do góry, ArcGIS zapamięta zdefiniowane przeze mnie zakresy:
Na tym obrazie zdefiniowałem górną wartość w 5 z 14 zakresów, zaczynając od największej wartości (10,00) i pracując w dół.
Kiedy osiągnę szczyt listy i edytuję mój 14. zakres, jego minimalna wartość będzie nadal definiowana jako wartość minimalna w warstwie, ponieważ nie ma pod nią innego zakresu, aby mógł pobrać wartość z:
Nie ma to jednak znaczenia, ponieważ to zakres manekinów, o którym wspomniałem wcześniej. W tym momencie jeszcze raz odwracam sortowanie warstwy, więc najwyższe zakresy znów znajdują się na górze. Poniższy obraz przedstawia zaktualizowaną legendę dla lewej górnej ramki danych, która teraz odzwierciedla prawidłowe zakresy dla wszystkich czterech ramek danych, w tym dla 14-go zakresu zastępczego:
Następnym krokiem jest propagowanie tych zmian do pozostałych ramek danych. Pewne problemy są jednak widoczne, gdy próbuję zaimportować symbolikę do innych ramek danych:
Jak wskazał @ChrisW, wynika to z mojej decyzji, by zacząć od warstwy, która nie ma absolutnie minimalnej wartości we wszystkich ramkach danych. Wygląda na to, że ramka danych nie wyświetla żadnych zakresów, które mieszczą się poniżej zakresów istniejących w pierwotnej ramce danych.
Jeśli zaczynasz od warstwy podobnej do tej, którą zrobiłem, najlepszym rozwiązaniem, jakie znalazłem, jest powtórzenie kroków omówionych powyżej dla każdej z czterech ramek danych; ręczne zdefiniowanie 14 klas, odwrócenie sortowania klas, ponowne zdefiniowanie górnej części każdego zakresu, a następnie cofnięcie sortowania w celu umieszczenia najwyższych zakresów na górze.
Najprostszym rozwiązaniem jest jednak rozpoczęcie procesu klasyfikacji od warstwy o najmniejszej wartości. Opcja Importuj symbolikę może być następnie używana poprawnie dla innych ramek danych.
Wreszcie mogę usunąć trzy legendy i ukryć zakres manekina w pozostałej legendzie lub przekonwertować go na grafikę i usunąć zakres manekina.
źródło
Myślę, że natknąłem się na ten sam problem ... Jeśli dobrze to rozumiem, masz dwa (lub więcej) zestawów danych i musisz dopasować zakresy skali zestawu danych, aby można było dokonać porównań.
Rozwiązałem to przez:
Przepraszam, jeśli jest to trochę za uproszczone lub nawet zwykłe złe / złe postępowanie. Od dłuższego czasu korzystam z GIS Stack Exchange i pomyślałem o czasie, w którym zacząłem pisać, więc to mój pierwszy post!
źródło
save class breaks
GOTOWY
źródło
Podczas gdy klasyfikacja wykorzystuje podobne zakresy, dane nie dzielą zakresu. Myślę, że rozwiązaniem jest rozwiązanie legendy i przypisania kolorów, a nie faktyczna klasyfikacja.
Zacznij od wyniku w lewym dolnym rogu i przekonwertuj tę legendę na grafikę. Edytuj tekst, aby uzyskać żądane zakresy. Zauważyłem, że wszystkie inne obrazy mają zasięg 10 jednostek, ale ten robi 20 i nakłada się. Na przykład trzy obrazy mają -49,99 do -40,00, ale dolna lewa strona ma -49,99 do -60,00, a następna klasa to -59.99 do -70,00. Obrazy mają również przeciwne zakresy - tj. Trzy są niższą wartością po lewej, podczas gdy dolna lewa to niższa wartość po prawej stronie (która odczytuje dla mnie znacznie bardziej naturalny, zwiększając liczby, jeśli nie wartości od lewej do prawej). Być może najpierw należy rozwiązać te problemy, aby zaoszczędzić trochę czasu, a nie tylko ręczną edycję tekstu.
Po uzyskaniu legendy z zakresami i rampą kolorów, którą lubisz, możesz wrócić do pierwszych dwóch warstw (które są już poprawnie sklasyfikowane) i ręcznie edytować łatkę kolorów każdego zakresu, aby dopasować kolor wybrany dla zakresu w legendzie . Ponieważ dwie warstwy nie będą wyświetlać swoich własnych legend, nie będzie miało znaczenia, że w jednej z nich zakres wynosi w rzeczywistości od -89,99 do -80,00, a w drugiej - od 81,64 do -80,00, ponieważ obie będą miały ten sam kolor .
Należy jednak pamiętać, że oznacza to, że oba zestawy danych mają ten sam zakres, co nie. W rzeczywistości wygląda na to, że będą dwie łaty kolorów, które są używane tylko na jednej mapie (najwyższa i najniższa). Możesz umieścić notatkę na każdej mapie, która podaje ich bezwzględny zakres danych. Używałbym również „do” zamiast „-” między zakresami, ponieważ przy wartościach ujemnych czytanie jest nieco mylące.
Alternatywne rozwiązanie:
O ile wiem i potrafię znaleźć dowody, musisz mieć klasę, która zaczyna się od twojej minimalnej wartości. Możesz ręcznie dodawać klasy (nawet puste) powyżej lub poniżej zakresu danych, ale jedna klasa musi zaczynać się od wartości minimalnej.
Tak więc ustaw swoją symbolikę za pomocą rastra, który zawiera najniższą / minimalną wartość ze wszystkich rastrów. Zdobądź je symbolizowane. Następnie możesz edytować etykietę klasy, aby powiedzieć co chcesz. Więc jeśli twoja najniższa wartość wynosiła 0,4, nadal możesz zmienić etykietę na 0.
Gdy to zrobisz i skonfigurujesz z rampą koloru, którą lubisz, zapisz plik lyr symboliki. Powinieneś być w stanie otworzyć inne rastry i zastosować tę samą symbolikę. Ponieważ wszystkie inne rastry będą miały wyższe wartości, powinny poprawnie klasyfikować, a tylko wartość minimalna wzrośnie (a może ta klasa zostanie odrzucona, jeśli nic w niej nie mieści się). Które ponownie możesz zmienić etykietę klasy na podłogę klasy zamiast wartości rzeczywistej, jeśli nie przeniesie to symboli.
źródło
Łatwiejsze, ale i bardziej brudne rozwiązanie, które zadziałało dla mnie. Nie zapomnij utworzyć kopii zapasowej oryginalnych danych.
źródło
Myślę, że chodzi o legendę fabularną, ale nie o rastry. Jeśli chodzi o rastry, zignoruj moją sugestię. Zwykle używam tych:
Mam nadzieję, że to pomaga, FP
źródło
Zrobiłem następujące obejście. Stworzyłem własne podziały klas w dokumencie XML i załadowałem go do niejawnej symboliki obu warstw.
Załaduj podziały klas XML: w tym samym menu, w którym zapisałeś szablon (patrz 1), kliknij „wczytaj podziały klas”
źródło
Alternatywnym sposobem jest połączenie wszystkich wartości z każdej warstwy w jedną warstwę, w ten sposób będziesz mieć minimalne i maksymalne wartości w warstwie.
Ilustracja: 1.
połącz wartości ze wszystkich warstw w jedną kolumnę (nazwijmy to jako All_Vals) w arkuszu programu Excel
obok kolumny All_Vals dodaj dwie nowe kolumny o nazwach X i Y i wypełnij je zerami.
W arcmap dodaj arkusz programu Excel jako tabelę i użyj go, aby utworzyć punktową klasę obiektów za pomocą polecenia / narzędzia display xy data, a następnie wyeksportuj warstwę zdarzeń do pliku kształtu (nadam jej nazwę NB_Point) i dodaj ją do ramki danych.
4 Konwertuj plik kształtu NB_Point na wiele typów klas obiektów na warstwach, na przykład jeśli typem twojej warstwy obiektów jest wielokąt, użyj narzędzia bufora, aby utworzyć klasę obiektów wielokąta z pliku kształtu NB_Point (nazwijmy to jako NB_polygon).
Mam nadzieję, że to pomoże i przepraszamy za wszelkie błędy ortograficzne.
źródło