Puede hacer una superposición (intersecciones/toques) de sus líneas fluviales con un polígono que represente el mar.
Antes de poder hacer esto, se necesita una capa poligonal que represente el mar. Lo mejor es utilizar datos para el mar creados por la misma institución de la que tienes tus ríos para que puedas estar seguro de que los conjuntos de datos coinciden. Esto es importante para no tener errores topológicos como ríos que no llegan al mar porque son demasiado cortos y no tocan la línea de costa (aunque sea por una fracción de milímetro).
Uno de estos casos es el del río Le Var que llega al Mediterráneo entre el aeropuerto de Niza y Saint-Laurent-du-Var. Pero como se puede ver en la siguiente captura de pantalla, combinando su conjunto de datos del río con los polígonos de OpenStreetMap para el Mediterráneo, hay un pequeño hueco de unos 30 metros (véase el rectángulo rojo) entre el punto final del río (línea azul oscura) y la costa (línea negra):
Como alternativa, cuando utilice cualquier otro polígono para el mar, que aplique un pequeño buffer a los polígonos del mar. Lo he intentado con una parte del Mediterráneo que limita con Francia utilizando los polígonos del mar que obtuve de OpenStreetMap . El tamaño del búfer debe ser lo suficientemente grande para evitar el problema mencionado anteriormente y lo suficientemente pequeño para no alcanzar las líneas de los ríos en el interior que de hecho no tocan la costa. Un valor de 100 metros podría ser un buen comienzo. En cualquier caso, compruebe sus datos en puntos de muestreo aleatorios para ver si se ajustan bien.
No te olvides de crear un índice espacial para ambas capas: ríos y mar/marino. Así que crear un índice espacial, haga clic derecho en la capa, Properties / Source tab
y haga clic en Create spatial index
. Eso ayuda a acelerar el tiempo de procesamiento. Asegúrese de descomprimir todos los datos antes de cargarlos en QGIS.
Cuando tenga los datos listos (capa de líneas fluviales, capa de polígonos marinos), es el momento de procesarlos:
Ejecutar Menu Vector / Data Management Tools / Join attributes by location
, establezca los ríos como capa base y los polígonos del mar como capa de unión. Marque las casillas intersects
y touches
y luego ejecute la herramienta: se obtendrá una capa de copia de sus ríos, pero con nuevos atributos. Uno de ellos es el atributo id (precedido por el prefijo, si ha definido uno en la herramienta): contiene el identificador de la capa poligonal que toca o interseca. Así, si tiene un número ahí, sabrá que este segmento de río llega al mar.
Ahora puede utilizar esta salida para estilizar los ríos que desembocan en el mar de forma diferente a los otros que no llegan al mar. En la captura de pantalla de abajo, añadí una nueva capa de símbolos (símbolo verde más), la puse en Geometry generator / LineString
y pegamos esta expresión:
if (
"imp_fid" >0,
$geometry,
''
)
imp_fid
es el campo creado por la herramienta que contiene el id de la característica del polígono del mar que la línea toca o interseca: si está vacío, el río no tiene acceso al mar, si no está vacío, así >0
QGIS debería dibujar el río ( $geometry
), de lo contrario la salida debería estar vacía: ''
.
Establece esta capa de símbolos con una línea azul más gruesa y oscura. La otra capa de símbolos tiene una línea negra estándar y fina: así se ve que las líneas azules son los ríos que llegan al mar:
Sin embargo, en sus datos sigue habiendo algunos casos extraños que son difíciles de evaluar en un proceso automático. Un ejemplo son las dos pequeñas líneas a pocos kilómetros al noroeste de La Ciotat, cerca de las coordenadas 5.564645,43.193170 (EPSG:4326). Debería reflexionar críticamente sobre lo que representan los datos que tiene y lo que debería considerarse "un río" - podría aplicar un criterio de longitud mínima para que una línea se considere "un río".