Mengubah nama tampilan layer dengan PyQGIS?

8

Saya melakukan pemrosesan batch beberapa layer vektor dan sekarang nama tampilan untuk setiap file "dibubarkan" ketika mengakses layer.name()fungsi di QGIS. Saya membaca jawaban ini dari underdark ke Mengubah nama layer vektor output dari skrip pemrosesan di QGIS? , bahwa saya dapat mengatur nama ke nama file tetapi sayangnya terlambat.

Saya bisa mendapatkan semua file dalam proyek saya untuk berada dalam daftar

layers = iface.mapCanvas().layers()

dan semua nama dengan ini:

names = [layer.name() for layer in QgsMapLayerRegistry.instance().mapLayers().values()]

Dengan bantuan jawaban ini untuk Mendapatkan jalur proyek, atau file lapisan di PyQGIS? , Saya bisa mendapatkan nama file yang saya kerjakan:

import os 
real_names = []
for li in layers:
   (myDirectory,nameFile) = os.path.split(li.dataProvider().dataSourceUri())
   real_names.append(nameFile.split("|")[0]

Membaca dokumen API untuk QgsVectorLayer tidak membantu saya. Yang saya inginkan adalah mengubah nama file untuk menampilkan nama file sebagai nama tampilan. Bagaimana cara mengarsipkan itu dengan konsol python?

Tertawa
sumber

Jawaban:

7

Anda dapat menggunakan sesuatu seperti berikut ini untuk mengubah nama semua lapisan menjadi nama file masing-masing (tidak termasuk ekstensi):

import os

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    basename = os.path.splitext(os.path.basename(layer.source()))[0]
    layer.setLayerName(basename)
Yusuf
sumber