6 votos

Cómo deshabilitar la adición de nombre de base de datos nombre de la capa cuando la adición de una capa vectorial en QGIS?

Estoy utilizando la versión de QGIS 2.18.14.

Cuando agrego una capa vectorial de una geodatabase de archivos, elegir el OpenFileGdb controlador y, a continuación, elegir las capas que me gustaría tener en el mapa.

enter image description here

Sin embargo, las capas se añaden con el nombre con el formato <%DB_NAME% %LAYER_NAME%>. Esto hace que sea imposible el uso de los roles dbmanager editor de SQL directamente para las capas añadidas como tengo que cambiar el nombre de las capas primero. Esto es debido a que la tabla de base de datos no puede contener un espacio en blanco. Por lo tanto, necesito cambiar el nombre de "NYC streets" a "streets" o "NYC_streets".

Hay alguna configuración en QGIS que puede dejar que me deshabilitar el prefijo de las capas puedo añadir con el nombre de base de datos de donde vienen?

enter image description here

4voto

Mat Puntos 196

Sólo probado esto en un archivo de ejemplo de la geodatabase de ESRI - veo lo mismo (excepto en el caso de que el prefijo es "RH_SampleData "). Estoy usando 2.18.13, GDAL 2.1.3

No sé de alguna manera de configurar la capa prefijo cuando se carga, pero no hay una solución.

En el Gestor de bases de datos SQL consultas (usando el Virtual Capas) puede hacer doble-oferta tabla / capa / nombres de columna para permitir espacios. Esto también es útil para cuando los nombres de campo de coincidencia de palabras reservadas de SQL

por ejemplo,

select * from "RH_SampleData AADT"

El espacio no detener el auto-completado de trabajo correctamente, sin embargo. Así que esta es, probablemente, de no más rápido o más fácil que el cambio de nombre de las capas :/

El OpenFileGDB conductor parece ser de sólo lectura, por lo que el cambio de nombre de las capas debe ser seguro, usted no será capaz de editar de todos modos.

4voto

Sushant23 Puntos 329

Puede utilizar la Barra de Comandos del Plugin que le permite cambiar el nombre de todas las capas a la vez. El uso de QGIS Barra de Comandos , se puede escribir:

rename-layers NYC./

a continuación, presione entrar, y se va a quitar el nombre de base de todas las capas a la vez. Nota: el punto (.) después de NYC, porque se utiliza la expresión regular y el punto significa que quitar todo, incluyendo el espacio.

En el ejemplo siguiente, tengo un Archivo GDB "RH_SampleData.gdb" y al cargar los datos en QGIS RH_SampleData se añadió antes de cada capa. He utilizado QGIS Barra de Comandos y cambiar el nombre de capas de comando para quitar RH_SampleData como se puede ver en el siguiente gif:

enter image description here

2voto

bretddog Puntos 210

Si usted se siente cómodo con un poco de pyqgis magia te puedo recomendar una solución de @Joseph me mostró una vez. Usted puede encontrar su respuesta aquí.

He probado con el ejemplo de DB de ArcGIS que fue ligado por @Steven Kay y el resultado fue que los nombres de los archivos sin espacios en blanco:

import os

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

A esta medida, se podría añadir aún más la seguridad mediante el uso de algo como esto:

basename = basename.replace(" ", "_")

antes de utilizar el setLayerName función.


editar:

como señaló correctamente de OP que el enfoque anterior sólo se obtiene el nombre de la Base de datos en sí, sin el nombre del archivo. He cambiado un poco el código para hacer frente a este. Mira como esta ahora:

import os

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    basename = layer.name()
    layer.setLayerName(basename.replace(" ", "_"))

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