Ciao Luca, <br><br><div class="gmail_quote">2011/2/23 Luca Mandolesi <span dir="ltr"><<a href="mailto:mandoluca@gmail.com">mandoluca@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<blockquote style="margin: 0pt 0pt 0pt 40px; border: medium none; padding: 0px;"><div>partendo da 2 layer, uno di poligoni e l'altro di punti, sapere per ogni poligono quanti punti ricadono in esso; che poi è quello che fa egregiamente il plugin di cui sopra.</div>
</blockquote><div><br></div><div>Fino a caricare le singole geometrie dal layer chiamandole da postgis ci arrivo, però, dando un occhio al cookbook di Qgis [1], vedo che la funzione contains() sta all'interno della classe QgsGeometry, e viene chiamata a partire da poligoni, punti o linee, create ad hoc.</div>
<div><br></div><div>Partendo dai miei due layer caricati mediante la classe QgsVectorLayer e relativi metodi, come faccio a passarli a QgsGeometry? Devo ricavare i nodi di ogni poligono, e passarli a QgsGeometri e poi usare contains(), o c'è un altra strada?</div>
</blockquote><div>se hai i due layer, siano vlPolygons and vlPoints<br><br>vlPolygons.select( [] ) # recuperi tutte le geometrie senza attributi<br>featPoly = QgsFeature() # crei una feature vuota per il poligono<br>while vlPolygons.nextFeature( featPoly ): # cicli sulle feature recuperate, featPoly conterrà la feature poligonale attuale<br>
vlPoints.select( [], featPoly.geometry().boundingBox() ) # recupera i punti nel bbox del poligono<br> featPoint = QgsFeature() # crei una feature vuota per il punto<br> while vlPoints.nextFeature( featPoint ): # cicli sulle feature recuperate, featPoint conterrà la feature puntale attuale<br>
if featPoly.geometry().contains( featPoint.geometry() ): # adesso con la contains() verifichi che effettivamente sia contenuto nel poligono<br> # TODO: qui lavori sul punto<br> # ad es. aggiungi il punto (l'id della feature puntale) alla lista o dizionario o quel che sia<br>
<br>Non l'ho provato, l'ho scritto on-the-fly, quindi potrebbe non essere perfettamente funzionante, <br>anche se sono abbastanza convinto di averlo scritto bene ;)<br><br>Oppure più semplicemente potresti recuperare tutti sia tutti i poligoni che tutti i punti, ma in <br>
quel caso saresti costretto a controllare tutti i punti per ogni poligono.... no buono.<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div></div><div>Qualcuno mi sa dare una mano? Vado direttamente alla lista degli sviluppatori di Qgis?</div></blockquote><div>E' uguale, forse però ti avrebbero risposto prima :)<br>Piuttosto, guardati il plugin ClosestFeatureFinder (repo Faunalia) che usa anche l'indice spaziale <br>
per recuperare la feature più vicina. Sicuramente ti darà qualche spunto in più.<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div></div><div>Ciao a tutti <br></div></blockquote><div>Saluti. <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><br></div><div>
Luca</div><div><br></div><div><br></div>
<div>[1] <a href="http://www.qgis.it/pyqgis-cookbook/geometry.html" target="_blank">http://www.qgis.it/pyqgis-cookbook/geometry.html</a></div>
<br>_______________________________________________<br>
Iscriviti all'associazione GFOSS.it: <a href="http://www.gfoss.it/drupal/iscrizione" target="_blank">http://www.gfoss.it/drupal/iscrizione</a><br>
<a href="mailto:Gfoss@lists.gfoss.it">Gfoss@lists.gfoss.it</a><br>
<a href="http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss" target="_blank">http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss</a><br>
Questa e' una lista di discussione pubblica aperta a tutti.<br>
Non inviate messaggi commerciali.<br>
I messaggi di questa lista non rispecchiano necessariamente<br>
le posizioni dell'Associazione GFOSS.it.<br>
502 iscritti all'11.2.2011<br></blockquote></div><br><br clear="all"><br>-- <br>Giuseppe Sucameli<br><br>