lunes, 10 de agosto de 2015

QGIS: cortar archivos vectoriales.

Para completar la entrada anterior sobre cómo cortar archivos ráster en QGIS, en esta ocasión vamos a hacer lo propio con los archivos vectoriales. Supongo que esto es válido para cualquier formato vectorial, pero nosotros vamos a trabajar con el formato shape .shp que es el más clásico y extendido.
Como nos gusta explicar el proceso simulando casos prácticos y útiles, vamos a utilizar los vectoriales de la BTN100 de los que hablamos en un reciente artículo. Usaremos diferentes ejemplos con diferentes capas, pues hay muchas formas de extraer los datos que necesitemos.

Ejemplo 1. Por tabla de atributos.
Vamos a extraer del conjunto nacional los núcleos de población de la provincia de León. En este ejemplo se trata simplemente de estudiar los atributos de la tabla, descubriendo que uno de ellos es el código del INE por provincias (COD_INE), por lo que seleccionando todos los elementos que comienzan por 24... tendremos seleccionados todos los núcleos urbanos de la provincia de León, cuyo código es el 24.
Abrimos en QGIS la capa BTN100_0501S_NUC_POB.shp de la BTN100.
Ordenamos numéricamente el COD_INE pulsando sobre él y seleccionamos del primero al último pinchando sobre la columna numérica izquierda (número de elemento) con la tecla mayúsculas pulsada (como cualquier selección en Windows). Los polígonos seleccionados se pintan de amarillo en el mapa.
Una vez seleccionados simplemente copiamos y pegamos los elementos desde el menú Edición para crear nuestra nueva capa.
El pegado nos ofrece dos opciones: nueva capa vectorial (se nos abre la ventana normal de creación de capa ) y nueva capa vectorial de memoria (una pequeña ventana nos pide el nombre y la selección se añade como capa sin ser guardada en el disco duro).
.En nuestro ejemplo hemos optado por cargar la capa en memoria. Aceptamos y ya tenemos nuestra nueva capa con los núcleos de población de la provincia de León, que luego podemos guardar si queremos.

Ejemplo 2. Usando una capa de recorte.
En otras ocasiones nos será más sencillo apoyarnos en un ámbito geográfico pues la tabla de atributos puede no ser tan clara o fácil de filtrar, o no ser tan sencillo seleccionar los elementos como en el ejemplo anterior.
Queremos extraer del conjunto nacional las curvas de nivel comprendidas dentro del Parque Nacional de Picos de Europa. Obviamente la tabla de curvas no nos ofrece ningún atributo que nos ayude a ello, por lo que vamos a usar el polígono adecuado. Abrimos en QGIS las capas BTN100_0202L_CURV_NIV.shp y BTN100_0102S_ZON_PRO.shp, correspondientes a las curvas de nivel y las zonas protegidas de España respectivamente. Hacemos el zoom necesario hasta situarnos encuadrados en la zona de interés.
Con la capa zonas protegidas activa usamos la herramienta Seleccionar objetos espaciales para seleccionar el polígono correspondiente al Parque Nacional de Picos de Europa. El polígono cambia a color amarillo para confirmar que está seleccionado.
Desde el menú Vectorial accedemos a la herramienta Cortar, configurándola como se ve en pantalla y explico en el pie de foto.
En Capa vectorial de entrada seleccionamos las curvas de nivel pues es la que queremos cortar. En Capa de corte seleccionamos las zonas protegidas, pues es la que nos hace de máscara de la zona a cortar. MUY IMPORTANTE marcar la casilla Usar sólo objetos espaciales seleccionados para que el recorte se haga del polígono seleccionado (Picos) y no de todos los polígonos de zonas protegidas.
Seleccionamos también un nombre y una ubicación para el Archivo shape de salida (curvasPICOS en nuestro ejemplo) y dejamos marcada la casilla de Añadir resultado al mapa. Con esto está todo listo y pulsamos Aceptar.
Ya tenemos nuestra capa de curvas de Picos (en azules) extraída de la capa nacional.
Si quisiéramos hacer un recorte al contrario (es decir, extraer las curvas de nivel de toda España excepto las del Parque Nacional de Picos) usaríamos la herramienta Diferencia...

En el fondo lo importante es dar con la forma de seleccionar aquellos objetos que nos interesa extraer o cortar. Como ejemplo de esto queremos extraer de la capa BTN100_0508P_PUENTE.shp de la BTN100 solamente aquellos puentes a nivel nacional que están situados sobre algún río. Cargamos en QGIS ambas capas (puentes y ríos).
Puentes y ríos cargados en QGIS.

Utilizando la herramienta corte, sin ninguna selección previa, y con la configuración que veis en la captura de pantalla, QGIS nos extrae aquellos puentes que tocan con la capa de corte (líneas de ríos).
La nueva capa con los puentes que intersectan con ríos en color verde. A simple vista puede parecer que contiene errores, pero si ampliamos zoom efectivamente vemos que los puntos no extraídos no llegan a tocar la línea de río.
Por supuesto se nos pueden presentar casos para todos los gustos: que el número de objetos a extraer sea tan reducido que interese hacer la selección manualmente y proceder después según el ejemplo 1. O que no tengamos un polígono de recorte acorde a nuestras necesidades, con lo que siempre podremos crear nosotros mismos el polígono vectorial sobre un mapa de referencia y proceder después según el ejemplo 2.
No hay una forma única de corte, pues dependiendo de las circunstancias de cada caso nos convendrá optar por uno u otro método. Pero estos ejemplos seguramente cubran la mayoría de situaciones que se nos puedan presentar a la hora de extraer (cortar) una parte de datos vectoriales del conjunto. Un saludo.

11 comentarios :

  1. Muchas gracias Javier, el tutorial me ha venido como anillo al dedo en línea con las dudas que te plantee en otro post.
    Enhorabuena!!!!

    ResponderEliminar
    Respuestas
    1. Gracias Juan Carlos. En realidad fue tras tu pregunta cuando me decidí a hacer los artículos de cortar ráster y cortar vectoriales. Un saludo!!

      Eliminar
  2. excelente!! graciassss! lo que habria de agregarle es q en el caso de la version Qgis Lyion, la opcion cortar esta dentro de: Vectorial/Herramientas de geoproceso/cortar

    ResponderEliminar
    Respuestas
    1. En la imagen 5 del artículo se ve esa misma ubicación. Saludos!

      Eliminar
  3. helopezb@unal.edu.co Cordial Saludo: Sabes que he tratado una y otra vez realizarlo y no logro tener éxito, no se que hacer estoy tratando de cortar un shape de hidrografia y es un fracaso

    ResponderEliminar
    Respuestas
    1. Sin tener el archivo delante es imposible ofrecerte alguna solución. Los ejemplos del artículo están todos probados al publicar pero es imposible para mí saber porqué tu caso no funciona sin verlo. Saludos!

      Eliminar
  4. Tengo varias capas vectoriales tipo linea que con autoensamblado he unido de modo de conformar una zona cerrada. Necesito definir el área interna resultante.Sin hacerlo manualmente creando una capa poligono a partir de éstas. Es posible hacerlo a partir de estas capas tipo línea? Con combinar cree una capa con todos los objetos y cree otra tipo polígono que cubria con creces el área interior, intentando crear así un polígono identico al area interior mediante cortar o mediante diferencia pero con estos comandos no tengo ningun resultado. En definitiva la solución partiría de saber si es posible transformar una capa tipo linea a otra poligono o si puedo cortar un poligono con una capa tipo linea. Gracias. Muy buenos aportes

    ResponderEliminar
  5. Buenos días, tengo un archivo shp y me resulta muy grande para trabajar en el con otros programas, como podria recortar una parte de ese archivo

    ResponderEliminar
    Respuestas
    1. Pues selecciona sólo la cantidad de elementos que quieras de los que contiene y lo guardas como un shp nuevo...

      Eliminar
  6. Hola, buenas tardes!! Tengo una consulta, estoy investigando cómo hacerlo y aun no descubrí la mejor manera. Tengo un shp de lineas (una ruta) y quisiera cortar la línea en segmentos iguales de 100m. Se puede hacer en el qgis dicho proceso?? MUCHAS GRACIAS ANTICIPADAS!!!!

    ResponderEliminar
  7. Gracias Javier por compartir tus conocimientos.

    ResponderEliminar