Mehr

Shapefiles in QGIS umbenennen?


Ich habe eine riesige Liste von Ebenen in einem Projekt, die in einer Fremdsprache benannt sind. Ich möchte den Namen übersetzen und den englischen Titel hinzufügen.

Wenn ich mit der rechten Maustaste auf eine Ebene klicke und wähleEigenschaften -> Allgemeinund ändern Sie den Layernamen, wird er im Layerbaum angezeigt, aber die Originaldatei bleibt gleich.

Gibt es eine Möglichkeit, den Namen der Originaldatei von QGIS zu ändern?

Es gibt so viele, dass es zu lange dauern würde, sie alle in meinen Ordnern zu durchsuchen.


Dazu müsstest du ich) Entfernen Sie die Ebene aus dem ToC, ii) benennen Sie die Dateien um, die dem Shapefile entsprechen (d. h. shp, dbf, shx, prj und dergleichen), und iii) Laden Sie den umbenannten Layer in QGIS. Aber wir müssen diesen Workflow automatisieren!

Wenn Sie sich die Schritte ansehen, ähneln sie denen des Table Manager-Plugins. Also habe ich den Code eines solchen Plugins angepasst, um Shapefiles umzubenennen, Sie können ihn hier herunterladen.

Sie können es auf diese Weise verwenden (versuchen Sie es zuerst mit einem kleinen Backup-Projekt, um zu sehen, wie es funktioniert):

  1. Benennen Sie Ihre QGIS-Layer im Inhaltsverzeichnis um, diese neuen Namen werden verwendet, um Ihre entsprechenden Shapefile-Namen zu überschreiben.
  2. Speichern Sie Ihr QGIS-Projekt im selben Ordner wie das Skript rename_shapefiles.py
  3. Öffnen Sie die QGIS Python-Konsole.
  4. Kopiere dort das nächste Code-Snippet:

    from rename_shapes importiere RenameShapefiles für lyr in iface.mapCanvas().layers(): rn = RenameShapefiles( iface, lyr ) rn.doSave()

Das ist es! Ich habe es unter GNU/Linux, QGIS 2.6 getestet. Die Reihenfolge der Ebenen im Inhaltsverzeichnis variiert nach der Ausführung des Codes.

Lassen Sie es mich wissen, wenn Sie ein Problem haben.

Wenn Sie möchten, dass die Ebenenreihenfolge erhalten bleibt, stellen Sie eine neue Frage, vielleicht kann ich sie mir ansehen :).


Für R-Benutzer habe ich eine schnelle R-Funktion geschrieben, die die .shp-Datei und alle zugehörigen Dateien stapelweise umbenennt. Es ist ziemlich einfach und es gibt keine Fehlerprüfung usw. Wenn es also fehlschlägt, müssen Sie ein wenig Nachforschungen anstellen.

# Funktion zum Umbenennen von Shapefile (.shp) und allen zugehörigen Dateien # fpath = vollständiger Dateipfad einer der zugehörigen Dateien (Zeichen) # newName = neuer Name für die Dateien (Zeichen) renameShp <- function(fpath, newName) { dir <- dirname(fpath) base <- basename(fpath) fname <- strsplit(base, '[.]')[[1]][1] ls <- list.files(path=dir, pattern=fname, full .names=TRUE) sapply(ls, FUN=function(p){ file.rename(from=p, to=sub(pattern=fname,replacement=newName, p))}) print(paste("Umbenannt", Länge (ls), "Dateien.")) }

Wenn Sie ein konsistentes Schema zum Umbenennen haben, können Sie dies in einem Python-Skript tun. Eine Methode in Python ist os.rename(src, dest). Spezifische Details hängen vom Algorithmus zum Umbenennen der Dateien ab. Dies dient zum Umbenennen der eigentlichen Dateien, nicht nur der Ebenennamen im Inhaltsverzeichnis.

Ansonsten wüsste ich keine Alternative zum manuellen Umbenennen, da man sie übersetzen muss. Theoretisch könnten Sie ein Wörterbuch mit Übersetzungen in Python erstellen, aber das Codieren würde wahrscheinlich genauso lange dauern wie manuell. Beachten Sie auch, dass das Umbenennen von Dateien selbst Datenquellen zerstört. Das Umbenennen nur der Layernamen im Inhaltsverzeichnis sollte in Ordnung sein, aber ich bin mit QGIS nicht so vertraut wie mit Arc.


Ich schlage vor, dieses Programm zu verwenden, um Ihre Dateien umzubenennen http://www.bulkrenameutility.co.uk/Main_Intro.php. Es ist offen und einfach zu bedienen. Nachdem Sie Ihre Datei umbenannt haben, müssen Sie mit einem Texteditor Ihre qgis-Projektdatei öffnen (versuchen Sie Notepad++) und führen Sie das gleiche Suchen und Ersetzen durch.


Schau das Video: QGIS - Layer Properties - Rename fields of shapefile attribute table (Oktober 2021).