[Gfoss] Come selezionare i punti nella bbox di un poligono con le API 2.0 di QGis

Luca Mandolesi mandoluca a gmail.com
Mar 2 Set 2014 23:09:02 CEST


Salve a tutti,
dopo 3 giorni di moccoli mi arrendo.
Avevo un vecchio codice che funzionava, aiutato da Sucameli che ancora
ringrazio, ma ora con le nuove API non funzia più.

Problema tanti punti di quota e tanti poligoni a cui le quote sono relative.

Riesco a rintracciare quali quote stanno dentro a quale poligono, ma il
tempo preso dallo script è lungo nel caso su ogni geometria dovessi iterare
con il contains per capire se un punto è al suo interno. Ergo, nel vecchio
script prima si selezionavano i punti dentro la BBOX del poligono e poi si
verificava se effettivamente il punto era al suo interno o meno...

Alla riga 29 del codice qui postato mi perdo: http://codepad.org/dTwrRtB6

Prima si aveva una cosa simile ma ora non funziona più:

while vlPolygons.nextFeature( featPoly ): # cicli sulle feature recuperate,
featPoly conterra la feature poligonale attuale
vlPoints.select( [], featPoly.geometry().boundingBox() ) # recupera i punti
nel bbox del poligono
featPoint = QgsFeature() # crei una feature vuota per il punto

while vlPoints.nextFeature( featPoint ): # cicli sulle feature recuperate,
featPoint conterra la feature puntale attuale
if featPoly.geometry().contains( featPoint.geometry() ): # adesso con la
contains() verifichi che effettivamente sia contenuto nel poligono
lista_quote.append(featPoint.id())
dizionario_id_contains[featPoly.id()] = lista_quote
lista_quote = []


Domanda: come capire la sintassi per fare un select di una serie di punti
dentro a una feature poligonale in base al suo bbox?

Grazie per una eventuale mano.
Luca
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20140902/911aff89/attachment-0001.html>


Maggiori informazioni sulla lista Gfoss