Zmieniasz nazwy plików kształtu w QGIS?


12

Mam ogromną listę warstw w projekcie, które są nazwane w języku obcym. Chcę przetłumaczyć i dodać tytuł angielski do nazwy.

Kiedy klikam warstwę prawym przyciskiem myszy i wybieram Properties -> Generali zmieniam nazwę warstwy, jest ona wizualizowana w drzewie warstw, ale oryginalny plik pozostaje taki sam.

Czy istnieje sposób na zmianę nazwy oryginalnego pliku z QGIS?

Jest ich tak wiele, że przeszukanie ich wszystkich w moich folderach zajęłoby zbyt dużo czasu.


1
Myślę, że musisz kliknąć prawym przyciskiem myszy i wybrać opcję Zapisz jako, aby zmienić nazwę pliku, jeśli nie chcesz korzystać z Eksploratora Windows.
landocalrissian

Łączenie powiązanego żądania funkcji w QGIS.org: Issues.qgis.org/issues/15791 , abyśmy mogli mieć na niego oko.
Andre Silva,

Odpowiedzi:


9

W tym celu należy: i) usunąć warstwę z ToC, ii) zmienić nazwę plików zgodnych z Shapefile (tj. Shp, dbf, shx, prj i tym podobne), oraz iii) załadować zmienioną nazwę do QGIS. Ale musimy zautomatyzować taki przepływ pracy!

Jeśli spojrzysz na te kroki, są one podobne do działania wtyczki Table Manager. Dostosowałem więc taki kod wtyczki, aby zmienić nazwę Shapefiles, możesz pobrać go stąd .

Możesz użyć tego w ten sposób (najpierw spróbuj z małym projektem kopii zapasowej, aby zobaczyć, jak to działa):

  1. Zmień nazwy warstw QGIS w ToC, te nowe nazwy zostaną zastąpione odpowiednimi nazwami Shapefiles.
  2. Zapisz projekt QGIS w tym samym folderze co skrypt rename_shapefiles.py
  3. Otwórz konsolę QGIS Python.
  4. Skopiuj tam kolejny fragment kodu:

    from rename_shapes import RenameShapefiles
    for lyr in iface.mapCanvas().layers():
        rn = RenameShapefiles( iface, lyr )
        rn.doSave()

Otóż ​​to! Przetestowałem to na GNU / Linux, QGIS 2.6. Kolejność warstw w ToC zmienia się po uruchomieniu kodu.

Daj mi znać, jeśli masz jakiś problem.

Jeśli chcesz zachować kolejność warstw, zadaj nowe pytanie, być może mogę na to spojrzeć :).


4

Dla użytkowników R napisałem szybką funkcję R, która wsadowo zmienia nazwę pliku .shp i wszystkich powiązanych plików. To całkiem gołe kości i nie ma sprawdzania błędów itp., Więc jeśli się nie powiedzie, musisz przeprowadzić małe dochodzenie.

# 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."))
}

1

Jeśli masz spójny schemat ich zmiany, możesz to zrobić w skrypcie python. Jedną z metod w pythonie jest os.rename (src, dest) . Konkretne szczegóły zależą od algorytmu zmiany nazw plików. Służy to zmianie nazwy rzeczywistych plików, a nie tylko nazw warstw w spisie treści.

W przeciwnym razie nie znam alternatywy dla ręcznej zmiany nazwy, ponieważ musisz je przetłumaczyć. Teoretycznie możesz zbudować słownik tłumaczeń w Pythonie, ale prawdopodobnie kodowanie zajęłoby tyle samo czasu, co zrobienie tego ręcznie. Pamiętaj też, że sama zmiana nazw plików spowoduje uszkodzenie źródeł danych. Zmiana nazw tylko nazw warstw w Spisie treści powinna być poprawna, ale nie znam tak dobrze QGIS jak Arc.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.