<div dir="ltr"><div><div><div><div><div>Ciao Marco.<br></div>per ora devo solo mandare fuori l'id delle 2 geometrie e la verifica della presenza di intersezione. Dal cookbook si arriva bene qua:<br></div><div><br>iter = vlayer.getFeatures()<br><br></div><div>Faccio un loop sulle singole geometrie e se becco il rapporto copre<br></div><div> ricavare da iter la feature id=x senza fare un loop.<br><br></div><div>Tipo con una chiamata:<br></div><div>#singFeat = vlayer.featureAtId(1)<br></div><div><br>Ma mi dice che vlayer non ha featureAtId come metodo<br></div><div>E' possibile?<br></div><div><br></div><div>Grazie<br></div><div>Luca<br></div><div><br></div><div>#############################<br></div><div>Dilungandosi nei particolari....<br><br></div>Il loop è eseguito su un tabella view che fonde la tabella spaziale con la tabella alfanumerica.<br><br></div>Quindi se nel campo rapporto c'è scritto 1 copre 2, devo chiamare le geometrie di 1 e 2 e fare un verifica l'intersezione.<br><br></div>Facendo un loop sulla view accedo al campo rapporti, quando si verifica la condizione "copre" (e fin qui ci sono come script python) allora nel loop dal provider devo ricavare la geometria ed è qui che non capisco come accedere dal provider al dato geometry.<br><br>uri = QgsDataSourceURI()<br>uri.setDatabase('C:\\Users\\Luca\\pyarchinit_DB_folder\\pyarchinit_db.sqlite')<br>uri.setDataSource('','pyarchinit_us_view', 'the_geom')<br><br>provider = vlayer.dataProvider()<br>iter = vlayer.getFeatures()<br><br>vlayer = QgsVectorLayer(uri.uri(), 'pyarchinit_us_view', 'spatialite')<br><br>for feature in iter:<br>        for sing_us in feature[31]: #il 31 è il campo che contiene il rapporto in formato lista ['copre', '2']<br></div><div>            #a questo punto avrei bisogno di dire<br></div><div>            a = feature</div><div>            b = iter.(cerca la feature id=2).feature() #<- qui c'è il punto in cui non riesco a recuperare la geometria della feature senza fare un iter<br>            return sing_us, a.geometry().intersects(b.geometry())<br><br></div><div><br></div>Alla fine otterrei un valore di rapporto copre e un false o true per l'intersezione che andrò a gestire in una tabella esterna dove visualizzo il rapporto alfanumerico richiesto e farò apparire le 2 geometrie in ballo. Sarà poi l'utente a decidere se è il disegno sbagliato oppure il dato alfanumerico inserito ad essere errato.<br><div><div><div><div><br><br><div><br><br></div></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">Il giorno 5 novembre 2016 17:11, Marco Grisolia <span dir="ltr"><<a href="mailto:marco.grisolia5@gmail.com" target="_blank">marco.grisolia5@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Ciao,<div>non ho capito se vuoi sapere soltanto quali siano le features che si intersecano tra loro (ad es. una lista) oppure se devi fare un ulteriore controllo su di esse una volta verificata l'intersezione (ad esempio: se la feature "a" interseca altre 3 features all'interno del layer, verificare che a["id_us"] sia pari a 3).</div><div>A prescindere dall'obiettivo, vuoi solo stampare qualcosa o modificare gli attributi?</div><div>Marco</div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">Il giorno 5 novembre 2016 09:53, Luca Mandolesi <span dir="ltr"><<a href="mailto:mandoluca@gmail.com" target="_blank">mandoluca@gmail.com</a>></span> ha scritto:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><div><div><div>Scusate, partito l'invio, il print di prima era un errore.<br><br></div>Io pensavo ad una cosa tipo [0], ma ricevo poi errore perchè a e b non accedono a geometry:<br><br>[0]<br>request = QgsFeatureRequest().setFilterE<wbr>xpression( '"id_us" = 2' )<br>a = vlayer.getFeatures( request )<br>request = QgsFeatureRequest().setFilterE<wbr>xpression( '"id_us" = 3' )<br>b = vlayer.getFeatures( request )<br><br>a.geometry().intersects(b.geom<wbr>etry()) <br><br></div>Grazie per i suggerimenti.<span class="m_5724225151799374235HOEnZb"><font color="#888888"><br></font></span></div><span class="m_5724225151799374235HOEnZb"><font color="#888888">Luca<br></font></span></div>
<br></div></div>______________________________<wbr>_________________<br>
QGIS-it-user mailing list<br>
<a href="mailto:QGIS-it-user@lists.osgeo.org" target="_blank">QGIS-it-user@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/qgis-it-user" rel="noreferrer" target="_blank">http://lists.osgeo.org/mailman<wbr>/listinfo/qgis-it-user</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div>