Mehrere Dateien gleichzeitig in QGIS exportieren?

8

Ich habe viele .TAB-Dateien in QGIS geöffnet und möchte sie in .SHP speichern, damit ich in ArcMap mit ihnen arbeiten kann.

Gibt es eine Möglichkeit, alle diese Dateien gleichzeitig zu speichern / exportieren, oder muss ich wirklich für jede einzelne Datei separat "speichern unter"?

Frida
quelle
Suchen Sie nach OGR2OGR
CARTOS
Ich dachte, das wäre in QGIS eingebaut? Vielleicht irre ich mich.
Frida
Verwenden Sie ogr2ogr möglicherweise als Textwerkzeug, anstatt es von QGIS verwenden zu lassen. Dies eröffnet Möglichkeiten zum Konvertieren ohne Öffnen von QGIS - und mit der Möglichkeit, eine Folge solcher Anweisungen auszuführen und eine Reihe von Dateien nacheinander zu konvertieren. Dies funktioniert gut, wenn Sie auf einfache Weise eine Liste der Dateinamen erhalten (z. B. wenn es sich um eine Sequenz handelt). Wenn wir uns fünf oder sechs Ebenen ansehen, ist es genauso einfach, eine nach der anderen mit QGIS zu erstellen - aber wenn wir über viel mehr Ebenen / Dateien sprechen, ist es möglicherweise die Mühe wert. Überprüfen Sie die Bat-Dateien unter Windows, um eine Folge von Textbefehlen zu speichern.
Rostranimin

Antworten:

21

Versuchen Sie diese Frida:

  1. Erstellen Sie einen Ordner, um Ihre Shapefiles dort zu speichern (z. B. habe ich den Ordner erstellt /tmp/data/, ich verwende GNU / Linux).

  2. Öffnen Sie in QGIS die QGIS Python-Konsole.

  3. Schreiben Sie die folgende Zeile und bearbeiten Sie die rechte Seite so, dass sie dem vollständigen Pfad zu Ihrem Ordner entspricht (stellen Sie sicher, dass Sie den abschließenden Schrägstrich / Backslash einfügen):

    myDir = '/tmp/data/'

  4. Drücken Sie Enter.

  5. Kopieren Sie die folgenden Zeilen in die QGIS Python-Konsole:

    for vLayer in iface.mapCanvas().layers():
        QgsVectorFileWriter.writeAsVectorFormat( vLayer, 
            myDir + vLayer.name() + ".shp", "utf-8", 
            vLayer.crs(), "ESRI Shapefile" )
  6. Drücken Sie mehrmals die Eingabetaste.

Sie sollten Ihre Shapefiles jetzt in dem Ordner haben, den Sie in Schritt 1 erstellt haben.

Wenn Sie auf Probleme stoßen, teilen Sie mir Ihr Betriebssystem und den vollständigen Pfad zu Ihrem Ordner mit.

Germán Carrillo
quelle
1
@gcarrillo, solltest du! Dies ist sehr nützlich und spart viel Mühe.
Joseph
Ein Plugin scheint eine gute Idee zu sein! Ein ähnliches Skript für Raster wäre ebenfalls nützlich. Ich kann nur scheinen, die räumlichen Positionen von für MapInfo bestimmten Rastern zu "speichern", indem ich sie in QGIS öffne und sie als .tif (GeoTIFF) -Dateien speichere. Es scheint, dass ArcMap nur dann auf die räumlichen Informationen der Raster zugreifen kann, wenn ich dies tue.
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 + "!"

Verwenden Sie für die Rasterebene QgsRasterFileWriter

€: Ein ausführlicheres Beispiel finden Sie im Kochbuch .

Ymirsson
quelle
Gibt es wirklich keine Möglichkeit, dies durch die GUI zu tun?
Chrismarx
@chrismarx "speichern unter"? Angst nicht (oder zumindest - nicht, dass ich es weiß).
Ymirsson
2

Nur eine kleine Ergänzung: Wenn Sie auch das CRS der exportierten Datei ändern und weitere Präfixe und Suffixe hinzufügen möchten, können Sie das Skript folgendermaßen ändern:

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

Der 31370 kann durch das EPSG des CRS ersetzt werden, in dem sich die exportierte Datei befinden soll.

Hannes Ledegen
quelle