[Gfoss] verifica senso digitalizzazione geometria

Luca Sigfrido Percich sigfrido a tiscali.it
Mer 15 Giu 2011 14:36:19 CEST


Ciao a tutti,

in teoria si fa così:

- estraggo il linearring del poligono;
- ne genero il centroide
- determino la proiezione e la segmentazione del centroide sulla
polilinea che corrisponde al linearring.

Se il centroide cade in "destra geometrica", allora l'arco è
digitalizzato in senso orario; altrimenti, in senso antiorario.


Per proiezione e segmentazione, intendo ad esempio le funzioni LRS di
PostGIS (ST_Line_Locate_Point() per la segmentazione, ma non trovo
quella che mi dà il lato). Ci sono funzioni analoghe in JTS, quindi in
GEOS e quindi in python. Secoli fa scrissi una classe Java per gestire
la segmentazione usando JTS, se ti serve te la spedisco, ma spero che
qualcuno abbia già implementato una funzione ad alto livello che dato un
punto e una polilinea mi dice a che distanza, da che lato e con che
proiezione questo cade su quella. Le funzioni JTS lavorano a livello di
punto e segmento (2 punti), quindi devi fare un ciclo per lavorare su
una linestring.

Fammi sapere se trovi qualcosa, mi interessa molto (soprattutto mi piace
l'idea di non dover fare il porting di quanto già implementato anni fa e
potermi così dedicare a cose nuove)

Sig


Il giorno mer, 15/06/2011 alle 13.00 +0200, marco zanieri ha scritto:
> ho provato con la tematizzazione delle coordinate e si riesce a
> comprendere l'orientamento...grazie mille Luca; credo comunque che
> possa risultare molto utile la possibilità di individuare la sequenza
> delle coordinate di una geometria e comunque una procedura automatica
> che possa riconoscere la presenza di eventuali isole (pieni e
> vuoti)...
> grazie a tutti 
> 
> Il giorno 15 giugno 2011 12:49, G. Allegri <giohappy a gmail.com> ha
> scritto:
>         Il test del centroide è un test del pirla, scusate, perché il
>         centroide può cadere anche fuori dalla geometria...
>         Posterò una domanda nell ml di sviluppo ma intanto lo chiedo
>         anche qua: come si può sapere l'orientamento di una geometria
>         tramite le api di Qgis?
>         
>         giovanni
>         
>         Il giorno 15 giugno 2011 12:36, G. Allegri
>         <giohappy a gmail.com> ha scritto:
>         
>         
>                 Dall'API di QGis non trovo un metodo per determinare
>                 l'orientamento della sequenza di coordinate... o se si
>                 tratta di un'isola. Un modo grezzo ma, credo, efficace
>                 è lanciare questo script nella console di Python
>                 dentro QGis, nel quale faccio un intersect tra la
>                 geometria e il suo centroide. Se fossse un'isola
>                 dovrebbe tornarmi False... o sbaglio?
>                 
>                 iface = qgis.utils.iface
>                 lyr = iface.activeLayer()
>                 prov = lyr.dataProvider()
>                 attrlist = prov.attributeIndexes()
>                 prov.select(attrlist)
>                 feat = QgsFeature()
>                 for i in range(lyr.featureCount()):
>                     prov.nextFeature(feat)
>                     geom = feat.geometry()
>                     cent = geom.centroid()
>                     dentro = geom.intersects(cent)
>                     if (dentro):
>                         attributes = feat.attributeMap()
>                         print 'La feature %s contiene una geometria
>                 piena' % attributes[0].toInt()[0]
>                     else:
>                         print '->>> La feature %s sembra contenere
>                 un'isola' % attributes[0].toInt()[0]
>                 
>                 
>                 Giovanni
>                         
>                 
>                 
>                 
>                 
>                 Il giorno 15 giugno 2011 11:00, marco zanieri
>                 <marcozanieri a gmail.com> ha scritto:
>                         
>                         Salve,
>                         ho un problema con alcune geometrie areali,
>                         avrei la necessità di verificare il senso di
>                         digitalizzazione (orario:interno poligono
>                         pieno; antiorario: interno poligono vuoto);
>                         esiste quest possibilità in Qgis?
>                         
>                         Grazie mille,
>                         marco
>                         
>                         -- 
>                                     dott. Marco Zanieri
>                            e-mail: marcozanieri a gmail.com
>                         
>                                    cartografia tematica
>                                   banche dati territoriali
>                              sistemi informativi geografici 
>                               applicazioni GIS e webGIS
>                         
>                         
>                         
>                         
>                         
>                         
>                         _______________________________________________
>                         Iscriviti all'associazione GFOSS.it:
>                         http://www.gfoss.it/drupal/iscrizione
>                         Gfoss a lists.gfoss.it
>                         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.
>                         518 iscritti al 3.6.2011
>                 
>                 
>         
>         
> 
> 
> 
> -- 
>             dott. Marco Zanieri
>    e-mail: marcozanieri a gmail.com
> 
>            cartografia tematica
>           banche dati territoriali
>      sistemi informativi geografici 
>       applicazioni GIS e webGIS
> 
> 
> 
> 
> _______________________________________________
> Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
> Gfoss a lists.gfoss.it
> 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.
> 518 iscritti al 3.6.2011



Maggiori informazioni sulla lista Gfoss