[Gfoss] verifica senso digitalizzazione geometria
Luca Sigfrido Percich
sigfrido a tiscali.it
Mer 15 Giu 2011 14:58:44 CEST
Mah, in PostGIS ho trovato solo:
ST_LineCrossingDirection()
che accetta due linestring come parametro. La seconda va generata dal
congiungendo il punto originale (mypoint) con la proiezione del punto
sulla prima (mypline):
ST_LineCrossingDirection(
mypline,
st_makeline(
mypoint,
ST_Line_Interpolate_Point(
mypline,
ST_Line_Locate_Point(
mypline,
mypoint
)
)
)
)
Se restituisce -1, il punto è a sinistra; +1, il punto è a destra.
Mi pare strano non ci sia qualcosa di più alto livello.
Torno al lavoro, la pausa di divertimento è finita :))))
Sig
Il giorno mer, 15/06/2011 alle 14.36 +0200, Luca Sigfrido Percich ha
scritto:
> 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
>
> _______________________________________________
> 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