Esta crónica fue probado por expertos así se garantiza la exactitud de nuestra esta reseña.
Solución:
En QGIS> = 2.12, puede configurar 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 “Disuadir a otras etiquetas de cubrir entidades en esta capa“.
El etiquetado automatizado es un problema realmente difícil, pero la geometría de 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. Algunos de estos los notará y podrá abordarlos. Otros no los notará cuando haga un mapa grande o un mosaico 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, haría esto definiendo mis ríos como una vista de tabla*, con geometrías de río recortadas para respetar los límites del lago. De esa manera, no hay características de ríos dentro de lagos para etiquetar, ni 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 hacer algo de trabajo por adelantado con static archivos 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áelos a Postgres si lo necesitas 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:
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;
Agregue la vista a su diseño:
Aunque el problema de mi ejemplo está fabricado deliberadamente, los estilos en las dos capas del río (original y vista) son los mismos, y se colocan sobre el lago en el orden de dibujo. Cuando actualice las geometrías de lagos o ríos, no necesitará hacer mucho más que actualizar la representación.
El etiquetado en general me resulta bastante difícil, al menos para generar etiquetas que complazcan los sentidos de mi cartógrafo. Si bien la función de etiquetado automático funciona bien el 80 % de las veces, hay casos como el problema de etiquetado de ríos/lagos en los que no genera un etiquetado agradable. El etiquetado automático a menudo está vinculado a la geometría de la característica, por ejemplo, cuántas partes hay en una línea para que al principio todas las partes estén etiquetadas. Por supuesto, QGIS tiene medios para evitar el etiquetado repetido, que también depende de la escala de la vista de mapa actual.
Bueno, de todos modos, mi consejo no es una solución rápida. A menudo creo una capa especializada solo para el etiquetado, de modo que mis etiquetas se controlen más fácilmente. Y muchas veces 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, propondría crear una nueva capa donde los arroyos no crucen los lagos, para que pueda evitar el problema por completo. Tener una capa de etiquetado adicional también puede ayudar a evitar problemas en los que la dirección del etiquetado no sea la deseada porque está ligada a cómo se creó la geometría.
Bueno, me temo que mi consejo no es lo que esperabas, pero espero que mi enfoque alternativo te ayude de alguna manera.