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

Luca Mandolesi mandoluca a gmail.com
Gio 4 Set 2014 18:36:41 CEST


Ciao Giuliano.

Ti ripropongo il frammento di codice che 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 = []


Al posto di while vlPolygons.nextFeature( featPoly ) cosa dovrei usare? Ma
soprattutto non riesco a beccare un changelog che mi aiuti.


Provo a spiegare il problema...ma a dire il vero non serve saperlo! E'
tanto per edurvi (si dice?)...ma se ci accettano al GFOSS DAY sarò in prima
fila a spiegare tali problemi.

Il mio problema fa parte di un problema più ampio relativo all'archeologia.
Provo a scrivertelo, quello che ti sfugge chiedi pure.
In uno scavo oltre alla terza dimensione abbiamo pure la quarta da gestire.

Quindi in una data area si possono avere sovrapposizioni di US (Unità
stratigrafiche, ovvero singole azioni umane: muri, pavimenti, buche, ecc.)
che aumentano o diminuiscono al passare del tempo. Se guardi questo video
forse ti è più chiaro: http://www.youtube.com/watch?v=0wkB2FuXjxs

Dal minuto 0:15 grazie al "Manopolone del tempo", al variare di quel valore
numerico che rappresenta la cronologia relativa tra diversi livelli,
appaiono o scompaiono le US in relazione alla loro presenza o meno in una
data fase del sito.

Tuttavia vedrai che ci sono solo strati e non quote. Bene..ora ipotizziamo
di voler fare una pianta con le quote. Se nel sito ho 100 US e circa 500
quote, è scomodo verificare se ogni quota è dentro ad un poligono. SI fa
prima a fare un subset su BBox selezionando solo quelle nel BBOX, poi fare
un test col contains...a quel punto il sistema andrà a pescare nel database
se la data quota contenuta dentro al poligono è relativa al poligono stesso
ad un poligono che la copre..A quel punto verrà eliminata dalla pianta di
fase...

Pensa che ad oggi la maggior parte degli archeologi fa questa cosa a
mano...con schede e carta da lucido...


Intanto ciao e grazie e scusate la prolissità archeologica.
Luca
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20140904/35eaefc7/attachment.html>


Maggiori informazioni sulla lista Gfoss