QGIS'deki Shapefiles yeniden adlandırılsın mı?


12

Bir projede yabancı bir dilde adlandırılan çok sayıda katman var. İngilizce başlığı çevirmek ve isme eklemek istiyorum.

Bir katmana sağ tıklayıp Properties -> Generalkatman adını seçip değiştirdiğimde, katman ağacında görselleştirilir, ancak orijinal dosya aynı kalır.

Orijinal dosyanın adını QGIS'den değiştirmenin bir yolu var mı?

Klasörlerimde hepsini aramanın çok uzun süreceği çok şey var.


1
Windows Gezgini'ni kullanmak istemiyorsanız, sağ tıklamanız ve dosyanın adını değiştirmek için kaydet'i seçmeniz gerektiğini düşünüyorum.
landocalrissian

QGIS.org'daki ilgili özellik isteğini birbirine bağlama: issue.qgis.org/issues/15791 , böylece bir göz atabiliriz.
Andre Silva

Yanıtlar:


9

Bunu yapmak için, i) katmanı ToC'den kaldırmanız, ii) Shapefile'a uygun dosyaları yeniden adlandırmanız (yani, shp, dbf, shx, prj ve benzeri) ve iii) yeniden adlandırılmış katmanı QGIS. Ancak böyle bir iş akışını otomatikleştirmemiz gerekiyor!

Adımlara bakarsanız, Tablo Yöneticisi eklentisinin yaptıklarına benzerler. Yani, bunu indirebilirsiniz, shapefiles adlandırmak için böyle eklentimizin kodunu adapte buradan .

Bu şekilde kullanabilirsiniz (önce nasıl çalıştığını görmek için küçük bir yedekleme projesiyle deneyin):

  1. ToC'deki QGIS katmanlarınızı yeniden adlandırın, bu yeni adlar karşılık gelen Shapefiles adlarınızın üzerine yazmak için alınır.
  2. QGIS projenizi rename_shapefiles.py komut dosyasıyla aynı klasöre kaydedin
  3. QGIS Python konsolunu açın.
  4. Sonraki kod snippet'ini buraya kopyalayın:

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

Bu kadar! GNU / Linux, QGIS 2.6 üzerinde test ettim. ToC'deki katmanların sırası, kodu çalıştırdıktan sonra değişir.

Herhangi bir sorunuz varsa bize bildirin.

Katman sırasının korunması gerekiyorsa, yeni bir soru sorun, belki de ona bakabilirim :).


4

R kullanıcıları için, toplu olarak .shp dosyasını ve ilişkili tüm dosyaları yeniden adlandıran hızlı bir R işlevi yazdım. Oldukça çıplak kemikler ve hata kontrolü vb. Yoktur, bu nedenle başarısız olursa küçük bir araştırma yapmanız gerekir.

# 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

Bunları yeniden adlandırmak için tutarlı bir şemanız varsa, bunu bir python komut dosyasında yapabilirsiniz. Python'da bir yöntem os.rename'dir (src, dest) . Belirli ayrıntılar, dosyaları yeniden adlandırma algoritmasının ne olduğuna bağlı olacaktır. Bu, yalnızca İçindekiler'deki katman adlarını değil, gerçek dosyaları yeniden adlandırmak içindir.

Aksi takdirde, onları çevirmeniz gerektiğinden, bunları manuel olarak yeniden adlandırmanın bir alternatifini bilmiyorum. Teorik olarak, python'da bir çeviri sözlüğü oluşturabilirsiniz, ancak bu muhtemelen manuel olarak yapmak kadar uzun zaman alacaktır. Ayrıca, dosyaları yeniden adlandırmanın veri kaynaklarını kıracağını unutmayın. Yalnızca İçindekiler'deki katman adlarının yeniden adlandırılması iyi olmalıdır, ancak QGIS'e Arc kadar aşina değilim.


1

Http://www.bulkrenameutility.co.uk/Main_Intro.php dosyalarınızı yeniden adlandırmak için bu programı kullanmanızı öneririm . Açık ve kullanımı kolaydır. Dosyanızı yeniden adlandırdıktan sonra, bir metin düzenleyicisiyle qgis proje dosyanızı açmanız (notepad ++ 'yı deneyin) ve aynı bul ve değiştir işlemini yapmanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.