¿Cómo simbolizar entidades con valores NULL en simbología graduada?

15

Tengo un conjunto de datos de entidades poligonales y un atributo de una tabla diferente a la que me uno (uno a uno) dentro de QGIS para simbolizar los atributos como un mapa coroplético. Sin embargo, no todos los campos de polígono tienen un campo coincidente en la tabla de atributos numéricos, por lo que hay algunos valores nulos al producir la simbología graduada.

Según mi investigación, el consejo más común en esta situación es incluir una copia del conjunto de datos del polígono (o algún otro fondo) que defina una simbología predeterminada. Esto funciona porque los valores nulos no se clasifican en la simbología graduada, por lo que se puede ver "debajo" de ellos. He adjuntado una imagen de exactamente esto. Las características de color gris oscuro no existen en la tabla de unión ( mb_percentile_isochrones_all), pero sí existen en la tabla de polígonos de límite ( mb2013_wgtn). Por lo tanto, necesito dos instancias de la mb2013_wgtntabla para mostrar las características "sin datos".

ingrese la descripción de la imagen aquí

Sin embargo, esto no me parece elegante. Mucho más intuitivo sería definir un símbolo de valor nulo. Quizás esto podría ser perfectamente transparente para ser coherente con lo que existe actualmente, o tal vez sería algún tipo de gris apagado, lo que el usuario quiera. El punto es que actualmente se necesitan dos capas diferentes en los contenidos para manejar la simbología de valores nulos. Esto significa que para cambiar la simbología de todas sus entidades al mismo tiempo (por ejemplo, si desea aumentar el ancho de todos los bordes), esto debe manejarse dos veces: una vez en las propiedades de la entidad con la simbología graduada, y una vez para la capa de "fondo" que maneja el símbolo nulo.

¿Es posible definir un símbolo de valor "nulo" sin utilizar una "copia" de la misma capa utilizada para la simbología graduada, en QGIS (2.6.1)?

alphabetasoup
fuente
¿Qué tiene de malo tener la misma capa dos veces con una simbología diferente? Quizás use el filtrado de atributos para que no aparezca ningún polígono en ambas capas si obtiene confusión en la identificación o el geoprocesamiento. ¿Las características no coincidentes son "nulas" en su valor de unión o tienen un valor que no aparece en la tabla?
Michael Stimson
1
1. Problema: si quiero controlar las propiedades comunes de las entidades con un valor y con un valor nulo (por ejemplo, color del borde), se debe realizar dos veces. Esto hace que sea mucho más fácil olvidar cambiar uno de ellos o cometer un pequeño error (por ejemplo, un tono de gris incorrecto para el contorno). 2. No hay problemas con respecto a la confusión para el geoprocesamiento, solo la simbología: quiero simbolizar la nullcaracterística en la misma capa. 3. Las características inigualables están nullen su valor de unión (como se ve en la tabla de atributos QGIS después de la unión).
alphabetasoup
También hace que sea más difícil cuando se construye una leyenda para incluir una muestra "sin datos", ya que este símbolo provendría de una capa diferente.
alphabetasoup
2
Tienes razón. No hay ningún lugar para seleccionar 'mostrar características NULL como esta' en el cuadro de diálogo de símbolos graduados, las filas con valores NULL simplemente no se muestran.
Michael Stimson

Respuestas:

17

Como @ MichaelMiles-Stimson ya mencionó, no parece haber una manera de simbolizar las funciones NULL . Sin embargo, existe una alternativa mediante la cual crea un filtro para forzar a QGIS a tratar los valores NULL como un número entero como 0. He incluido un ejemplo donde creé 3 polígonos simples, cada uno con un cierto valor:

3 polígonos

Tabla de atributos

Aquí está la simbología graduada que utilicé con el siguiente comando:

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

Simbología graduada

¡Espero que esto ayude!

José
fuente
Esto es bastante útil y probablemente lo pondré en práctica. El problema que anticipo es que 0 es un valor significativo en mi conjunto de datos. Probablemente podría usar -1 o algo así. Pero en cualquier caso, esto haría que la identificación automática de saltos de clase sea un poco difícil de manejar. Tal vez debería enviar una solicitud de función para esto dado que ahora está claro que las soluciones son menos que ideales.
alphabetasoup
Sí, incluir NULLvalores podría ser bastante útil. No es una solución alternativa bonita, pero siempre puede enviar una solicitud de función y esperar que esté disponible en la próxima versión :)
Joseph
6

Sé que se ha respondido, pero solo para dar otra opción:

Puede dejar el campo sin filtro ni valor (sé que funciona para CATEGORIZADO o BASADO EN REGLAS):

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

ingrese la descripción de la imagen aquí

Estoy usando QGIS 2.10 y funciona.

Marcos Saito
fuente
¡Siempre es bueno saber más métodos para resolver o solucionar un problema! +1
Joseph
1
Animar a ver esta mejora desde 2.6, ¿verdad? ¿Puede confirmar que funciona cuando los valores nulos provienen de una tabla unida?
alphabetasoup
1
Un par de notas sobre esto sin embargo. La simbología en blanco o NULL en una simbología basada en reglas se aplicará a TODAS las características. Las reglas se aplican de arriba hacia abajo, por lo que puede ser superpuesta por otra regla, pero el NULL también estará allí. Importante si es una fuerte simbología. También puede "generar" sus reglas primero creándolas en la simbología categorizada o graduada y luego cambiando a Rule Based /
HeikkiVesanto
@Vesanto, no sé si lo tengo o si es un problema. En mi caso, estoy agregando valores Z a un SHP hecho de líneas de contorno, que originalmente no tenía valores Z (Z = NULL). He configurado las características con valores NULL en rojo y las que tienen cualquier valor en negro. Al editar, tan pronto como establezco un valor Z, la función (la línea de contorno) cambia de rojo a negro, de esta manera sé cuáles aún no he establecido.
Marcos Saito
@Marcos no será un problema en tu caso. Pero digamos que la línea era roja para empezar, y querías volverla invisible una vez que ya no era nula. Eso no funcionaría.
HeikkiVesanto
4

Similar a lo que otros usuarios han dicho, la mejor opción es usar símbolos basados ​​en reglas. Para evitar crear manualmente las reglas:

  1. Cambie el tipo de símbolo a Graduado .
  2. Defina la columna del símbolo, los colores, los intervalos, etc. según lo normal Símbolos graduados, con valores nulos no mostrados
  3. Cambie el tipo de símbolo de Graduado a Basado en reglas . Los símbolos definidos en el paso anterior serán transferidos. Haga clic en el botón Agregar símbolo y seleccione ELSE . Cambia el estilo según corresponda. Esta clase de símbolo ELSE capturará cualquier valor que aún no se haya simbolizado, incluidos los valores nulos. Agregar ELSE símbolo general
  4. Haga clic en Aceptar. Los valores nulos ahora se simbolizarán. Símbolos graduados, incluidos los valores nulos.

(Probado en QGIS 3.6.0)

Jesse Reilly
fuente
Simple y útil. Gracias. Sugeriría que QGIS debería tener una opción de valores de exclusión para la clasificación graduada. Me he encontrado con cierta confusión al intentar clasificar con valores de nodata marcados como -1, -999 ... etc. (usando QGIS 3.14 LTR). Afortunadamente, QGIS ignora automáticamente los valores nulos al menos al hacer simbología graduada.
Iván Santiago