cad4qgis e poligoni

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

cad4qgis e poligoni

giuliano su Tiscali
ciao,

inizio con la prima di una serie di domande sui poligoni :-)

quando ho bisogno di sapere il vertice iniziale di un poligono, penso
di dover usare il comando geom.vertexAT(0) che mi fornisce le
coordinate;

però in caso di foro (1) i vertici di questo hanno id's che
partono dal n(umero)V(ertici)e(sterni) in avanti; per sapere quindi il
vertice iniziale del primo foro penso di dover usare:
        plgns = geom.asPolygon()
        nVe0 = len(plgns[0])
e quindi il vertice inziale del (primo) foro è geom.vertexAT(nVe0);

se volessi conoscere l'inizio del secondo foro dovrei eseguire:
        nVe1 = len(plgns[1])
        startPoint2Foro = geom.vertexAt(nVe0+nVe1);

esiste un metodo più semplice e diretto?

grazie, ciao,
giuliano

(1) domanda nella domanda: che differenza c'è fra ring e island?
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
605 iscritti al 10.7.2012
Reply | Threaded
Open this post in threaded view
|

Re: cad4qgis e poligoni

mando
2012/8/24 giuliano su Tiscali <[hidden email]>:

> ciao,
>
> inizio con la prima di una serie di domande sui poligoni :-)
>
> quando ho bisogno di sapere il vertice iniziale di un poligono, penso
> di dover usare il comando geom.vertexAT(0) che mi fornisce le
> coordinate;
>
> però in caso di foro (1) i vertici di questo hanno id's che
> partono dal n(umero)V(ertici)e(sterni) in avanti; per sapere quindi il
> vertice iniziale del primo foro penso di dover usare:
>         plgns = geom.asPolygon()

Che tipo di variabile ritorna questo metodo?
Tupla o Lista?
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
605 iscritti al 10.7.2012
Reply | Threaded
Open this post in threaded view
|

Re: cad4qgis e poligoni

giuliano su Tiscali
On Sat, 25 Aug 2012 18:58:02 +0200
Luca Mandolesi <[hidden email]> wrote:

> >   geom = feat.geometry()
> >   plgns = geom.asPolygon()
> >   start = 0
> >   for p in plgns:
> >     print "vertice iniziale", start
> >     start = = start + len(p)
>
> Non capisco l'ultima riga...

butta via tutto, dovrebbe essere così (l'ho provato su poligono con 2
fori):
        geom = feat.geometry()
        plines = geom.asPolygon()
        # cerca il vertice
        start = 0
        for l in plines:
                end = start + len(l) - 1
                if vId == start or vId == end:
                        return True
                start = start + len(l)
        return False

(probabilmente la spiegazione non serve, però) la numerazione dei
vertici è progressiva, quindi il primo vertice di una lista prende un
identificativo uguale alla somma di tutti gli elementi delle liste
precedenti, l'ultimo prende un identificativo pari al primo più tutti
gli elementi della lista meno 1 (siamo in base 0);

 
> Inoltre cosa significa "trovare i vertici iniziali". Vuoi il primo
> vertice sia del perimetro che del buco?

sì, ma non basta il vertice iniziale, serve anche il finale; ho scoperto
(scusa l'enfasi ma per me è una scoperta :-) che ad es. modificando
manualmente (non con la funzione analogica di qgis) il primo (ultimo)
vertice, l'ultimo (primo) rimane dov'è ed il sistema, per non
corrompere la topologia (sarebbe un poligono aperto), aggiunge un nuovo
vertice (provare per credere);

ovviamente anche questa topologia non è corretta (non saprei come
segnalare la cosa a chi sa), pertanto, per mantenere la topologia
corretta devo modificare entrambi i nodi; ecco l'importanza di sapere
se un vertice è inizio/fine;

questo peraltro vale anche per le mie funzioni di fillet, chamfer e
offset;

spero di essere stato chiaro, in caso contrario sono ben contento di
approfondire :-)

ciao,
giuliano

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
605 iscritti al 10.7.2012