Перейменування форм-файлів у QGIS?


12

У мене величезний перелік шарів у проекті, які названі іноземною мовою. Я хочу перекласти та додати назву англійською мовою.

Коли я клацаю правою кнопкою миші на шарі і вибираю Properties -> Generalта змінюю ім'я шару, він візуалізується у дереві шарів, але вихідний файл залишається таким же.

Чи є спосіб змінити ім'я вихідного файлу з QGIS?

Їх так багато, що пошук усіх у моїх папках зайняв би занадто довго.


1
Я думаю, вам доведеться клацнути правою кнопкою миші та вибрати зберегти, щоб змінити ім'я файлу, якщо ви не хочете використовувати Windows Explorer.
landocalrissian

Пов’язання пов’язаного запиту на функції на QGIS.org: issues.qgis.org/isissue/15791 , щоб ми могли слідкувати за цим.
Андре Сільва

Відповіді:


9

Для цього вам потрібно буде i) видалити шар з ToC, ii) перейменувати файли, які відповідають Shapefile (тобто, shp, dbf, shx, prj тощо) та iii) завантажити перейменований шар у QGIS. Але нам потрібно автоматизувати такий робочий процес!

Якщо ви подивитеся на кроки, вони схожі на те, що робить плагін Table Manager. Отже, я адаптував такий код плагіна для перейменування Shapefiles, ви можете завантажити його звідси .

Ви можете використовувати його таким чином (спочатку спробуйте з невеликим резервним проектом, щоб побачити, як він працює):

  1. Перейменуйте ваші шари QGIS в ToC, ці нові імена будуть замінені відповідними іменами Shapefiles.
  2. Збережіть проект QGIS у тій же папці, що і сценарій rename_shapefiles.py
  3. Відкрийте консоль QGIS Python.
  4. Скопіюйте туди наступний фрагмент коду:

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

Це воно! Я перевірив це на GNU / Linux, QGIS 2.6. Порядок шарів у ToC змінюється після запуску коду.

Повідомте мене, якщо у вас є якісь проблеми.

Якщо вам потрібно зберегти порядок шару, задайте нове запитання, можливо, я можу це переглянути :).


4

Для користувачів R я написав швидку функцію R, що партія перейменовує .shp-файл та всі пов’язані файли. Це досить голі кістки, і перевірки помилок немає тощо, тому, якщо це не вдасться, вам доведеться провести невелике розслідування.

# 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

Якщо у вас є послідовна схема їх перейменування, ви можете зробити це в сценарії python. Одним із методів у python є os.rename (src, dest) . Конкретні деталі залежатимуть від алгоритму перейменування файлів. Це для перейменування власне файлів, а не лише назв шарів у TOC.

Інакше я не знаю альтернативи перейменуванню їх вручну, оскільки вам доведеться їх перекладати. Теоретично ви могли б скласти словник перекладів у python, але це, ймовірно, зайняло б стільки часу, щоб кодувати, як це зробити вручну. Також пам’ятайте, що перейменування файлів самі порушують джерела даних. Перейменування лише назв шарів у TOC повинно бути нормальним, але я не такий знайомий з QGIS, як Arc.


1

Я пропоную використовувати цю програму для перейменування файлів http://www.bulkrenameutility.co.uk/Main_Intro.php . Він відкритий і простий у використанні. Після того, як ви перейменували свій файл, ви повинні відкрити разом із текстовим редактором свій файл проекту qgis (спробуйте блокнот ++) та зробити те саме, що знайти та замінити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.