Classificando manualmente os dados graduados fora do intervalo no ArcGIS for Desktop?

13

Eu tenho dois shapefiles representando grades com valores simbolizados com cores graduadas, mostrados abaixo:

Original

Você pode ver que os dois shapefiles abrangem intervalos de dados semelhantes, mas atribuem cores ligeiramente diferentes aos intervalos nesses dados. Gostaria de simbolizar os intervalos em cada um dos dois arquivos de forma, usando as mesmas cores para os mesmos intervalos, permitindo uma comparação mais fácil entre os arquivos e permitindo que uma única legenda seja usada.

No entanto, quando tento classificar os intervalos com um intervalo manual, o ArcGIS força o que deve ser o intervalo superior a incluir também o valor mínimo do conjunto de dados. Você pode ver isso no intervalo "-81,64 - 10,00" do quadro de dados esquerdo, abaixo. Isso força toda a camada a ser simbolizada com esta cor. Basicamente, o ArcGIS exige que o valor mínimo no conjunto de dados seja usado como um valor em um dos intervalos.

Novos intervalos

Existe uma maneira de contornar esse recurso?

hfisch
fonte
Lembro-me de ter esse problema também, embora não me lembre exatamente de como o resolvi. Se você classificar como "intervalo igual" e clicar duas vezes nos valores, poderá alterá-los dessa maneira?
23414 GISKid
@GISKid assim que clico duas vezes, a classificação reverte para "Manual", infelizmente.
hfisch 23/07
Que tal ajustar os valores no próprio histograma?
GISKid
@GISKid, os valores retornam ao valor mínimo se você os arrastar abaixo do valor mínimo.
Hfisch
2
Acho que a melhor e mais simples resposta para isso é gis.stackexchange.com/a/136497 - a primeira (e atualmente aceita) resposta é muito longa para o meu gosto.
PolyGeo

Respostas:

12

Definitivamente, é uma grande dor quando o ArcMap tenta ser útil , mesmo quando você realmente não quer que seja.

Uma solução alternativa que encontrei é criar um novo conjunto de dados temporário e adicionar alguns pontos com os valores mínimo e máximo que você sabe que precisará na saída - apenas certifique-se de cobrir todo o intervalo.

Crie sua simbologia com base nesse conjunto de dados falso e salve essa simbologia em um arquivo de camada :

insira a descrição da imagem aqui

... importe a simbologia do arquivo * .lyr para o seu conjunto de dados real:

insira a descrição da imagem aqui

Stephen Lead
fonte
1
Esta solução é menos invasiva que a minha. Estou mudando para a sua resposta.
Hfisch
Obrigado, funciona como um encanto se você ler todas as caixas de diálogo que o arcmap lança para você com bastante cuidado.
Luuklag 15/10/19
6

@ChrisW disse:

Tanto quanto eu sei e posso encontrar evidências, você não pode definir um intervalo de classificação abaixo do valor mínimo nos dados.

Isso me fez pensar e, na verdade, encontrei uma maneira de definir o intervalo de classificação abaixo do valor mínimo. Meu problema original foi criado com base no fato de que o menor intervalo de classificação era necessário para conter o valor mínimo nos dados.

No entanto, nenhuma restrição é colocada nos outros intervalos de classificação utilizados. Portanto, é possível forçar dois (ou mais) intervalos de classificação a ficar abaixo do valor mínimo nos dados. Um deles representará o intervalo de classificação mínimo preferido, enquanto o outro funcionará como um intervalo fictício para conter o valor mínimo.


Aqui está o ponto de partida que eu usei para a classificação. Cada uma das camadas nos quatro quadros de dados foi classificada usando um intervalo definido de 10 pés, independentemente dos intervalos de dados das outras camadas.

Ponto de partida

O intervalo máximo de classificação em qualquer um dos quatro quadros de dados é "0,01 a 10,00" e o intervalo mínimo de classificação é "-110,62 a -110,00" (que idealmente se tornará "-119,00 a -110,00"). Como estou tentando manter intervalos de 10 pés, isso se traduz em um total de 13 intervalos.


Estou usando o quadro de dados superior esquerdo como fonte da minha legenda genérica. Começo abrindo as Propriedades da camada e indo para Classificar. Como quero que 13 intervalos fiquem visíveis, preciso selecionar 14 intervalos para ter um intervalo fictício disponível. Eu faço isso selecionando Manual como método e criando 14 classes.

Etapa 1a

Com os intervalos configurados em seu estado atual (com os maiores valores na parte superior), quaisquer alterações no valor inserido no intervalo não terão efeito em nada além do intervalo na parte inferior da lista. O @ChrisW apontou que isso não é um bug, mas uma característica de como o ArcGIS atribui valores de quebra. Aqui está a janela Propriedades da camada depois de selecionar o método Manual, mas antes de fazer alterações nos intervalos:

Etapa 1b


Para resolver esse problema, inverto temporariamente a classificação da camada. Nesse ponto, os intervalos mais baixos estão no topo, enquanto os intervalos mais altos estão na parte inferior.

Etapa 2a

Agora, se eu rolar até o final da lista de intervalos (onde o intervalo mais alto é exibido) e começar a definir os intervalos adequados de baixo para cima, o ArcGIS lembrará dos intervalos que eu defino:

Etapa 2b

Nesta imagem, eu defini o valor superior em 5 dos 14 intervalos, começando com o maior valor (10,00) e trabalhando para baixo.


Quando chego ao topo da lista e edito meu 14º intervalo, seu valor mínimo ainda será definido como o valor mínimo na camada, pois ele não possui outro intervalo abaixo para obter um valor:

Etapa 3a

Isso não importa, porém, já que é o intervalo fictício que eu mencionei antes. Nesse ponto, inverto a classificação da camada mais uma vez, para que os intervalos mais altos estejam novamente no topo. A imagem abaixo mostra a legenda atualizada para o quadro de dados superior esquerdo, que agora reflete os intervalos adequados para todos os quatro quadros de dados, incluindo o 14º intervalo fictício:

Etapa 3b


A próxima etapa é propagar essas alterações até o restante dos quadros de dados. Alguns problemas são aparentes, no entanto, quando tento importar a simbologia para outros quadros de dados:

Etapa 4a

Como o @ChrisW apontou, isso se deve à minha decisão de começar com uma camada que não possui o valor mínimo absoluto em todos os quadros de dados. Parece que o quadro de dados não exibirá nenhum intervalo abaixo dos que existem no quadro de dados original.

Se você está começando com uma camada como a que fiz, a melhor solução que encontrei para isso é repetir as etapas discutidas acima para cada um dos quatro quadros de dados; definindo manualmente 14 classes, revertendo a classificação das classes, redefinindo a parte superior de cada intervalo e revertendo a classificação para colocar os intervalos mais altos no topo.

A solução mais simples, no entanto, é iniciar o processo de classificação com a camada que possui o menor valor. A opção Importar simbologia pode então ser usada corretamente para os outros quadros de dados.

Etapa 4b


Finalmente, posso excluir três das legendas e ocultar o intervalo fictício na legenda restante ou convertê-lo em gráficos e excluir o intervalo fictício.

Ponto final

hfisch
fonte
Que bom que você conseguiu fazer algo funcionar. Editei minha resposta para corrigir a distorção que você citou (não sei por que disse isso - suas imagens originais mostraram que você poderia).
22414 Chris Chris W
Na verdade, estou tendo problemas para replicar isso. Para tornar a resposta um pouco mais útil, você poderia editar exatamente como criou esses intervalos abaixo do valor mínimo?
31714 Chris Chris W
@ Chrishr Eu expandi bastante o processo. Deixe-me saber se ainda não faz sentido!
Hfisch
2
Obrigado pela atualização. Eu descobri o problema - há uma diferença significativa na maneira como as quebras de definição são tratadas entre os diálogos de classificação e simbologia relacionados ao que você questiona como bug. Basicamente, ele classifica automaticamente os valores de quebra, mas a quebra mais baixa abaixo do valor mínimo é sempre vinculada ao valor mínimo e aparece na parte superior (ou inferior, dependendo da classificação). Para sua informação, enquanto você não pode especificar um número total, pode adicionar ou remover classes no Manual clicando com o botão direito do mouse no histograma.
Chris W
1
No que diz respeito à aplicação da simbologia a outros quadros de dados, como mencionado na minha resposta, tente começar com os dados com o valor mais baixo (o -110,62) usando-o na simbologia inicial. Observo na sua terceira para a última imagem que o valor mínimo da classe fictícia ainda é -61,01 para todos os quatro, o que acredito ser o motivo pelo qual nada abaixo é renderizado, mesmo que exista uma classe para ele. Se você começar com o menor e o valor mínimo for maior, acredito que ele incluirá ou exibirá a simbologia mínima para os dados mínimos quando você aplicar a simbologia aos outros conjuntos de dados.
Chris W
5

Eu me deparei com esse mesmo problema, eu acho ... Se eu entendi direito, você tinha dois (ou mais) conjuntos de dados e precisa fazer com que os intervalos de escala do conjunto de dados correspondam para que as comparações possam ser feitas.

Eu resolvi isso por:

  1. Crie seu primeiro conjunto de dados como você deseja que apareça. Idealmente, com o maior intervalo de dados, apenas para que os símbolos possam ser copiados mais facilmente para o segundo conjunto de dados (menor alcance).

insira a descrição da imagem aqui

  1. Crie seu segundo conjunto de dados, mas não se preocupe com nenhuma simbologia ainda. No segundo conjunto de dados, guia Propriedades da camada> Simbologia, escolha o mesmo tipo de classificação que o primeiro conjunto de dados; neste exemplo, estou usando Categorias> Valores exclusivos e clique no botão Adicionar todos os valores .

insira a descrição da imagem aqui

  1. Agrupe valores para que caiam nos intervalos correspondentes usados ​​no primeiro conjunto de dados. Selecione todos os valores para uma categoria específica e clique com o botão direito do mouse e selecione Grupo . As duas principais categorias já foram agrupadas na imagem abaixo; os quatro valores destacados estão prestes a ser "puxados" para um terceiro grupo.

insira a descrição da imagem aqui

  1. Acho que, nesta fase, é mais fácil rotular novamente as categorias, para que seja mais fácil acompanhar. Neste ponto, você pode ver cinco das sete categorias preenchidas.

insira a descrição da imagem aqui

  1. Finalmente (quase) e o ponto crucial desse problema, adicionar as categorias vazias que existem fora do intervalo de dados do segundo conjunto de dados. Na guia Propriedades da camada> Simbologia, clique no botão Adicionar valores e preencha as categorias necessárias acima e abaixo dos intervalos de dados, conforme necessário.

insira a descrição da imagem aqui

  1. Por fim, rotule novamente as novas categorias vazias para que correspondam ao primeiro conjunto de dados e depois recolore cada categoria para que corresponda aos primeiros.

insira a descrição da imagem aqui

Desculpe se isso é um pouco mais simplificado ou até mesmo uma prática incorreta / ruim. Sou usuário do GIS Stack Exchange há muito tempo e pensei que era hora de começar a contribuir, e este é o meu primeiro post!

Nige
fonte
2
Desculpe, acabei de perceber que o OP é para dados graduados e, após uma verificação rápida, agora percebo que minha solução é inválida. Vou ler com mais atenção na próxima vez ....
Nige
4
  1. Escolha o número de classes que você deseja.
  2. Clique com o botão direito do mouse nos símbolos e selecione save class breaks
  3. isso salva um arquivo xml que você pode abrir e editar em qualquer editor de texto
  4. edite as quebras de classe que você deseja no arquivo xml e salve
  5. clique com o botão direito do mouse nos símbolos novamente e importe o arquivo de quebras de classe recém-editado

FEITO

Craig
fonte
3

Embora a classificação use intervalos semelhantes, os dados não compartilham um intervalo. Acho que a solução aqui é resolvê-lo nas atribuições de legenda e cor, e não na classificação real.

Comece com o resultado inferior esquerdo e converta essa legenda em um gráfico. Edite o texto para obter os intervalos desejados. Percebo que todas as suas outras imagens têm um intervalo de 10 unidades, mas esta está fazendo 20 e se sobrepõe. Por exemplo, três das imagens têm -49,99 a -40,00, mas a parte inferior esquerda tem -49,99 a -60,00, e a próxima classe é -59,99 a -70,00. As imagens também têm faixas opostas - ou seja, três têm valor mais baixo à esquerda, enquanto que a esquerda inferior é mais baixa à direita (o que me parece muito mais natural, aumentando números, se não valores, da esquerda para a direita). Talvez esses problemas precisem ser resolvidos primeiro para economizar tempo, em vez de apenas uma edição manual de texto.

Depois de ter uma legenda com intervalos e uma rampa de cores que você gosta, você pode voltar para as duas primeiras camadas (que já estão classificadas corretamente) e editar manualmente o patch de cores de cada intervalo para corresponder à cor que você escolheu para o intervalo na legenda . Como as duas camadas não exibem suas próprias lendas, não importa que em uma delas o intervalo seja realmente -89,99 a -80,00 e a outra seja -81,64 a -80,00, porque ambas terão a mesma cor .

Observe, no entanto, que isso implicará que os dois conjuntos de dados tenham o mesmo intervalo, o que eles não têm. De fato, parece que haverá duas amostras de cores usadas apenas em um mapa cada (a mais alta e a mais baixa). Você pode colocar uma nota em cada mapa que forneça seu intervalo de dados absoluto. Eu também usaria 'to' em vez de '-' entre os intervalos, porque com os valores negativos é meio confuso ler.


Solução alternativa:

Tanto quanto eu sei e posso encontrar evidências, você deve ter uma classe que comece no seu valor mínimo. Você pode adicionar manualmente classes (mesmo as vazias) acima ou abaixo do intervalo de dados, mas uma classe deve iniciar no valor mínimo.

Portanto, configure sua simbologia usando a varredura que contém o valor mais baixo / mínimo de todas as rasters. Obtenha estes simbolizados. Você pode editar o rótulo da classe para dizer o que quiser. Portanto, se o seu valor mais baixo for 0,4, você ainda poderá alterar o rótulo para dizer 0.

Depois de concluir e configurar a rampa de cores desejada, salve um arquivo lyr da simbologia. Você deve poder abrir seus outros rasters e aplicar a mesma simbologia. Como todos os outros controladores terão valores mais altos, eles devem ser classificados corretamente e apenas o valor mínimo em si aumentará (ou talvez essa classe seja descartada se nada cair dentro dela). Novamente, você pode alterar o rótulo da classe para o piso da classe, em vez do valor real, se isso não continuar com a simbologia.

Chris W
fonte
Na verdade, você pode pular a etapa .lyr e simplesmente classificar uma varredura como desejar (faixas, cores etc.) e, em seguida, usar a função de simbologia de importação para aplicar isso a todas as outras rasters. Abra Propriedades da camada, selecione a guia Simbologia, selecione o ícone da pasta na parte superior direita (que indicará Importar quando você passar o mouse sobre ela) - e selecione a varredura que deseja imitar.
JWallace
@JWallace True, desde que as outras rasters já estejam carregadas no mesmo documento de mapa (possivelmente o mesmo dataframe - não se lembra se permitirá a importação de simbologia de outra) e você está disposto a deixar seu trabalho na configuração do a simbologia reside apenas no mxd (e você talvez salve um backup dele no caso de mudar as coisas). Eu tenho uma resposta gráfica cobrindo essas etapas aqui .
23714 Chris Chris
Boa captura das unidades estranhas para o resultado inferior esquerdo. Acho que esse foi um artefato das minhas tentativas de definir manualmente os intervalos e os defini na ordem inversa. O uso de 'para' em vez de '-' também é bom. O problema que tenho com sua solução original é que ela requer muito trabalho manual com coloração e rotulagem, e preciso gerar uma série dessas figuras. Sua solução alternativa me deu algumas idéias, no entanto. Acho que encontrei uma maneira de torná-lo um pouco mais elegante e remover os problemas de valor mínimo.
Hfisch
3

Uma solução mais fácil, mas também mais suja, que funcionou para mim. Não se esqueça de criar um backup dos seus dados originais.

  1. Abra a tabela de atributos e comece a editar
  2. Edite dois valores manualmente para incluir o valor mínimo e máximo em que você deseja basear sua classificação (lembre-se dos valores originais)
  3. Salvar e parar a edição
  4. Classifique com base nos novos extremos
  5. Reinicie e substitua manualmente os valores alterados pelos valores originais
  6. A classificação existente não será afetada
Alex_A
fonte
2

Acredito que se trata de legenda de recurso, mas não de rasters. Se isso é sobre rasters, desconsidere minha sugestão. Eu costumo usar estes:

  • Mesclar 2 (ou mais shapefiles) CRIANÇAS em um, vamos chamá-lo de FAMÍLIA
  • criar legenda para FAMÍLIA
  • simbologia de importação para cada CRIANÇA da FAMÍLIA

Espero que ajude, FP

FelixIP
fonte
Apenas perceba que é muito parecido com JWallace
FelixIP
2

Eu fiz a seguinte solução alternativa. Criei minhas próprias quebras de classe em um documento XML e o carreguei na simbologia classificada de ambas as camadas.

  1. Para obter um modelo de um documento XML de quebras de classe: nas propriedades da camada, clique com o botão direito do mouse no intervalo de classificação e, em seguida, em "salvar quebras de classe".
  2. Editar documento XML: insira as quebras de classes no documento XML, você também pode inserir números que estarão fora do intervalo dos seus conjuntos de dados.
  3. Carregar quebras de classe XML: mesmo menu em que você salvou o modelo (consulte 1), clique em "carregar quebras de classe"

    Etapa 1 e 3

Passo 2

Maja Ott
fonte
1
Qual versão do ArcMap? Eu não tenho a opção de salvar breaks classe em 10.6: i.imgur.com/znDqUpQ.png
Matt Wilkie
@mattwilkie Não é uma questão de versão, mas de tipo de dados. Você está visualizando uma caixa de diálogo de simbologia para dados vetoriais e salvando quebras de classe como essa estão disponíveis apenas para dados rasterizados. Essa resposta basicamente duplica a de Craig, mas com ilustrações.
22720 Chris
1

Uma maneira alternativa é combinar todos os valores de cada camada em uma camada. Dessa forma, você terá os valores mínimo e máximo na camada.

A ilustração:
1.combine os valores de todas as camadas em uma coluna (vamos chamá-lo de All_Vals) em uma planilha do Excel

  1. ao lado da coluna All_Vals, adicione duas novas colunas nomeadas como X e Y e preencha-as com zeros.

  2. No arcmap, adicione a planilha do Excel como uma tabela e use-a para criar uma classe de recurso de ponto usando o comando / ferramenta display xy data, depois exporte a camada de eventos para um shapefile (o nome será NB_Point) e adicione-a ao quadro de dados.

4) Converta o arquivo de forma NB_Point para o tipo de classe de recurso de suas camadas, por exemplo, se o tipo de camada de recurso for polígono, use a ferramenta de buffer para criar classe de recurso de polígono a partir do shapefile NB_Point (vamos chamá-lo de NB_polygon).

  1. Agora, basta clicar com o botão direito do mouse na camada final NB_polygon e aplicar a simbologia de cores graduada usando a classificação de quebras naturais, exportar para um arquivo .lyr e usá-la como camada de entrada ao usar o utilitário de simbologia da camada de importação para cada das camadas originais.

Espero que isso ajude e desculpe por qualquer erro de ortografia.

BMB
fonte