Con QGIS 2.12.2, ¿cómo puedo configurar el etiquetado de capas para evitar colocar etiquetas donde ya existen entidades de otra capa?
Por ejemplo, si tengo una capa de polilínea de arroyo / río que contiene "líneas centrales" del lago, y coloco una capa de polígono "lago" encima de ella en el orden de dibujo, no quiero que la capa del río coloque una etiqueta dentro del lago . En cambio, preferiría etiquetar el río fuera del lago (según sea necesario). De esa manera, puedo colocar etiquetas desde la capa de lagos y no me encuentro con colisiones de etiquetas.
Aquí hay un ejemplo, donde (he puesto intencionalmente las líneas en la parte superior con fines visuales) lo que espero lograr es que no se muestren etiquetas de la línea central del río dentro del polígono del lago:
Respuestas:
El etiquetado automatizado es un problema realmente difícil, pero la geometría de las características no es tan mala.
Incluso si puede obtener la colocación para trabajar adecuadamente la mayor parte del tiempo, es probable que haya excepciones. Algunos de estos los notará y podrá abordar. Otros no los notará al hacer un mapa grande o un conjunto de mosaicos porque no puede verter sobre cada pulgada de su mapa en una variedad de escalas. Casi siempre tendrá la necesidad de mover algunas etiquetas colocadas automáticamente de forma manual, desde una perspectiva cartográfica.
Como sugerí en mi comentario, facilitaría el problema al motor de etiquetado. En este caso, haría esto definiendo mis ríos como una vista de tabla *, con geometrías de ríos recortadas para respetar los límites del lago. De esa manera, no hay características de los ríos dentro de los lagos para ser etiquetados, y no hay colisiones de etiquetas.
* Asumo el uso de un RDBMS aquí, como PostgreSQL / PostGIS, por conveniencia y la capacidad de actualizar solo su fuente autorizada de datos y hacer que la vista funcione sin su intervención. Pero también puede trabajar un poco por adelantado con archivos estáticos para recortar y eliminar características, pero no lo recomiendo si alguna vez planea volver a visitar un mapa.
Ejemplo:
Comenzando con dos archivos de forma (podrían ser tablas de bases de datos) de ríos y lagos, con ríos que se cruzan con lagos y causan problemas de etiquetado que son difíciles de resolver por completo y con confianza:
Tráigalos a Postgres si lo necesita con shp2pgsql :
shp2pgsql -s 4326 /data/lake public.lakes | psql -d mydb
shp2pgsql -s 4326 /data/river public.rivers | psql -d mydb
Luego defina una vista con ST_Difference :
Agregue la vista a su diseño:
Aunque el problema en mi ejemplo está fabricado deliberadamente, los estilos en las dos capas del río (original y vista) son los mismos, y se colocan en la parte superior del lago en el orden de dibujo. Cuando actualice las geometrías de lagos o ríos, no necesitará hacer mucho más que actualizar el renderizado.
fuente
En QGIS> = 2.12 puede establecer la capa de polígono "lago" como un obstáculo de etiqueta. Esto se hace a través de las propiedades de capa de la capa "lago", en la sección 'Etiquetas'. Cambie el cuadro combinado en la parte superior de " Sin etiquetas " a " Desalentar a otras etiquetas de cubrir entidades en esta capa ".
fuente
En general, el etiquetado me resulta bastante difícil, al menos para generar etiquetas que satisfagan los sentidos de mi cartógrafo. Si bien la función de etiquetado automático funciona bien el 80% del tiempo, hay casos como su problema de etiquetado de río / lago donde no genera un buen etiquetado. El etiquetado automático a menudo está vinculado a la geometría de la entidad, por ejemplo, cuántas partes hay en una línea para que al principio se etiqueten todas las partes. Por supuesto, QGIS tiene medios para evitar el etiquetado repetido, que también depende de la escala de la vista del mapa actual.
Bueno, de todos modos, mi consejo no es una solución rápida. A menudo creo una capa especializada solo para etiquetar, de modo que mis etiquetas se controlen más fácilmente. Y a menudo la geometría de las características para la representación cartográfica puede colisionar con una buena geometría para el etiquetado. Por lo tanto, propondría crear una nueva capa donde las corrientes no crucen los lagos, para que pueda evitar el problema por completo. Tener una capa de etiquetado adicional también puede ayudar a prevenir problemas en los que la dirección de etiquetado no está en la dirección prevista, ya que está vinculada a cómo se creó la geometría.
Bueno, me temo que mi propina no es lo que esperabas, pero espero que mi enfoque alternativo te ayude de alguna manera.
fuente
hay un complemento llamado " Máscara " que se puede usar para filtrar etiquetas basadas en polígonos.
Sin embargo, como mencioné en mi comentario anterior, sería mucho más fácil si pudieras dividir tus líneas en la intersección con los lagos (ver diferentes métodos aquí ). Luego puede definir una etiqueta de tamaño cero para los segmentos que se encuentran dentro de los lagos ("Capa"> "Etiquetado"> "Configuración de datos definidos"> "Tamaño" y luego seleccione la columna donde almacena el tamaño de la etiqueta). La división mantiene la mayoría de las propiedades de su red fluvial y es reversible con disolución, por lo que puede continuar trabajando con una sola capa (si es necesario, almacene la longitud total en una tabla de atributos específica).
fuente