¿Exportar varios archivos al mismo tiempo en QGIS?

8

Tengo muchos archivos .TAB abiertos en QGIS y quiero guardarlos en .SHP para poder trabajar con ellos en ArcMap.

¿Hay alguna manera de guardar / exportar todos estos archivos al mismo tiempo o realmente tengo que "guardar como" por separado para cada archivo?

Frida
fuente
Busque OGR2OGR
CARTOS
Pensé que eso estaba integrado en QGIS? Quizás estoy equivocado.
Frida
Tal vez use ogr2ogr como herramienta de texto en lugar de que QGIS lo use. Esto abre posibilidades para la conversión sin abrir QGIS, y con la capacidad de ejecutar una secuencia de tales instrucciones, convirtiendo un conjunto de archivos uno tras otro. Esto funcionará bien si tiene una manera fácil de obtener una lista de los nombres de archivo (como si fueran algún tipo de secuencia). Si estamos viendo cinco o seis capas, entonces será tan fácil hacerlo una por una usando QGIS, pero si estamos hablando de muchas más capas / archivos, podría valer la pena. Consulte los archivos bat en Windows para guardar una secuencia de comandos de texto.
Rostranimin

Respuestas:

21

Prueba esto Frida:

  1. Cree una carpeta para almacenar sus Shapefiles allí (por ejemplo, he creado la carpeta /tmp/data/, uso GNU / Linux).

  2. En QGIS, abra la consola QGIS Python.

  3. Escriba la siguiente línea, editando el lado derecho para que coincida con la ruta completa a su carpeta (asegúrese de incluir la barra diagonal inversa / barra diagonal inversa):

    myDir = '/tmp/data/'

  4. Presione Entrar.

  5. Copie las siguientes líneas a la consola QGIS Python:

    for vLayer in iface.mapCanvas().layers():
        QgsVectorFileWriter.writeAsVectorFormat( vLayer, 
            myDir + vLayer.name() + ".shp", "utf-8", 
            vLayer.crs(), "ESRI Shapefile" )
  6. Presione Entrar un par de veces.

Ahora debería tener sus Shapefiles dentro de la carpeta que creó en el paso 1.

Si tiene problemas, avíseme su sistema operativo y la ruta completa a su carpeta.

Germán Carrillo
fuente
1
@gcarrillo, deberías! Esto es muy útil y ahorra mucha molestia.
Joseph
¡Un complemento parece una buena idea! Un script similar para rásteres también sería útil. Parece que solo puedo "guardar" las ubicaciones espaciales de los rásteres destinados a MapInfo abriéndolos en QGIS y guardándolos como archivos .tif (GeoTIFF). Parece que ArcMap no puede acceder a la información espacial de los rásteres a menos que haga esto.
Frida
8
from qgis.core import *

suffix = "_foo"
pathToFile = "/path/to/wherever/"

layers = iface.legendInterface().layers()
for layer in layers:
    newName = layer.name() + suffix + ".shp"
    ret = QgsVectorFileWriter.writeAsVectorFormat(layer, pathToFile + newName, "utf-8", None, "ESRI Shapefile")
    if ret == QgsVectorFileWriter.NoError:
        print newName + " saved to " + pathToFile + "!"

Para la capa ráster, use QgsRasterFileWriter

€: puede encontrar un ejemplo más detallado en el Cookbook .

ymirsson
fuente
¿realmente no hay forma de hacer esto a través de la interfaz gráfica de usuario?
chrismarx
@chrismarx "guardar como"? no tengo miedo (o al menos, no que yo sepa).
ymirsson
2

Solo una pequeña adición: si también desea cambiar el CRS del archivo exportado y agregar más prefijos y sufijos, puede modificar el script de la siguiente manera:

from qgis.core import *
import os
pathToFile = "S:\\pathway\\"
trs = QgsCoordinateReferenceSystem()
trs.createFromId(31370)
suffix = "_Lambert1972_Versie2016-01-04"
prefix = "Transect_Vuursalamander_"
layers = iface.legendInterface().layers()
for layer in layers:
    newName = prefix + layer.name() + suffix + ".shp"
    ret = QgsVectorFileWriter.writeAsVectorFormat(layer,pathToFile + newName,'utf-8',trs,'ESRI Shapefile')
    if ret == QgsVectorFileWriter.NoError:
        print newName + " saved to " + pathToFile + "!"

El 31370 se puede reemplazar por el EPSG del CRS en el que desea que esté el archivo exportado.

Hannes Ledegen
fuente