Como simbolizar recursos com valores NULL na simbologia graduada?

15

Eu tenho um conjunto de dados de recurso de polígono e um atributo de uma tabela diferente à qual me associo (um a um) no QGIS para simbolizar os atributos como um mapa de coroas. No entanto, nem todos os campos poligonais têm um campo correspondente na tabela de atributos numéricos, portanto, existem alguns valores nulos ao produzir a simbologia graduada.

De minha pesquisa, o conselho mais comum nessa situação é incluir uma cópia do conjunto de dados de polígonos (ou algum outro background) que defina uma simbologia padrão. Isso funciona porque os valores nulos não são classificados na simbologia graduada, para que se possa ver "embaixo" deles. Anexei uma imagem exatamente disso. Os recursos cinza escuro não existem na tabela de junção ( mb_percentile_isochrones_all), mas na tabela de polígonos de limite ( mb2013_wgtn). Então, eu preciso de duas instâncias da mb2013_wgtntabela para mostrar os recursos "sem dados".

insira a descrição da imagem aqui

No entanto, isso não parece elegante para mim. Muito mais intuitivo seria definir um símbolo de valor nulo. Talvez isso possa ser perfeitamente transparente para ser consistente com o que existe atualmente ou talvez seja algum tipo de cinza desativado - o que o usuário desejar. O ponto é que, atualmente, são necessárias duas camadas diferentes no conteúdo para lidar com a simbologia dos valores nulos. Isso significa que, para alterar a simbologia de todos os seus recursos ao mesmo tempo (por exemplo, se você deseja aumentar a largura de todas as bordas), isso deve ser tratado duas vezes: uma vez nas propriedades do recurso com a simbologia graduada e uma vez para a camada "background" que lida com o símbolo nulo.

É possível definir um símbolo de valor "nulo" sem usar uma "cópia" da mesma camada usada para a simbologia graduada, no QGIS (2.6.1)?

alphabetasoup
fonte
O que há de errado em ter a mesma camada duas vezes com simbologia diferente? Talvez use a filtragem de atributos para que nenhum polígono apareça nas duas camadas se você estiver tendo confusão na identificação ou no geoprocessamento. Os recursos não correspondentes são 'nulos' em seu valor de junção ou possuem um valor que não aparece na tabela?
Michael Stimson
1
1. Problema: se eu quiser controlar as propriedades comuns dos recursos com um valor e um valor nulo (por exemplo, cor da borda), isso deve ser realizado duas vezes. Isso torna muito mais fácil esquecer de mudar uma delas ou cometer um pequeno erro (por exemplo, tom de cinza errado no contorno). 2. Sem problemas de confusão para o geoprocessamento, apenas a simbologia: quero simbolizar o nullrecurso na mesma camada. 3. Recursos incomparáveis ​​estão nullem seu valor de junção (como visto na tabela de atributos QGIS pós-junção).
alphabetasoup
Isso também dificulta a construção de uma legenda para incluir uma amostra "sem dados", pois esse símbolo viria de uma camada diferente.
alphabetasoup
2
Você está certo. Não há nenhum lugar para selecionar 'mostrar recursos NULL como este' na caixa de diálogo de símbolo graduado, linhas com valores NULL simplesmente não são mostradas.
Michael Stimson

Respostas:

17

Como o @ MichaelMiles-Stimson já mencionou, não parece haver uma maneira de simbolizar recursos NULL . No entanto, existe uma alternativa na qual você cria um filtro para forçar o QGIS a tratar valores NULL como um número inteiro como 0. Incluí um exemplo em que criei 3 polígonos simples, cada um com um determinado valor:

3 polígonos

Tabela de Atributos

Aqui está a simbologia graduada que usei com o seguinte comando:

case when "Some_Value" IS NULL then 0 else "Some_Value" end

Simbologia graduada

Espero que isto ajude!

Joseph
fonte
Isso é bastante útil e provavelmente vou colocar isso em prática. O problema que antecipo é que 0 é um valor significativo no meu conjunto de dados. Eu provavelmente poderia usar -1 ou algo assim. Mas, em ambos os casos, isso tornaria a identificação automática de quebras de classe um pouco complicada. Talvez eu deva enviar uma solicitação de recurso para isso, pois agora está claro que as soluções alternativas estão abaixo do ideal.
alphabetasoup
Sim, incluir NULLvalores pode ser bastante útil. Não é uma solução bonita, mas você sempre pode enviar um pedido de recurso e espero que se torna disponível na próxima versão :)
Joseph
6

Eu sei que foi respondido, mas apenas para dar outra opção:

Você pode simplesmente deixar o campo sem filtro ou valor (eu sei que funciona para CATEGORIZED ou RULE BASED):

http://docs.qgis.org/2.0/uk/docs/training_manual/vector_classification/classification.html

insira a descrição da imagem aqui

Estou usando o QGIS 2.10 e funciona.

Marcos Saito
fonte
É sempre bom conhecer mais métodos para solucionar ou solucionar um problema! +1
Joseph
1
Incentivando a ver essa melhoria desde o 2.6, certo? Você pode confirmar que funciona quando os valores nulos vêm de uma tabela associada?
alphabetasoup
1
Algumas notas sobre isso, no entanto. A simbologia em branco ou NULL em uma simbologia baseada em regras será aplicada a TODOS os recursos. As regras são aplicadas de cima para baixo, podendo ser sobrepostas por outra regra, mas o NULL também estará lá. Importante se é uma simbologia forte. Você também pode "gerar" você governa pela primeira criá-los na Categorized ou graduado simbologia e, em seguida, mudar para Rule Based /
HeikkiVesanto
@ Vesanto, não sei se o comprei ou se é um problema. No meu caso, estou adicionando valores Z a um SHP feito de linhas de contorno, que originalmente não tinham valores Z (Z = NULL). Eu configurei os recursos com valores NULL para vermelho e os que possuem qualquer valor como preto. Ao editar, assim que eu defino um valor Z, o recurso (a linha de contorno) passa de vermelho para preto, assim conheço os que ainda estou para definir o valor Z.
Marcos Saito
@Marcos não será um problema no seu caso. Mas vamos dizer que a linha estava vermelha no começo e você queria torná-la invisível, uma vez que não era mais nula. Isso não funcionaria.
HeikkiVesanto
4

Semelhante ao que outros usuários disseram, a melhor opção é usar símbolos baseados em regras. Para evitar a criação manual das regras:

  1. Mude o tipo de símbolo para Graduado .
  2. Defina a coluna do símbolo, cores, intervalos etc., conforme normal Símbolos graduados, com valores nulos não mostrados
  3. Altere o tipo de símbolo de Graduado para Baseado em regras . Os símbolos definidos na etapa anterior serão transferidos. Clique no botão Adicionar símbolo e selecione ELSE . Mude o estilo conforme apropriado. Essa classe de símbolo ELSE captura todos os valores que ainda não foram simbolizados, incluindo valores nulos. Adicionando o símbolo catch-all ELSE
  4. Clique OK. Valores nulos agora serão simbolizados. Símbolos graduados, incluindo valores nulos

(Testado no QGIS 3.6.0)

Jesse Reilly
fonte
simples e útil. Obrigado. Sugiro que o QGIS deva ter uma opção de exclusão de valores para a classificação Graduada. Eu me deparei com alguma confusão ao tentar classificar com valores nodata sinalizados como -1, -999 ... etc. (usando o QGIS 3.14 LTR). Felizmente, o QGIS ignora automaticamente valores nulos pelo menos ao fazer uma simbologia graduada.
Iván Santiago