#1 Tue 17 April 2018 11:29
- felixd
- Participant occasionnel
- Date d'inscription: 20 Jun 2017
- Messages: 46
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 Wed 16 May 2018 16:38
- felixd
- Participant occasionnel
- Date d'inscription: 20 Jun 2017
- Messages: 46
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 (Thu 17 May 2018 08:25)
Hors ligne