[QGIS-it-user] creare layer poligoni da layer punti

sarag saragau93 a gmail.com
Ven 20 Apr 2018 08:18:57 PDT


Buonasera a tutti,

devo creare un nuovo layer di poligoni, a partire da un layer ("scalati")
contenente dei punti.
In particolare, questi punti vanno a costituire i vertici di tot poligoni e
il poligono di appartenenza, per ogni punto nel layer "scalati", รจ
individuato dall'attributo "id_pol".
Riesco a creare il nuovo layer "poligoni_new": nella tabella degli attributi
compaiono le righe nel numero corretto (es. 2 poligoni finali, 2 righe), ma
non riesco in alcun modo a visualizzare le geometrie sulla mappa. 
Non capisco dove sia il problema. Qualcuno riesce ad aiutarmi o a suggerirmi
soluzioni alternative?

Grazie anticipatamente,
Sara

lista_id = []
lista_vertici = []
coordinate = []

idver=scalati.fieldNameIndex("id_pol")

for f in scalati.getFeatures():
    lista_vertici.append(f)
    idpol=f[idver]
    lista_id.append(idpol)

n=len(lista_id)
var=0

poligoni=QgsVectorLayer("Polygon?crs=epsg:32633", "poligoni_new", "memory")
poligoni.dataProvider().addAttributes([QgsField("id_pol", QVariant.Int)])
poligoni.updateFields()

poligoni.startEditing()
for i in range(0,n):
    if(i!=n-1):
        print "i", i
        if (lista_id[i]==lista_id[i+1]):
            coordinate=[(lista_vertici[var].geometry().asPoint().x() , 
                               
lista_vertici[var].geometry().asPoint().y())]
            var=var+1
        else:
            coordinate=[(lista_vertici[var].geometry().asPoint().x(), 
                               
lista_vertici[var].geometry().asPoint().y())]
            poly=QgsFeature()
            poly.setGeometry(QgsGeometry.fromPolygon(
                                                      [[QgsPoint(pair[0],
pair[1]) for pair in coordinate]]))
            poligoni.dataProvider().addFeatures([poly])
            poligoni.updateExtents()
            var=0
    else:
        coordinate=[(lista_vertici[var].geometry().asPoint().x(),
lista_vertici[var].geometry().asPoint().y())]
        poly=QgsFeature()
        poly.setGeometry(QgsGeometry.fromPolygon([[QgsPoint(pair[0],
pair[1]) for pair in coordinate]]))
        poligoni.dataProvider().addFeatures([poly])
        poligoni.updateExtents()

poligoni.commitChanges()

QgsMapLayerRegistry.instance().addMapLayer(poligoni)




--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html


Maggiori informazioni sulla lista QGIS-it-user