Suite

Vérification des couches avec une visibilité basée sur l'échelle pour la visibilité dans QGIS

Vérification des couches avec une visibilité basée sur l'échelle pour la visibilité dans QGIS


J'écris une méthode Python à laquelle je veux que l'événement de clic de souris se connecte. La méthode sélectionne des objets à partir de calques qui satisfont à certaines conditions. Je souhaite faire une sélection parmi n'importe quelle couche visible contenant des entités dans l'étendue actuelle de la carte.

Pour évaluer quelle couche est visible, je vérifie la propriété :

QgsProject.instance().layerTreeRoot().findLayer(layer.id()).isVisible()

Certaines couches ont une visibilité dépendante de l'échelle. Je ne veux pas sélectionner des objets à partir de calques, qui ne sont pas visibles en raison de l'échelle actuelle de la carte.

est visible() de la ligne de code ci-dessus renvoie True, même si la couche n'est pas visible en raison de l'échelle actuelle, mais est vérifiée dans l'arborescence de la légende.

Ma question : existe-t-il un autre moyen de vérifier si une couche avec une visibilité basée sur l'échelle est en dehors de l'intervalle d'échelle visible, puis de comparer l'échelle de la carte avec Echelle minimum() et échellemaximale() de chaque couche ?


Vous pouvez utiliser leiface.mapCanvas().layers()méthode, qui ne vous donne que les couches vérifiées dans la table des matières, c'est-à-dire qu'il n'est pas nécessaire de parcourir toutes les couches de la carte.

Vous devez ensuite parcourir les couches vérifiées pour évaluer si leur visibilité basée sur l'échelle contient l'échelle actuelle de la carte, comme ceci :

canvas = iface.mapCanvas() pour le calque dans canvas.layers() : if layer.hasScaleBasedVisibility() : if layer.maximumScale() > canvas.scale() et layer.minimumScale() < canvas.scale() : print " Layer",layer.name(),"est visible!" else: print "Layer",layer.name(),"est visible!"

Je ne connais pas d'autre méthode PyQGIS pour le faire.


Voir la vidéo: télécharger les fichiers de formes Shapefiles de quel zone de monde