32 votos

¿Se ha eliminado QgsMapLayerRegistry en QGIS 3?

Es QgsMapLayerRegistry ¿estará disponible en PyQGIS con QGIS 3?

Cuando lo escribí en la consola de QGIS python (2.99), python parece reconocerlo porque autocompleta qgis.core.QgsMapLayerRegistry , pero luego da un error de que no está ahí:

Traceback (most recent call last):
  File "/usr/lib/python3.5/code.py", line 91, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
AttributeError: module 'qgis.core' has no attribute 'QgsMapLayerRegistry'

He probado esto con dos versiones de QGIS 2.99 (una en 01/07 y otra en 06/17). Ambas versiones dan el mismo error. import tampoco funciona:

>>>from qgis.core import QgsMapLayerRegistry
Traceback (most recent call last):
  File "/usr/lib/python3.5/code.py", line 91, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
ImportError: cannot import name 'QgsMapLayerRegistry'

Es QgsMapLayerRegistry ¿se ha eliminado en QGIS3?

43voto

Michael Puntos 11

Sí, se ha eliminado, pero existen alternativas.

Los cambios de la API 3.0 se enumeran aquí:

https://qgis.org/api/api_break.html

QgsMapLayerRegistry : Su funcionalidad se ha trasladado a QgsProject .

La razón principal es que QgsMapLayerRegistry es/era un singleton y, por tanto, sólo puede existir un único registro. Con esta restricción eliminada, se eliminan los principales obstáculos para implementar cosas nuevas como tener múltiples proyectos abiertos uno al lado del otro.

21voto

Abhijit Gujar Puntos 403

Usted puede hacer lo mismo fácilmente sólo hacer:

 QgsProject.instance().addMapLayer(your_Qgs_whaterver_Layer)

Para más detalles, consulte lo siguiente:

https://qgis.org/api/classQgsProject.html#a322fce15a4dd7505398ef9d24295f0c1

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