Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 mar. 17 avril 2018 11:29

felixd
Membre
Date d'inscription: 20 juin 2017
Messages: 23

QGIS: selection des sur-bassins versant

Bonjour,

Je dispose de deux tables
- une table graphique de bassins versants
- une table relationnelle. Table de relation entre les bassins amont "direct"

BAS_AV  |   BAS_AM
B0          | B1
B0          | B2
B1          | B3
B3          | B5
B3          | B6
B6          | B7
B6          | B8


J'aimerais pourvoir, en cliquant su un bassin, faire apparaitre l'ensemble des sur-bassin versant concernés, en créer une géométrie et faire des calculs hydrauliques.

Dans l'exemple ci-dessus, en cliquant sur le bassin B0 , il faudrait sélectionner : B0, B1, B2, B3, B5, B6, B7, B8
en cliquant sur B3 => B3, B5, B6, B7, B8
ou bien encore sur B6 => B6, B7, B8

Je pensais a un modeleur graphique mais je me casse les dents ne serais ce qu'avec la selection
Reste une action python, mais alors là c'est pire

D'où mon appel à l'aide

Merci à vous

Hors ligne

 

#2 mer. 16 mai 2018 16:38

felixd
Membre
Date d'inscription: 20 juin 2017
Messages: 23

Re: QGIS: selection des sur-bassins versant

Bon mon sujet ne passionne pas les foules.

Un début de piste en python sachant que je ne connais pas grand chose en python.

En partant d'une couche virtuel en relation 1-n puis une code python

Code:

mapLayer=QgsMapLayerRegistry.instance().mapLayers()
# je recupere la couche active
aLayer = qgis.utils.iface.activeLayer()
print  aLayer.name()
iter = aLayer.getFeatures()
print iter
# je récupere la selection active
selection = aLayer.selectedFeatures()
print len(selection)
for feature in selection:
# je recepere chaque bassin amont
    print feature[u'bassin_AV'], feature[u'bassin_AM']
    feature2 = feature[u'bassin_AM']
    exp2 = (u' "bassin_AV" = ')
    query2 =exp2 + feature2
    print 'ma requete' + query2
#je passe mon bassin amont en requete pour le selectionner
    sel2 = aLayer.getFeatures(QgsFeatureRequest().setFilterExpression(query2))
    for test in sel2:
        v=test.setSelectedFeatures([sel2.id()])
        print 'mon bassin amont'+ v

Mais le bassin amont ne se sélectionne pas

Dernière modification par felixd (jeu. 17 mai 2018 08:25)

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |