[Gfoss] Trovare extent del layer da console di python

Romina Di Paolo romi.dipaolo a gmail.com
Lun 9 Mar 2015 12:44:35 CET


Grazie Luigi per l'esempio fornito,
Quindi da quello che hai riportato nell'esempio da una parte ho la mia
lista di shp (extent = vl.extent) che deve essere confrontata con un extent
di controllo ovvero geomExtentDiControllo. Il mio problema è che non so
come accedere alle proprietà geometriche di quest'ultimo.

Ho provato così

folder = 'S:\\Dati_geografici_RP\\I.6_Particelle catastali\\Catastale'
lista_folder = (os.listdir(folder))

*geomExtentDiControllo = QgsGeometry.fromRect(QgsRectangle (xmin
=442882.70,ymin = 5015200.28,xmax =487902.38,ymax =5087429.92))*
for sub_folder in lista_folder:
    new_folder = folder+'\\'+sub_folder
    lista_shp =  (os.listdir(new_folder))

    for shp in lista_shp:
        if string.find(shp,'PARTICELLA.shp') >=0:
            vl = QgsVectorLayer(shp, "mioshape", "ogr")
            extent = vl.extent()
            geomExtent = QgsGeometry.fromRect(extent)
            isInside = geomExtent.within(geomExtentDiControllo)
            if isInside:
                QgsMapLayerRegistri.instance().addMapLayer(vl)

In grassetto la parte che mi è ancora lacunosa infatti il programma finisce
senza restituire nulla!

Sto usando come riferimento questo perchè sono ancora alle prime armi come
si può capire!
http://www.padido.eu/gfoss/qgis/workshop/workshop/esplorare/python_in_qgis_tutorial2.html




2015-03-06 11:10 GMT+01:00 *Luigi Pirelli* <luipir a gmail.com>:



































*senza scomodare gdal e rimanendo in pyqgis1) carichi il layer in memoria
(senza visualizzarlo)vl = QgsVectorLayer(shp, "mioshape", "ogr")2) prendi
l'extent del vettoreextent = vl.extent()come vedrai extent e' un
QgsRectangle =>3) ho bisogno di un QgsGeometry per usarne gli operatori
spazialigeomExtent = QgsGeometry.fromRect(extent)4) alla stessa cosa per
generarti la geometria dell'extent che vuoi contollaregeomExtentDiControllo
= QgsGeometry.fromRect(...un qgis rectangle... )ti consiglio di
vederti:  http://qgis.org/api/classQgsGeometry.html
<http://qgis.org/api/classQgsGeometry.html>per costruirti il QgsREctangle
di controllo5) usi l'operatore di QgsGeometry che meglio ti si
addiceisInside = geomExtent.within(geomExtentDiControllo)oppureisInside =
geomExtent.intersects(geomExtentDiControllo)if isInside:
QgsMapLayerRegistri.instance().addMapLayer(vl)ciao Luigi Pirelli*
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20150309/01591471/attachment.html>


Maggiori informazioni sulla lista Gfoss