Classificare manualmente i dati graduati al di fuori dell'intervallo in ArcGIS per desktop?


13

Ho due shapefile che rappresentano griglie con valori simbolizzati con colori graduati, mostrati di seguito:

Originale

Potete vedere che i due shapefile comprendono intervalli di dati simili, ma assegnano colori leggermente diversi agli intervalli in questi dati. Vorrei simboleggiare gli intervalli in ciascuno dei due shapefile usando gli stessi colori per gli stessi intervalli, consentendo un confronto più semplice tra i file e consentendo l'utilizzo di una singola legenda.

Tuttavia, quando provo a classificare gli intervalli con un intervallo manuale, ArcGIS forza quello che dovrebbe essere l'intervallo più alto per includere anche il valore minimo dal set di dati. Puoi vederlo nell'intervallo "-81.64 - 10.00" del frame di dati sinistro, di seguito. Questo costringe l'intero livello ad essere simbolizzato con questo colore. In sostanza, ArcGIS richiede che il valore minimo nel set di dati venga utilizzato come valore in uno degli intervalli.

Nuovi intervalli

C'è un modo per aggirare questa funzione?


Ricordo di avere anche questo problema, anche se non ricordo esattamente come l'ho risolto. Se si classifica come "intervallo uguale" e si fa doppio clic sui valori, è possibile modificarli in questo modo?
GISKid

@GISKid non appena faccio doppio clic, la classificazione torna a "Manuale", sfortunatamente.
hfisch,

Che dire di regolare i valori sull'istogramma stesso?
GISKid,

@GISKid i valori tornano al valore minimo se li trascini sotto il valore minimo.
hfisch,

2
Penso che la risposta migliore e più semplice a questa sia gis.stackexchange.com/a/136497 - la prima (e attualmente accettata) risposta è troppo lunga per i miei gusti.
PolyGeo

Risposte:


12

È sicuramente un grande dolore quando ArcMap cerca di essere, um, utile anche quando davvero non vuoi che sia.

Una soluzione alternativa che ho trovato è quella di creare un nuovo set di dati temporaneo e aggiungere alcuni punti con i valori minimo e massimo che sai di cui avrai bisogno nell'output - assicurati solo di coprire l'intero intervallo.

Crea la tua simbologia basata su questo set di dati falso e salva questa simbologia in un file di livello :

inserisci qui la descrizione dell'immagine

... quindi importa la simbologia dal file * .lyr nel tuo set di dati reale:

inserisci qui la descrizione dell'immagine


1
Questa soluzione è meno confusa della mia. Sto passando alla tua risposta.
hfisch,

Grazie, funziona come un incantesimo se leggi tutti i dialoghi che arcmap ti lancia con sufficiente cura.
Luuklag,

6

@ChrisW ha detto:

Per quanto ne so e per cui posso trovare prove, non è possibile impostare un intervallo di classificazione al di sotto del valore minimo nei dati.

Questo mi ha fatto pensare, e in realtà ho trovato un modo per impostare l'intervallo di classificazione al di sotto del valore minimo. Il mio problema originale si basava sul fatto che era necessario l'intervallo di classificazione più basso per contenere il valore minimo nei dati.

Tuttavia, tale restrizione non viene posta sugli altri intervalli di classificazione utilizzati. Pertanto, si può forzare due (o più) intervalli di classificazione a scendere al di sotto del valore minimo nei dati. Uno di questi rappresenterà l'intervallo minimo di classificazione preferito, mentre l'altro fungerà da intervallo fittizio per contenere il valore minimo.


Ecco il punto di partenza che ho usato per la classificazione. Ciascuno dei livelli nei quattro frame di dati è stato classificato utilizzando un intervallo definito di 10 piedi senza rispetto agli intervalli di dati degli altri layer.

Punto di partenza

L'intervallo di classificazione massimo in uno dei quattro frame di dati è "0,01-10,00" e l'intervallo di classificazione minimo è "-110,62 a -110,00" (che idealmente diventerà "da -119,00 a -110,00"). Dal momento che sto tentando di mantenere intervalli di 10 piedi, questo si traduce in un totale di 13 intervalli.


Sto usando il frame di dati in alto a sinistra come fonte per la mia legenda generica. Comincio aprendo le proprietà del livello e andando a Classificare. Dal momento che voglio che siano visibili 13 intervalli, devo selezionare 14 intervalli per avere una gamma fittizia disponibile. Lo faccio selezionando Manuale come metodo e creando 14 classi.

Passaggio 1a

Con gli intervalli impostati nel loro stato corrente (con i valori più grandi in alto), qualsiasi modifica al valore immesso nell'intervallo non avrà alcun effetto se non quello dell'intervallo in fondo all'elenco. @ChrisW ha sottolineato che questo non è un bug, ma piuttosto una caratteristica di come ArcGIS assegna i valori di rottura. Ecco la finestra Proprietà livello dopo aver selezionato il metodo Manuale ma prima di apportare modifiche agli intervalli:

Passaggio 1b


Per risolvere questo problema, temporaneamente invertire l'ordinamento del livello. A questo punto, le gamme più basse sono nella parte superiore, mentre le gamme più alte sono nella parte inferiore.

Passaggio 2a

Ora, se scorro fino alla fine dell'elenco di intervalli (dove viene visualizzato l'intervallo più alto) e inizio a definire gli intervalli corretti dal basso verso l'alto, ArcGIS ricorderà gli intervalli che definisco:

Passaggio 2b

In questa immagine, ho definito il valore superiore in 5 dei 14 intervalli, iniziando dal valore più grande (10,00) e procedendo verso il basso.


Quando raggiungo la cima dell'elenco e modifico il mio 14 ° intervallo, il suo valore minimo verrà comunque definito come il valore minimo nel livello, poiché non ha un altro intervallo al di sotto di esso per poter estrarre un valore da:

Passaggio 3a

Questo non ha importanza, tuttavia, poiché è la gamma fittizia che ho menzionato prima. A questo punto, inverto ancora una volta l'ordinamento del livello, quindi le gamme più alte sono di nuovo in cima. L'immagine seguente mostra la legenda aggiornata per il frame di dati in alto a sinistra, che ora riflette gli intervalli corretti per tutti e quattro i frame di dati, incluso il quattordicesimo intervallo fittizio:

Passaggio 3b


Il passaggio successivo consiste nel propagare queste modifiche al resto dei frame di dati. Alcuni problemi sono evidenti, tuttavia, quando provo a importare la simbologia negli altri frame di dati:

Passaggio 4a

Come sottolineato da @ChrisW, ciò è dovuto alla mia decisione di iniziare con un livello che non ha il valore minimo assoluto in tutti i frame di dati. Sembra che il frame di dati non visualizzerà alcun intervallo che scende al di sotto degli intervalli esistenti nel frame di dati originale.

Se stai iniziando con un livello come quello che ho fatto, la migliore soluzione che ho trovato per questo è ripetere i passaggi che ho discusso sopra per ciascuno dei quattro frame di dati; definire manualmente 14 classi, invertire l'ordinamento delle classi, ridefinire la parte superiore di ogni intervallo, quindi ripristinare l'ordinamento per posizionare gli intervalli più alti nella parte superiore.

La soluzione più semplice, tuttavia, è avviare il processo di classificazione con il livello che ha il valore più piccolo. L'opzione Importa simbologia può quindi essere utilizzata correttamente per gli altri frame di dati.

Passaggio 4b


Infine, posso eliminare tre legende e nascondere l'intervallo fittizio nella legenda rimanente oppure convertirlo in grafica ed eliminare l'intervallo fittizio.

Punto finale


Sono contento che tu sia riuscito a far funzionare qualcosa. Ho modificato la mia risposta per correggere il malumore che hai citato (non sono sicuro del motivo per cui l'ho detto - le tue immagini originali ti hanno mostrato che potresti).
Chris W,

In realtà, ho problemi a replicarlo. Per rendere la risposta un po 'più utile, potresti modificare esattamente come hai creato quegli intervalli al di sotto del valore minimo?
Chris W,

@ChrisW Ho notevolmente ampliato il processo. Fammi sapere se non ha ancora senso!
hfisch,

2
Grazie per l'aggiornamento. Ho capito il problema: c'è una differenza significativa nel modo in cui la gestione delle interruzioni viene gestita tra i dialoghi di classificazione e simbologia che si riferisce a ciò che si pone come un bug. Fondamentalmente ordina automaticamente i valori di interruzione, ma l'interruzione più bassa al di sotto del valore minimo è sempre legata al valore minimo e appare in alto (o in basso a seconda dell'ordinamento). Cordiali saluti, sebbene non sia possibile specificare un numero totale, è possibile aggiungere o rimuovere classi nel Manuale facendo clic con il tasto destro sull'istogramma.
Chris W,

1
Per quanto riguarda l'applicazione della simbologia ad altri frame di dati, come menzionato nella mia risposta, prova a iniziare con i dati che hanno il valore più basso (-110,62) usando quello per la simbologia iniziale. Noto nella tua terza all'ultima immagine il valore minimo della classe fittizia è ancora -61,01 per tutti e quattro, il che credo sia il motivo per cui nulla sotto che rende anche se c'è una classe per esso. Se inizi con il valore più basso e il valore minimo è più alto, credo che includerà o attiverà il minimo della simbologia al minimo dei dati quando applichi la simbologia agli altri set di dati.
Chris W,

5

Mi sono imbattuto in questo stesso problema, penso .... Se ho capito bene, hai avuto due (o più) set di dati e devi far corrispondere gli intervalli di scala del set di dati in modo da poter effettuare i confronti.

L'ho risolto con:

  1. Crea il tuo primo set di dati come desideri che appaia. Idealmente, con l'intervallo di dati più ampio, in modo che i simboli possano essere copiati più facilmente nel secondo set di dati (intervallo più piccolo).

inserisci qui la descrizione dell'immagine

  1. Crea il tuo secondo set di dati, ma non preoccuparti ancora della simbologia. Nel secondo set di dati Proprietà livello> Scheda Simbologia scegli lo stesso tipo di classificazione del primo set di dati, per questo esempio sto usando Categorie> Valori univoci, quindi fai clic sul pulsante Aggiungi tutti i valori .

inserisci qui la descrizione dell'immagine

  1. Raggruppare i valori in modo che rientrino negli intervalli corrispondenti utilizzati nel primo set di dati. Seleziona tutti i valori per una particolare categoria, quindi fai clic con il pulsante destro del mouse e seleziona Gruppo . Le prime due categorie sono già state raggruppate nell'immagine seguente, i quattro valori evidenziati stanno per essere "tirati" in un terzo gruppo.

inserisci qui la descrizione dell'immagine

  1. Trovo più facile in questa fase rietichettare le categorie in modo che sia più facile tenerne traccia. A questo punto puoi vedere cinque delle sette categorie popolate.

inserisci qui la descrizione dell'immagine

  1. Infine (quasi) e il nocciolo di questo problema, aggiungere le categorie vuote che esistono al di fuori dell'intervallo di dati del secondo set di dati. Nella scheda Proprietà livello> Simbologia fare clic sul pulsante Aggiungi valori e popolare con le categorie richieste sopra e sotto gli intervalli di dati come richiesto.

inserisci qui la descrizione dell'immagine

  1. Infine, rietichettare le nuove categorie vuote in modo che corrispondano al primo set di dati e quindi ricolorare ogni categoria in modo che corrisponda ai primi.

inserisci qui la descrizione dell'immagine

Scusate se è un po 'troppo semplice o addirittura semplice pratica sbagliata / cattiva. Sono stato a lungo utente di GIS Stack Exchange e ho pensato a quando ho iniziato a contribuire, quindi questo è il mio primo post!


2
Siamo spiacenti, ho appena capito che l'OP è per dati graduati e dopo un rapido controllo ora realizzo che la mia soluzione non è valida. Leggerò più da vicino la prossima volta ....
Nige,

4
  1. Scegli il numero di lezioni che desideri.
  2. Fare clic con il tasto destro del mouse sui simboli e selezionare save class breaks
  3. questo salva un file XML che puoi aprire e modificare in qualsiasi editor di testo
  4. modifica le interruzioni di classe che desideri nel file xml e salva
  5. fare nuovamente clic con il tasto destro del mouse sui simboli e importare il file di interruzioni di classe appena modificato

FATTO


3

Mentre la classificazione utilizza intervalli simili, i dati non condividono un intervallo. Penso che la soluzione qui sia risolverlo nella legenda e nelle assegnazioni di colore, e non nella classificazione effettiva.

Inizia con il risultato in basso a sinistra e converti quella legenda in un elemento grafico. Modifica il testo per ottenere gli intervalli desiderati. Ho notato che tutte le altre immagini hanno un raggio di 10 unità, ma questa ne sta facendo 20 e si sovrappone. Ad esempio, tre delle immagini hanno da -49,99 a -40,00 ma quella in basso a sinistra ha da -49,99 a -60,00 e la classe successiva è da -59,99 a -70,00. Le immagini hanno anche intervalli opposti, ovvero tre hanno un valore più basso a sinistra, mentre quello in basso a sinistra è un valore più basso a destra (che legge molto più nativamente per me, aumentando i numeri se non i valori da sinistra a destra). Forse questi problemi devono essere affrontati per primi per risparmiare un po 'di tempo piuttosto che solo una modifica manuale del testo.

Una volta che hai una legenda con intervalli e una scala di colori che ti piace, puoi tornare ai tuoi primi due livelli (che sono già classificati correttamente) e modificare manualmente la patch di colore di ogni intervallo in modo che corrisponda al colore che hai deciso per l'intervallo nella legenda . Poiché i due livelli non visualizzeranno le proprie legende, non importa che in uno di essi l'intervallo sia effettivamente compreso tra -89,99 e -80,00 e l'altro tra -81,64 e -80,00 perché entrambi avranno lo stesso colore .

Si noti, tuttavia, che ciò implica che entrambi i set di dati hanno lo stesso intervallo, cosa che non hanno. In effetti sembra che ci saranno due patch di colore che vengono utilizzate solo in una mappa ciascuna (la più alta e la più bassa). Potresti voler mettere una nota su ogni mappa che dia il loro intervallo di dati assoluto. Vorrei anche usare 'to' invece di '-' tra gli intervalli, perché con i valori negativi è un po 'confuso leggere.


Soluzione alternativa:

Per quanto ne so e per cui posso trovare prove, devi avere una classe che inizia con il tuo valore minimo. È possibile aggiungere manualmente le classi (anche quelle vuote) sopra o sotto l'intervallo di dati, ma una classe deve iniziare dal valore minimo.

Quindi, imposta la tua simbologia utilizzando il raster che contiene il valore minimo / minimo di tutti i raster. Ottieni questi simbolizzati. È quindi possibile modificare l' etichetta della classe per dire quello che vuoi. Pertanto, se il valore più basso era 0,4, è comunque possibile modificare l'etichetta per dire 0.

Una volta che hai fatto questo e impostato con la rampa di colore che ti piace, salva un file lyr della simbologia. Dovresti quindi essere in grado di aprire gli altri raster e applicare la stessa simbologia. Poiché gli altri raster avranno tutti valori più alti, dovrebbero classificarsi correttamente e aumenterà solo il valore minimo stesso (o forse quella classe verrà eliminata se non vi rientra nulla). Che di nuovo puoi cambiare l'etichetta della classe in classe invece del valore reale se ciò non si ripercuote sulla simbologia.


Puoi effettivamente saltare il passaggio .lyr e semplicemente classificare un raster come desideri (intervalli, colori, ecc.) E quindi utilizzare la funzione di simbologia di importazione per applicare questo a tutti gli altri raster. Apri Proprietà livello, seleziona la scheda Simbologia, seleziona l'icona della cartella @ in alto a destra (che indicherà Importa quando ci passi sopra) - quindi seleziona il raster che vuoi imitare.
JWallace,

@JWallace True, a condizione che gli altri raster siano già caricati nello stesso documento della mappa (possibilmente lo stesso frame di dati - non riesco a ricordare se ti consentirà di importare la simbologia da un altro) e sei disposto a lasciare che il tuo lavoro crei la simbologia risiede solo nel mxd (e potresti salvarne un backup nel caso in cui cambiassi qualcosa). Ho una risposta grafica che copre questi passaggi qui .
Chris W,

Buona presa sulle strane unità per il risultato in basso a sinistra. Penso che sia stato un artefatto dei miei tentativi di definire manualmente gli intervalli e li ho definiti in ordine inverso. Anche l'uso di "to" anziché "-" è buono. Il problema che ho con la tua soluzione originale è che richiede molto lavoro manuale con la colorazione e l'etichettatura, e ho bisogno di generare una serie di queste figure. La tua soluzione alternativa mi ha dato alcune idee, però. Penso di aver trovato un modo per renderlo un po 'più elegante e rimuovere i problemi del valore minimo.
hfisch,

3

Una soluzione più semplice ma anche più sporca che ha funzionato per me. Non dimenticare di creare un backup dei dati originali.

  1. Apri la tabella degli attributi e avvia la modifica
  2. Modifica due valori manualmente in modo da includere il valore minimo e massimo su cui vuoi basare la tua classificazione (ricorda i valori originali)
  3. Salva e interrompi modifica
  4. Classificare in base al nuovo extrema
  5. Ricominciare e sostituire manualmente i valori modificati con i valori originali
  6. La classificazione esistente non sarà interessata

2

Credo che si tratti della leggenda delle funzionalità ma non dei raster. Se si tratta di raster ignorare il mio suggerimento. Di solito uso questi:

  • Unisci 2 (o più shapefile) BAMBINI in uno, chiamiamolo FAMIGLIA
  • creare legenda per FAMIGLIA
  • importa la simbologia per ogni BAMBINO dalla FAMIGLIA

Spero che aiuti, FP


Basta rendersi conto che è molto simile a JWallace
FelixIP

2

Ho fatto la seguente soluzione alternativa. Ho creato le mie interruzioni di classe in un documento XML e l'ho caricato nella simbologia classificata di entrambi i livelli.

  1. Per ottenere un modello di un documento XML delle interruzioni di classe: nelle proprietà del livello fare clic a destra sull'intervallo di classificazione e quindi "salva interruzioni di classe".
  2. Modifica documento XML: inserisci le interruzioni di classe nel documento XML, puoi anche inserire numeri che non rientrano nell'intervallo dei tuoi set di dati.
  3. Carica interruzioni di classe XML: stesso menu in cui hai salvato il modello (vedi 1), fai clic su "Carica interruzioni di classe"

    Passaggio 1 e 3

Passo 2


1
Quale versione di ArcMap? Non ho la possibilità di salvare le interruzioni di lezione in v10.6: i.imgur.com/znDqUpQ.png
matt wilkie

@mattwilkie Non è una questione di versione ma di tipo di dati. Stai esaminando una finestra di dialogo di simbologia per i dati vettoriali e il salvataggio di interruzioni di classe come questa è disponibile solo per i dati raster. Questa risposta sostanzialmente duplica quella di Craig, ma con illustrazioni.
Chris W,

1

Un modo alternativo è quello di combinare tutti i valori di ciascun livello in un livello, usando in questo modo si avranno i valori minimo e massimo nel livello.

L'illustrazione:
1.combina i valori di tutti i livelli in una colonna (chiamiamolo All_Vals) in un foglio Excel

  1. accanto alla colonna All_Vals aggiungere due nuove colonne denominate X e Y e riempirle con zeri.

  2. In arcmap aggiungi il foglio Excel come tabella e usalo per creare una classe di caratteristiche punto usando lo strumento / comando display xy data quindi esporta il livello evento in un file di forma (lo chiamerò NB_Point) e lo aggiungi al frame di dati.

4 Converti il ​​file di forma NB_Point in gran parte del tipo di classe di funzionalità dei tuoi livelli, ad esempio se il tipo di tuo livello di funzionalità è poligono, usa lo strumento buffer per creare la classe di funzionalità poligono dal file di forma NB_Point (chiamiamolo NB_polygon).

  1. Ora non ti resta che fare clic con il pulsante destro del mouse sul livello finale NB_polygon e applicare la simbologia del colore graduata utilizzando la classificazione delle interruzioni naturali, esportarlo in un file .lyr per utilizzarlo come livello di input quando si utilizza l'utilità di simbologia del livello di importazione per ogni degli strati originali.

Spero che questo aiuti e dispiaccia per eventuali errori di ortografia.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.