¿Evitar las funciones de etiquetado si se superponen con otra capa en QGIS?

15

Con QGIS 2.12.2, ¿cómo puedo configurar el etiquetado de capas para evitar colocar etiquetas donde ya existen características de otra capa?

Por ejemplo, si tengo una capa de corriente / río polilínea que contiene las "líneas centrales" del lago, y coloco una capa "lago" polígono sobre ella en el dibujo orden, no quiero que la capa del río coloque una etiqueta dentro del lago. En su lugar, preferiría que el río esté marcado como fuera del lago (según sea necesario). De esa manera, puedo colocar etiquetas de la capa lakes y no tengo colisiones de etiquetas.

Aquí hay un ejemplo donde (lo que intencionalmente he puesto las líneas en la parte superior para 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:

    
pregunta RyanDalton 05.01.2016 - 23:53

4 respuestas

8

El etiquetado automatizado es un problema realmente difícil, pero la geometría de las características no es tan mala.

Incluso si puede lograr que la colocación funcione adecuadamente la mayor parte del tiempo, es probable que haya excepciones. Usted notará algunos de estos y podrá abordarlos. Otros que no notará cuando haga un mapa grande o un conjunto de mosaicos porque no puede verter cada centímetro de su mapa en una variedad de escalas. Casi siempre tendrá la necesidad de mover manualmente algunas etiquetas colocadas automáticamente, desde una perspectiva cartográfica.

Como sugerí en mi comentario, facilitaría el problema para el motor de etiquetado. En este caso, lo haría definiendo mis ríos como una vista de tabla *, con geometrías de ríos recortadas para respetar los límites de los lagos. De esa manera, no hay características del río dentro de los lagos que deben etiquetarse, ni colisiones de etiquetas.

* Asumo el uso de un RDBMS aquí, como PostgreSQL / PostGIS, por conveniencia y la capacidad de actualizar solo su fuente de datos autorizada y hacer que la vista funcione sin su intervención. Pero también puede trabajar por adelantado con archivos estáticos para recortar y eliminar características, pero no recomiendo esto si alguna vez planea volver a visitar un mapa.

Ejemplo :

Comenzando con dos shapefiles (podrían ser tablas de bases de datos) de ríos y lagos, con ríos que se intersecan con lagos y causan problemas de etiquetado que son difíciles de resolver por completo y con confianza:

TráigalosaPostgressinecesitahacerlocon 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 :

CREATE OR REPLACE VIEW rivers_clipped AS
SELECT r.id, ST_Difference(r.geom, l.geom) AS geom, r.name
FROM public.rivers AS r, public.lakes AS l;

Añade la vista a tu diseño:

Aunqueelproblemaenmiejemplosefabricadeliberadamente,losestilosenlasdoscapasdelrío(originalyvista)soniguales,ysecolocanenlapartesuperiordellagoenelordendedibujo.Cuandoactualicelasgeometríasdeloslagosoríos,nonecesitaráhacermuchomásqueactualizarlarepresentación.

    
respondido por el Richard Law 12.01.2016 - 23:28
11

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 " Desaconseje que otras etiquetas cubran características en esta capa ".

    
respondido por el ndawson 06.01.2016 - 04:27
3

El etiquetado en general 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 el problema de etiquetado de ríos / lagos donde no se genera un etiquetado agradable. 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 todas las partes se etiqueten. 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 controlan más fácilmente. Y a menudo, la geometría de las características para la representación cartográfica puede chocar con una buena geometría para el etiquetado. Por lo tanto, me gustaría proponer la creación de una nueva capa donde las corrientes no crucen los lagos, para que pueda sortear el problema por completo. Tener una capa de etiquetado adicional también puede ayudar a prevenir problemas donde la dirección de etiquetado no está en la deseada, ya que está ligada a la forma en que se creó la geometría.

Bueno, me temo que mi consejo no es lo que esperabas, pero espero que mi alternativa te ayude de alguna manera.

    
respondido por el Frank 12.01.2016 - 09:05
3

hay un complemento llamado " Mask " 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 pudiera dividir sus líneas en la intersección con los lagos (consulte los diferentes métodos here ). 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", 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 y se disuelve, por lo que puede continuar trabajando con una sola capa (almacene la longitud total en una tabla de atributos específicos si es necesario).

    
respondido por el radouxju 12.01.2016 - 09:20

Lea otras preguntas en las etiquetas