Для QGIS 3 QgsMapLayerRegistryфункциональность была перенесена в QgsProject.
Итак, для перебора слоев карты вы должны использовать эту структуру:
layers = QgsProject.instance().mapLayers()
.mapLayers()возвращает словарь, структурированный как {layer_x_id: layer_x, layer_y_id: layer_y, ....}. Затем вы можете перебирать слои, например:
for layer_id, layer in layers.items():
print(layer.name())
Поскольку .mapLayers()возвращает словарь ( dict), вы также можете использовать .values()метод словаря, который возвращает только тот, listкоторый содержит слои в этом случае. Затем вы можете перебирать слои, например:
layers = QgsProject.instance().mapLayers().values()
for layer in layers:
print(layer.name())
Если вы предпочитаете, вы можете выполнить итерацию следующим образом:
layers = QgsProject.instance().mapLayers() # dictionary
for layer in layers.values():
print(layer.name())