Đổi tên Shapefiles trong QGIS?


12

Tôi có một danh sách lớn các lớp trong một dự án được đặt tên bằng tiếng nước ngoài. Tôi muốn dịch và thêm tiêu đề tiếng Anh vào tên.

Khi tôi nhấp chuột phải vào một lớp và chọn Properties -> Generalvà thay đổi tên lớp, nó được hiển thị trong cây lớp nhưng tệp gốc vẫn giữ nguyên.

Có cách nào để thay đổi tên của tệp gốc từ QGIS không?

Có rất nhiều việc tìm kiếm tất cả chúng trong các thư mục của tôi sẽ mất quá nhiều thời gian.


1
Tôi nghĩ bạn sẽ phải nhấp chuột phải và chọn lưu dưới dạng thay đổi tên của tệp nếu bạn không muốn sử dụng windows explorer.
Landocalrissian

Liên kết yêu cầu tính năng liên quan trong QGIS.org: problems.qgis.org/issues/15791 , vì vậy chúng tôi có thể theo dõi nó.
Andre Silva

Câu trả lời:


9

Để làm như vậy, bạn sẽ cần phải i) loại bỏ các lớp từ TOC, ii) đổi tên các tập tin phù hợp với Shapefile (ví dụ, shp, dbf, shx, prj, và những thứ tương tự), và iii) nạp lớp đổi tên để Quốc tế Nhưng chúng ta cần tự động hóa quy trình làm việc như vậy!

Nếu bạn xem các bước, chúng tương tự như những gì trình cắm Trình quản lý bảng thực hiện. Vì vậy, tôi đã điều chỉnh mã của plugin đó để đổi tên Shapefiles, bạn có thể tải xuống từ đây .

Bạn có thể sử dụng nó theo cách này (trước tiên hãy thử với một dự án sao lưu nhỏ để xem nó hoạt động như thế nào):

  1. Đổi tên các lớp QGIS của bạn trong ToC, những tên mới này sẽ được sử dụng để ghi đè lên tên Shapefiles tương ứng của bạn.
  2. Lưu dự án QGIS của bạn trong cùng thư mục với tập lệnh rename_shapefiles.py
  3. Mở bàn điều khiển Python của QGIS.
  4. Sao chép đoạn mã tiếp theo ở đó:

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

Đó là nó! Tôi đã thử nghiệm nó trên GNU / Linux, QGIS 2.6. Thứ tự của các lớp trong ToC thay đổi sau khi chạy mã.

Hãy cho tôi biết nếu bạn có bất kỳ vấn đề.

Nếu bạn cần thứ tự lớp được bảo tồn, hãy hỏi một câu hỏi mới, có lẽ tôi có thể nhìn vào nó :).


4

Đối với người dùng R, tôi đã viết một hàm R nhanh chóng đổi tên tệp .shp và tất cả các tệp được liên kết. Đó là xương trần đẹp và không có kiểm tra lỗi, v.v., vì vậy nếu thất bại, bạn cần phải điều tra một chút.

# 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

Nếu bạn có một lược đồ nhất quán để đổi tên chúng, bạn có thể thực hiện điều này trong một tập lệnh python. Một phương thức trong python là os.rename (src, Dest) . Chi tiết cụ thể sẽ phụ thuộc vào thuật toán đổi tên các tệp là gì. Điều này là để đổi tên các tập tin thực tế, không chỉ tên lớp trong TOC.

Mặt khác, tôi không biết một cách khác để đổi tên chúng theo cách thủ công, vì bạn phải dịch chúng. Về lý thuyết, bạn có thể xây dựng một từ điển các bản dịch bằng python, nhưng điều đó có thể sẽ mất nhiều thời gian để viết mã như làm thủ công. Ngoài ra, hãy lưu ý rằng việc đổi tên các tệp sẽ tự phá vỡ các nguồn dữ liệu. Đổi tên chỉ các tên lớp trong TOC sẽ ổn, nhưng tôi không quen thuộc với QGIS như Arc.


1

Tôi đề nghị sử dụng chương trình này để đổi tên các tệp của bạn http://www.bulkrenameutility.co.uk/Main_Intro.php . Nó mở và dễ sử dụng. Sau khi bạn đã đổi tên tệp của mình, bạn phải mở, với trình soạn thảo văn bản, tệp dự án qgis của bạn (thử notepad ++) và thực hiện tìm & thay thế tương tự.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.