Salve a tutti,
vorrei capire se esistono funzioni per ricavare gli angoli di intersezione tra 2 rette su un gis.
In particolare vorrei ricavare l’angolo di itersezione tra due linee per capire se siamo davanti ad angoli più o meno retti, magari che stiano in un range prestabilito. Ovviamente gli angoli potrebbero essere due, se da una retta ne parte un’altra, oppure 4 se le due si intersecano.
detta in archeologizese: dato un grafo delle strade poter ricavare i punti di intersezione in un range accettabile per essere definito angolo retto e ricavare eventuali assi centuriali.
So mica se mi son spiegato! ![:slight_smile: :slight_smile:](/images/emoji/twitter/slight_smile.png?v=12)
Grazie
Luca
On Fri, 5 Apr 2013 18:49:23 +0200, Luca Mandolesi wrote:
vorrei capire se esistono funzioni per ricavare gli angoli di
intersezione tra 2 rette su un gis.
Luca,
non serve assolutamente nulla di esoterico: basta un pizzico di geometria
analitica del liceo fatta con le quattro operazioni aritmetiche.
giunto un rinfreschino di memoria se puo' tornare utile:
http://it.wikipedia.org/wiki/Coefficiente_angolare
assumendo di avere due segmenti arbitrari che coincidono sul vertice [x0,y0]:
gli altri due vertici saranno rispettivamente [x1,y1] ed [x2,y2]
(insomma, formano una bella V)
prima ti calcoli il coefficiente angolare di ciascuno dei due segmenti
con questa formuletta:
m1 = (y1 - y0) / (x1 - x0)
m2 = (y2 - y0) / (x2 - x0)
poi ti calcoli il prodotto dei due coefficienti angolari: se i segmenti
sono rigorosamente perpendicolari ti deve tornare esattamente -1
m1 * m2 == -1.0
se invece sono "quasi perpendicolari" ti tornera' un valore leggermente
maggiore (o minore): dato che immagino sara' abbastanza difficile ricostruire
la tolleranza/accuratezza delle gromae utilizzate dagli agrimensori dell'epoca,
suppongo che ti convenga operare empiricamente.
p.es. puoi iniziare verificando gli intevalli tra -0.9 e -1.1 (-0.8 | -1.2)
... (-0.7 | -1.3) e da li poi procedi calibrandoti "ad occhio spannanometrico"
i valori limite piu' appropriati per valutare le tue centuriazioni.
naturalmente devi stare ben attento al trappolone in agguato: se uno dei
due segmenti e' esattamente orizzontale oppure verticale il tuo programmino
andra' "misteriosamente" in crash ![:wink: :wink:](/images/emoji/twitter/wink.png?v=12)
... devi blindare il tuo codice contro questa eventualita'
ciao Sandro
--
Il messaggio e' stato analizzato alla ricerca di virus o
contenuti pericolosi da MailScanner, ed e'
risultato non infetto.
Il giorno Fri, 05 Apr 2013 21:24:52 +0200
a.furieri@lqt.it ha scritto:
On Fri, 5 Apr 2013 18:49:23 +0200, Luca Mandolesi wrote:
> vorrei capire se esistono funzioni per ricavare gli angoli di
> intersezione tra 2 rette su un gis.
>
Luca,
non serve assolutamente nulla di esoterico: basta un pizzico di
geometria
analitica del liceo fatta con le quattro operazioni aritmetiche.
giunto un rinfreschino di memoria se puo' tornare utile:
http://it.wikipedia.org/wiki/Coefficiente_angolare
......
oppure il dot product, che forse non ha le contro indicazioni segnalate
da Sandro (dovrei ripassarlo meglio), semplicemente non accetta vettori
degeneri (di lunghezza nulla) ![:slight_smile: :slight_smile:](/images/emoji/twitter/slight_smile.png?v=12)
qualche tempo fa, occupandomi dei miei plugin di editing grafico delle
features, me ne sono occupato; non ricordo (è un pò che le sto
trascurando.....) se ho già qualcosa di pronto, ma in ogni caso non
dovrebbe essere difficile implementarlo; ovviamente mi riferisco ad
un approccio interattivo: l'utente seleziona due linee ed ottiene
l'angolo/i compreso/i (magari l'angolo fra il primo segmento ed
il secondo in cw/ccw);
piccola complicazione: le "linee" in qGis sono in realtà sono polilinee
e quindi vanno precisati i tratti fra i quali vuoi avere l'angolo; ma
penso si possa risolvere; oppure, metodo più generale, definendo tre
punti;
ciao Sandro
ciao,
giuliano