Ich habe ein Verzeichnis mit mehreren Shapefiles.
Wie kann man all diese Shapefiles mit ogr2ogr nach MapInfo konvertieren?
Ich weiß, wie ich eine Datei konvertieren kann. Und ich kann ein Stapelskript erstellen, das eine Zeile für jede Datei schreibt. Aber gibt es nicht eine einfachere Möglichkeit, alle Dateien in einem Verzeichnis (und einem Unterverzeichnis) zu konvertieren?
Antworten:
Führen Sie unter Windows für das aktuelle Verzeichnis und die Unterverzeichnisse unter dem aktuellen Verzeichnis den folgenden Befehl aus:
Um kurz zu erklären, was hier vor sich geht ,
%~dpnf.tab
verwenden Sie die Variable % f , mit der der Buchstabe d river und der Name p ath (dh der Ordner oder das Verzeichnis) hinzugefügt werden , und extrahieren Sie die Datei n ame (ohne die.shp
Dateierweiterung). . Zuletzt.tab
wird unmittelbar nach den zusammengesetzten Variablenmodifikatoren für die neue Erweiterung hinzugefügt.Wenn Sie sich also in einem Verzeichnis befinden
C:\MyData
und Daten in diesem Verzeichnis sowie in den UnterverzeichnissenC:\MyData\Region1
und befindenC:\MyData\Region1\City1
, wird ein beliebiges Shapefile (mit.shp
Erweiterung) verarbeitet und eine Datei mit einem ähnlichen Namen.tab
im selben Verzeichnis erstellt.quelle
%f
auf verdoppeln%%f
. Weitere Informationen finden Sie unter ss64.com/nt/for.html .Für Unix Bash:
Wenn Sie in einem * nix-basierten Betriebssystem (z. B. Linux oder OS X) arbeiten, gibt es einige Batch-Shell-Skripte, die clhenrik hier entwickelt hat (auf denen das Obige basiert).
Ich arbeite an einer Abzweigung, die einige der Skripte etwas allgemeiner macht und eine etwas ausführlichere Beschreibung der Verwendung liefert.
quelle
Wie Alex Markov sagte, ist der beste Weg für Sie, OGR zu verwenden .
Sie müssen ein Skript erstellen, das jedoch sehr einfach ist. Wenn Sie Windows verwenden, müssen Sie lediglich den folgenden Code in der Befehlszeile (innerhalb des gewünschten Ordners) ausführen:
Überprüfen Sie diese Seite, alles wird hier erklärt:
http://www.processamentodigital.com.br/?p=2511
quelle
mit python:
Sie können
os.getcwd()
zu Ihrem Pfad wechseln, in dem sich Ihre Dateien befinden ...ich hoffe es hilft dir
quelle
for a in *.shp:
ist ein Syntaxfehler; Sie denkenfrom glob import glob; for a in glob('*.shp'):
Sie brauchen keine Schleife, Sie können einfach ein Verzeichnis als Quelle und Ziel benennen und ogr2ogr konvertiert alle Dateien im Quellverzeichnis. Siehe hier: Konvertieren von TAB in MIF / MIF in TAB
quelle
Hört sich so an, als bräuchten Sie eine for-Schleife. Eine Erklärung ihrer Funktionsweise finden Sie unter http://www.robvanderwoude.com/for.php .
quelle
Universal Translator in Mapinfo kann mehrere Dateien verarbeiten. Gehen Sie zum Zielordner, wählen Sie alle Shapefiles aus und definieren Sie CRS für die Eingabe und Ausgabe. Es sollte getan werden.
quelle
Dies ist eine Verfeinerung der obigen Antwort von Aragon. Es wird nur ogr2ogr für .TAB- oder .TAB-Dateien ausgeführt und andere Dateitypen im Ordner ignoriert.
quelle