Ciao Luca, <br><br><div class="gmail_quote">2011/2/24 Luca Mandolesi <span dir="ltr">&lt;<a href="mailto:mandoluca@gmail.com">mandoluca@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div><span style="font-family: arial,sans-serif; border-collapse: collapse;"><div>qui dovrebbero comparire nella lista legata alla geometria bordata in rosso, solo tre quote, invece le ho richiamate tutte....ovviamente l&#39;errore è in:</div>


<div><br></div><div>lista_quote.append(featPoint.id())</div></span></div></blockquote><div>Non è esattamente quella istruzione il problema. Tuttavia fino a questo momento non avevo <br>capito dalle tue frasi se nella lista c&#39;erano tutti i punti o tutti quelli dentro il bbox anche se <br>

effettivamente stavano fuori.<br><br>Ma a vedere dal codice sotto, il problema è il primo:<br>il dizionario da segno che tutti i poligono contengono tutti i punti... :| <br>Impressionante! :)<br><br>Ecco la soluzione:<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><span style="font-family: arial,sans-serif; border-collapse: collapse;"></span></div>

<div><font color="#888888"><font color="#000000"><font face="arial, sans-serif"><span style="border-collapse: collapse;"><div>import sys</div>
<div>sys.path.insert(0, &#39;/Applications/QGIS.app/Contents/Resources/python/&#39;)</div><div>from qgis.core import *</div><div>from qgis.gui import *</div><div><br></div><div># supply path to where is your qgis installed</div>


<div>QgsApplication.setPrefixPath(&quot;/Applications/QGIS.app/Contents/MacOS/&quot;, True)</div><div><br></div><div># load providers</div><div>QgsApplication.initQgis()</div><div><br></div><div>uri = QgsDataSourceURI()</div>


<div># set host name, port, database name, username and password</div><div>uri.setConnection(&quot;localhost&quot;, &quot;5432&quot;, &quot;pyarchinit&quot;, &quot;postgres&quot;, &quot;mypass&quot;)</div><div># set database schema, table name, geometry column and optionaly subset (WHERE clause)</div>


<div>uri.setDataSource(&quot;public&quot;, &quot;pyunitastratigrafiche&quot;, &quot;the_geom&quot;, &quot;scavo_s = &#39;Palazzo Ghetti, Rimini&#39; AND area_s = 1&quot;)</div><div>vlPolygons = QgsVectorLayer(uri.uri(), &quot;US&quot;, &quot;postgres&quot;)</div>


<div>uri.setDataSource(&quot;public&quot;, &quot;pyarchinit_quote&quot;, &quot;the_geom&quot;, &quot;sito_q = &#39;Palazzo Ghetti, Rimini&#39; AND area_q = 1&quot;)</div><div>vlPoints = QgsVectorLayer(uri.uri(), &quot;Quote&quot;, &quot;postgres&quot;)</div>


<div><br></div><div>if vlPolygons.isValid():</div><div>  print &quot;Layer polygons loaded!&quot;</div><div><br></div><div>if vlPoints.isValid():</div><div>  print &quot;Layer points loaded!&quot;</div><div class="im"><div>

<br></div><div>
<br></div><div>vlPolygons.select( [] ) # recuperi tutte le geometrie senza attributi</div><div>featPoly = QgsFeature() # crei una feature vuota per il poligono</div><div><br></div></div><div>dizionario_strati = {}</div></span></font></font></font></div>

</blockquote><div>fino qui è ok.<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><font color="#888888"><font color="#000000"><font face="arial, sans-serif"><span style="border-collapse: collapse;"><div>

lista_quote = []</div></span></font></font></font></div></blockquote><div>è questa linea che crea  tutti i problemi:<br>tu crei una lista fuori dai 2 cicli, quindi la lista sarà sempre la stessa ad ogni ciclo e quindi <br>

aggiungerai sempre la medesima lista a tutte le voci del dizionario. La lista alla fine conterrà <br>tutti i punti (o quasi tutti, dipende dall&#39;unione dei bbox dei poligoni), quindi ogni voce del <br>dizionario avrà sempre come valore una lista (la medesima) con tutti i punti.<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><font color="#888888"><font color="#000000"><font face="arial, sans-serif"><span style="border-collapse: collapse;">
<div></div><div>while vlPolygons.nextFeature( featPoly ): # cicli sulle feature recuperate, featPoly conterra la feature poligonale attuale</div><div class="im"><div><span style="white-space: pre-wrap;">        </span>vlPoints.select( [], featPoly.geometry().boundingBox() ) # recupera i punti nel bbox del poligono</div>


<div><span style="white-space: pre-wrap;">        </span>featPoint = QgsFeature() # crei una feature vuota per il punto</div></div></span></font></font></font></div></blockquote><div>Inserisci invece la riga di creazione della lista qui e tutto si dovrebbe risolvere ;)<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><font color="#888888"><font color="#000000"><font face="arial, sans-serif"><span style="border-collapse: collapse;"><div>

<span style="white-space: pre-wrap;">        </span>while vlPoints.nextFeature( featPoint ): # cicli sulle feature recuperate, featPoint conterra la feature puntale attuale</div><div class="im">
<div><span style="white-space: pre-wrap;">                </span>if featPoly.geometry().contains( featPoint.geometry() ): # adesso con la contains() verifichi che effettivamente sia contenuto nel poligono</div></div><div><span style="white-space: pre-wrap;">                        </span>lista_quote.append(featPoint.id())</div>


<div><span style="white-space: pre-wrap;">        </span>dizionario_strati[featPoly.id()] = lista_quote</div><div><br></div><div>print diz</div><div><br></div><div>print &quot;Numero di poligoni controllati: &quot;, len(diz)</div>


</span></font>
</font></font></div>
</blockquote></div><br>Saluti.<br clear="all"><br>-- <br>Giuseppe Sucameli<br><br>