Vous exportez plusieurs fichiers en même temps dans QGIS?

8

J'ai beaucoup de fichiers .TAB ouverts dans QGIS et je veux les enregistrer dans .SHP afin de pouvoir les utiliser dans ArcMap.

Existe-t-il un moyen de sauvegarder / exporter tous ces fichiers en même temps ou dois-je vraiment "enregistrer sous" séparément pour chaque fichier?

Frida
la source
Recherchez OGR2OGR
CARTOS
Je pensais que c'était intégré à QGIS? Je me trompe peut-être.
Frida
Utilisez peut-être ogr2ogr comme outil de texte au lieu de l'utiliser par QGIS. Cela ouvre des possibilités de conversion sans ouvrir QGIS - et avec la possibilité d'exécuter une séquence de ces instructions, en convertissant un ensemble de fichiers l'un après l'autre. Cela fonctionnera bien si vous avez un moyen facile d'obtenir une liste des noms de fichiers (comme s'il s'agissait d'une sorte de séquence). Si nous examinons cinq ou six couches, il sera aussi facile de faire une à une en utilisant QGIS - mais si nous parlons de beaucoup plus de couches / fichiers, cela en vaut la peine. Consultez les fichiers bat sous Windows pour enregistrer une séquence de commandes de texte.
Rostranimin

Réponses:

21

Essayez ce Frida:

  1. Créez un dossier pour y stocker vos fichiers de formes (par exemple, j'ai créé le dossier /tmp/data/, j'utilise GNU / Linux).

  2. Dans QGIS, ouvrez la console QGIS Python.

  3. Écrivez la ligne suivante, en modifiant le côté droit pour faire correspondre le chemin d'accès complet à votre dossier (assurez-vous d'inclure la barre oblique / barre oblique de fin):

    myDir = '/tmp/data/'

  4. Appuyez sur Entrée.

  5. Copiez les lignes suivantes dans la console QGIS Python:

    for vLayer in iface.mapCanvas().layers():
        QgsVectorFileWriter.writeAsVectorFormat( vLayer, 
            myDir + vLayer.name() + ".shp", "utf-8", 
            vLayer.crs(), "ESRI Shapefile" )
    
  6. Appuyez plusieurs fois sur Entrée.

Vous devriez maintenant avoir vos fichiers Shapefiles dans le dossier que vous avez créé à l'étape 1.

Si vous rencontrez des problèmes, faites-moi connaître votre système d'exploitation et le chemin d'accès complet à votre dossier.

Germán Carrillo
la source
1
@gcarrillo, vous devriez! Ceci est très utile et vous évite bien des ennuis.
Joseph
Un plugin semble être une bonne idée! Un script similaire pour les rasters serait également utile. Je ne peux que "sauvegarder" les emplacements spatiaux des rasters destinés à MapInfo en les ouvrant dans QGIS et en les enregistrant en tant que fichiers .tif (GeoTIFF). Il semble qu'ArcMap ne puisse pas accéder aux informations spatiales des rasters à moins que je ne le fasse.
Frida
9
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 + "!"

Pour la couche raster, utilisez QgsRasterFileWriter

€: Vous pouvez trouver un exemple plus détaillé dans le livre de recettes .

ymirsson
la source
n'y a-t-il vraiment aucun moyen de le faire via l'interface graphique?
chrismarx
@chrismarx "enregistrer sous"? pas peur (ou du moins - pas que je sache).
ymirsson
2

Juste un petit ajout: si vous souhaitez également modifier le CRS du fichier exporté et ajouter un préfixe et un suffixe supplémentaires, vous pouvez modifier le script comme suit:

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 + "!"

Le 31370 peut être remplacé par l'EPSG du CRS dans lequel vous souhaitez que le fichier exporté se trouve.

Hannes Ledegen
la source