Mengganti nama Shapefile di QGIS?


12

Saya memiliki daftar lapisan dalam proyek yang diberi nama dalam bahasa asing. Saya ingin menerjemahkan dan menambahkan judul bahasa Inggris ke nama.

Ketika saya klik kanan pada layer dan memilih Properties -> Generaldan mengubah nama layer, itu divisualisasikan di pohon lapisan tetapi file asli tetap sama.

Apakah ada cara untuk mengubah nama file asli dari QGIS?

Ada begitu banyak yang mencari mereka semua di folder saya akan terlalu lama.


1
Saya pikir Anda harus mengklik kanan dan memilih save as untuk mengubah nama file jika Anda tidak ingin menggunakan windows explorer.
landocalrissian

Menautkan permintaan fitur terkait di QGIS.org: issues.qgis.org/issues/15791 , sehingga kami dapat mengawasinya.
Andre Silva

Jawaban:


9

Untuk melakukannya, Anda harus i) menghapus layer dari ToC, ii) mengganti nama file yang sesuai dengan Shapefile (yaitu, shp, dbf, shx, prj, dan sejenisnya), dan iii) memuat layer yang diubah namanya menjadi QGIS. Tetapi kita perlu mengotomatisasi alur kerja seperti itu!

Jika Anda melihat langkah-langkahnya, mereka mirip dengan apa yang dilakukan oleh plugin Table Manager. Jadi, saya mengadaptasi kode plugin semacam itu untuk mengganti nama Shapefile, Anda dapat mengunduhnya dari sini .

Anda dapat menggunakannya dengan cara ini (pertama coba dengan proyek cadangan kecil untuk melihat cara kerjanya):

  1. Ganti nama layer QGIS Anda di ToC, nama-nama baru ini akan diambil untuk menimpa nama Shapefile yang sesuai.
  2. Simpan proyek QGIS Anda di folder yang sama dengan skrip rename_shapefiles.py
  3. Buka konsol QGIS Python.
  4. Salin cuplikan kode berikutnya di sana:

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

Itu dia! Saya sudah mengujinya di GNU / Linux, QGIS 2.6. Urutan lapisan dalam ToC bervariasi setelah menjalankan kode.

Beri tahu saya jika Anda memiliki masalah.

Jika Anda membutuhkan urutan lapisan untuk dilestarikan, ajukan pertanyaan baru, mungkin saya bisa melihatnya :).


4

Untuk pengguna R, saya menulis fungsi R cepat yang mengubah nama file .shp dan semua file yang terkait. Ini tulang yang sangat sederhana, dan tidak ada pengecekan error, dll, jadi jika gagal Anda perlu melakukan sedikit penyelidikan.

# 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

Jika Anda memiliki skema yang konsisten untuk mengganti nama mereka, Anda bisa melakukan ini dalam skrip python. Salah satu metode dalam python adalah os.rename (src, dest) . Rincian spesifik akan tergantung pada apa algoritma untuk mengubah nama file. Ini untuk mengganti nama file yang sebenarnya, bukan hanya nama layer di TOC.

Kalau tidak, saya tidak tahu alternatif untuk mengubah nama mereka secara manual, karena Anda harus menerjemahkannya. Anda bisa, secara teori, membuat kamus terjemahan dengan python, tapi itu mungkin akan memakan waktu selama kode untuk melakukannya secara manual. Perlu diketahui juga bahwa mengubah nama file sendiri akan merusak sumber data. Mengganti nama hanya nama layer di TOC harus ok, tapi saya tidak terbiasa dengan QGIS sebagai Arc.


1

Saya sarankan untuk menggunakan program ini untuk mengubah nama file Anda http://www.bulkrenameutility.co.uk/Main_Intro.php . Ini terbuka dan mudah digunakan. Setelah mengganti nama file Anda, Anda harus membuka, dengan editor teks, file proyek qgis Anda (coba notepad ++) dan buat pencarian & penggantian yang sama.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.