7 votos

Renombrando la capa de GeoPackage para que sea igual que el archivo de GeoPackage

Tengo un archivo GeoPackage que ha sido renombrado, pero la capa dentro del GeoPackage mantiene el nombre original, ¿es posible poner automáticamente el mismo nombre en la capa que tiene el archivo?

Ejemplo:
Archivo GeoPackage original : cidadedesaopaulo.gpkg
Nombre de la capa : citiesaopaulo

Archivo GeoPackage renombrado : Cidades-SP_Brasil.gpkg
Nombre de la capa : citiesaopaulo
Nombre deseado de la capa : Cidades-SP_Brasil

Hay cientos de archivos para cambiar, lo que implicaría mucho trabajo hacerlo manualmente. ¿Cómo puedo automatizar este proceso en QGIS?

Soy consciente de cómo funciona GeoPackage, pero este patrón de nombre de archivo (la capa con el mismo nombre que el archivo GeoPackage) es un requisito de mi empleador. Mi pregunta es si hay una forma de cambiar el nombre de la capa para que tenga el mismo nombre que el GeoPackage. Ya sea utilizando un lenguaje de programación o el modelador gráfico de QGIS.

12voto

Anton8000 Puntos 165

Prueba esto. (Tendrás que ajustarlo para que coincida con tus datos/situación exacta)

import os 

geopackage_folder = r'/home/bera/Desktop'

for root, folder, files in os.walk(geopackage_folder):
    for file in files: #Para todos los archivos en geopackage_folder, incluyendo todos los subdirectorios
        if file.startswith('geopackage') and file.endswith('.gpkg'): #Si el archivo es un geopackage nombrado geopackage*.gpkg
            fullname = os.path.join(root, file) #Unir la ruta y el nombre del archivo juntos
            print(fullname)
            layer = QgsVectorLayer(fullname)
            for sublayer in layer.dataProvider().subLayers(): #Encontrar la(s) tabla(s) dentro
                tablename = sublayer.split('!!::!!')[1]
                print(tablename)
                newname = file.split('.')[0]
                processing.run("native:spatialiteexecutesql", {'DATABASE':fullname,
                    'SQL':'ALTER TABLE {0} RENAME TO {1}'.format(tablename, newname)}) #Renombrarlo

introducir descripción de la imagen aquí

introducir descripción de la imagen aquí

https://es.stackoverflow.com/questions/145617/como-abrir-una-ventana-modal-en-jquery-ui-dialog-de-forma-automatica

https://stackoverflow.com/questions/42999314/nueva-version-de-jquery-con-import-y-export

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X