Shapefiles in QGIS umbenennen?

12

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

Wenn ich mit der rechten Maustaste auf eine Ebene klicke Properties -> Generalund den Ebenennamen auswähle und ändere, wird er im Ebenenbaum angezeigt, aber die Originaldatei bleibt gleich.

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

Es gibt so viele, dass das Durchsuchen aller in meinen Ordnern zu lange dauern würde.

Kwai
quelle
1
Ich denke, Sie müssten mit der rechten Maustaste klicken und Speichern unter wählen, um den Namen der Datei zu ändern, wenn Sie den Windows Explorer nicht verwenden möchten.
Landocalrissian
Verknüpfen der zugehörigen Funktionsanforderung in QGIS.org: issue.qgis.org/issues/15791 , damit wir sie im Auge behalten können.
Andre Silva

Antworten:

9

Dazu müssten Sie i) die Ebene aus dem ToC entfernen, ii) die Dateien umbenennen, die dem Shapefile entsprechen (dh shp, dbf, shx, prj und dergleichen), und iii) die umbenannte Ebene in laden 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 Sicherungsprojekt, um zu sehen, wie es funktioniert):

  1. Benennen Sie Ihre QGIS-Ebenen im Inhaltsverzeichnis um. Diese neuen Namen werden verwendet, um Ihre entsprechenden Shapefiles-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. Kopieren Sie dort das nächste Code-Snippet:

    from rename_shapes import RenameShapefiles
    for 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 dem Ausführen des Codes.

Lassen Sie mich wissen, wenn Sie ein Problem haben.

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

Germán Carrillo
quelle
4

Für R-Benutzer habe ich eine schnelle R-Funktion geschrieben, mit der die .shp-Datei und alle zugehörigen Dateien im Stapel umbenannt werden. Es ist ziemlich nackt und es gibt keine Fehlerprüfung usw. Wenn es fehlschlägt, müssen Sie eine kleine Untersuchung durchführen.

# Function to rename shapefile (.shp) and all associated files
# fpath = full file path of any of the associated files (character)
# newName = new name for the files (character)

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("Renamed", length(ls), "files."))
}
ndimhypervol
quelle
1

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 davon ab, wie der Algorithmus zum Umbenennen der Dateien lautet. Dies dient zum Umbenennen der eigentlichen Dateien, nicht nur der Ebenennamen im Inhaltsverzeichnis.

Ansonsten kenne ich keine Alternative zum manuellen Umbenennen, da Sie sie übersetzen müssen. Theoretisch könnten Sie ein Wörterbuch mit Übersetzungen in Python erstellen, aber das Codieren würde wahrscheinlich genauso lange dauern wie das manuelle Ausführen. Beachten Sie außerdem, dass das Umbenennen von Dateien selbst Datenquellen beschädigt. Das Umbenennen nur der Ebenennamen im Inhaltsverzeichnis sollte in Ordnung sein, aber ich bin mit QGIS nicht so vertraut wie Arc.

recurvata
quelle
1

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 es mit Notepad ++) und das gleiche Suchen und Ersetzen durchführen.

Sergio
quelle