การเปลี่ยนชื่อ Shapefiles ใน QGIS?


12

ฉันมีรายการเลเยอร์จำนวนมากในโครงการที่ตั้งชื่อเป็นภาษาต่างประเทศ ฉันต้องการแปลและเพิ่มชื่อภาษาอังกฤษเป็นชื่อ

เมื่อฉันคลิกขวาที่เลเยอร์และเลือกProperties -> Generalและเปลี่ยนชื่อเลเยอร์มันจะเห็นภาพในแผนผังชั้น แต่ไฟล์ต้นฉบับยังคงเหมือนเดิม

มีวิธีการเปลี่ยนชื่อไฟล์ต้นฉบับจาก QGIS หรือไม่?

มีมากมายที่การค้นหาทั้งหมดในโฟลเดอร์ของฉันอาจใช้เวลานานเกินไป


1
ฉันคิดว่าคุณจะต้องคลิกขวาแล้วเลือกบันทึกเป็นการเปลี่ยนชื่อไฟล์หากคุณไม่ต้องการใช้ windows explorer
landocalrissian

การเชื่อมโยงคำขอเกี่ยวกับฟีเจอร์ที่เกี่ยวข้องใน QGIS.org: problems.qgis.org/issues/15791ดังนั้นเราจึงสามารถตรวจสอบได้
Andre Silva

คำตอบ:


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

หากคุณมีสคีมาที่สอดคล้องกันสำหรับการเปลี่ยนชื่อคุณสามารถทำได้ในสคริปต์ไพ ธ อน วิธีการหนึ่งในหลามเป็นos.rename (src, ปลายทาง) รายละเอียดเฉพาะจะขึ้นอยู่กับอัลกอริทึมสำหรับการเปลี่ยนชื่อไฟล์ นี่คือการเปลี่ยนชื่อไฟล์จริงไม่ใช่แค่ชื่อเลเยอร์ใน TOC

มิฉะนั้นฉันไม่ทราบทางเลือกในการเปลี่ยนชื่อด้วยตนเองเนื่องจากคุณต้องแปล ในทางทฤษฎีแล้วคุณสามารถสร้างพจนานุกรมการแปลในไพ ธ อนได้ แต่นั่นอาจใช้เวลานานในการเขียนโค้ดด้วยตนเอง นอกจากนี้โปรดระวังว่าการเปลี่ยนชื่อไฟล์เองจะทำให้แหล่งข้อมูลเสียหาย การเปลี่ยนชื่อเลเยอร์ใน TOC นั้นน่าจะดี แต่ฉันไม่คุ้นเคยกับ QGIS เหมือนกับ Arc


1

ฉันขอแนะนำให้ใช้โปรแกรมนี้ในการเปลี่ยนชื่อไฟล์ของคุณhttp://www.bulkrenameutility.co.uk/Main_Intro.php มันเปิดและใช้งานง่าย หลังจากที่คุณเปลี่ยนชื่อไฟล์แล้วคุณต้องเปิดด้วยโปรแกรมแก้ไขข้อความไฟล์โครงการ qgis ของคุณ (ลอง notepad ++) และทำการค้นหาและแทนที่เดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.