+ Rispondi alla Discussione
Risultati da 1 a 14 di 14

Posizione tra due coordinate geografiche

Ultimo Messaggio di Pollicino964 il:
  1. #1
    Utente Premium
    Data Registrazione
    Feb 2008
    Messaggi
    131

    Posizione tra due coordinate geografiche

    Salve ragazzi, ho una domandina alquanto strana.

    Vorrei sapere se è possibile calcolare la posizione tra due coordinate geografiche, rappresentata in gradi.

    Esempio...

    Le coordinate sono del tipo: 41,434 - 11,2302 / 41,989 - 11,898

    Il colosseo si trova a 123° dal Vaticano, poi io converto il 123° in Sud-Est...considerando il 360° dell'angolo giro.

    Soltanto che non riesco a trovare il modo di calcolare quanti gradi sono tra 1 posizione e l'altra.

    Avete qualche consiglio da darmi?

    Grazie in anticipo!
    Realizza il tuo sito web: www.handcoded.it

  2. #2
    Esperto L'avatar di claudioweb
    Data Registrazione
    Jul 2005
    Località
    Salento
    Messaggi
    3,754
    Ciao, la domanda è più di geometrica che di programmazione.

    Mi sfugge nell'esempio dell'angolo tra Colosseo e Vaticano quale sia il vertice che consideri. Iniziando a leggere pensavo che ti riferissi al centro della Terra, ma 123° sono tanti Colosseo e Vaticano che sono relativamente vicini, evidentemente ho capito male...
    Si avvicina la Festa della Mamma.

  3. #3
    Utente Premium
    Data Registrazione
    Feb 2008
    Messaggi
    131
    Ciao Claudio e grazie intanto per la risposta...

    I 123° che ho scritto erano un esempio...

    Era per far capire di cosa sto parlando....

    In ogni caso a me servirebbe, dati due punti e due coppie di coordinate, capire a quanti Gradi stanno uno dall'altro....

    Una volta calcolati i gradi, posso facilmente stabilire se A è a S-E o a N-W del punto B, e viceversa...

    Più chiaro adesso?
    Realizza il tuo sito web: www.handcoded.it

  4. #4
    Esperto L'avatar di claudioweb
    Data Registrazione
    Jul 2005
    Località
    Salento
    Messaggi
    3,754
    Ripeto quanto ho detto prima, qual è il vertice dell'angolo che consideri?

    Due punti nello spazio (o nel piano) non individuano un angolo, ma tuttalpiù il segmento che li congiunge.

    Ci vogliono 3 punti, di cui uno vertice, per definire un angolo.
    Si avvicina la Festa della Mamma.

  5. #5
    Esperto L'avatar di claudioweb
    Data Registrazione
    Jul 2005
    Località
    Salento
    Messaggi
    3,754
    Per maggiori chiarimenti ti consiglio di leggere questo
    http://it.wikipedia.org/wiki/Sistema...rdinate_polari

    Nel caso delle coordinate polari si prende come riferimento non 3 punti, ma il centro e un sistema cartesiano.
    Si avvicina la Festa della Mamma.

  6. #6
    Utente Premium
    Data Registrazione
    Feb 2008
    Messaggi
    131
    Guarda quest'immagine...

    poandrea.com/mappa.png

    Considerando il punto A: Roma e il punto B: L'Acquila....possiamo dire che L'Acquila si trova a 30° Rispetto a Roma....

    Ora mi chiedo...c'è una formula per calcolare il valore dell'angolo...avendo le due coordinate dei due punti???
    Realizza il tuo sito web: www.handcoded.it

  7. #7
    Esperto L'avatar di claudioweb
    Data Registrazione
    Jul 2005
    Località
    Salento
    Messaggi
    3,754
    Dunque consideri un sistema cartesiano, immagino con l'asse x parallelo all'equatore.

    Qui trovi tutte le formule per calcolare l'angolo
    http://it.wikipedia.org/wiki/Rappres...meri_complessi
    l'argomento è differente ma la situazione è identica.

    La formula è semplicissima, in quanto devi calcolare l'arcotangente del rapporto tra la differenza di coordinate y e la differenza di coordinate x.

    Il problema è che devi capire in quale quadrante ti trovi per determinare univocamente l'angolo, in quanto avrai sempre soluzioni possibili doppie.
    Perciò ti rimando a quella pagina di Wikipedia che spero potrà chiarirti le idee.
    Si avvicina la Festa della Mamma.

  8. #8
    Utente Premium
    Data Registrazione
    Feb 2008
    Messaggi
    131
    Intanto grazie mille per la segnalazione.


    Ho provato a mettere in pratica quello che mi hai detto.. e sono arrivato a questa formula:

    Codice PHP:
    $lat1="41.8880";
    $lat2="41.794";
    $lon1="12.25";
    $lon2="12.5044";
    echo 
    $dist=atan(($lon1-$lon2)/($lat1-$lat2)); 
    Con Risultato: -1.2168590385299

    il risultato ottenuto però...in che unità di misura mi viene fuori??

    Poi confrontando il mio risultato con quello ottenuto in questa pagina:

    sunearthtools.com/dp/tools/distance.php

    noto che è molto diverso, in quanto a loro viene: 116.38°

    Grazie ancora per l'aiuto.
    Ultima modifica di Amistat; 26-09-09 alle 14:57
    Realizza il tuo sito web: www.handcoded.it

  9. #9
    Esperto L'avatar di ceccus
    Data Registrazione
    Oct 2006
    Messaggi
    921
    Ciao Amistat,
    l'angolo ti occorre per misurare la distanza sulla superficie?
    Ultima modifica di ceccus; 26-09-09 alle 16:00

  10. #10
    Utente Premium
    Data Registrazione
    Feb 2008
    Messaggi
    131
    No quello già lo faccio...mi occorre per definire la posizione di B rispetto ad A...
    Realizza il tuo sito web: www.handcoded.it

  11. #11
    Esperto L'avatar di olaola
    Data Registrazione
    Jan 2007
    Località
    Bologna
    Messaggi
    709
    Ciao Amistat,

    la funzione atan restituisce il valore dell' angolo espresso in radianti.

    Per ottenere il valore in gradi devi moltiplicare il valore ottenuto per 180° e dividere per pi-greco (3,14159 26535 89793...).

    Inoltre rimane il problema anticipato da Claudio e cioè che la tangente di angoli che differiscono per 180° è la stessa. Quindi calcolando l'arcotangente l'angolo che ottieni potrebbe non essere quello giusto.

    Se non sbaglio dovresti aggiungere 180° al risultato finale se la differenza tra le latitudini è negativa.

    Codice PHP:
    $lat1="41.8880";
    $lat2="41.794";
    $lon1="12.25";
    $lon2="12.5044";
    $dist=atan(($lon1-$lon2)/($lat1-$lat2))*180.0/3.141592653589793;
    if ((
    $lat1-$lat2) < 0then $dist+=180.0

  12. #12
    Utente Premium
    Data Registrazione
    Feb 2008
    Messaggi
    131
    Ciao OlaOla, e grazie per la risposta...

    Ho applicato la tua formula, ma credo ci siano ancora dei problemini...

    Con riferimento sempre alla pagina postata in precedenza, ho incrociato i due punti....cercando di ottenere gli stessi risultati sia con lo script realizzato, sia con la pagina segnalata:

    Vado a elencare i test..

    Codice PHP:
    $lat1="41.8880";
    $lat2="41.794";
    $lon1="12.25";
    $lon2="12.5044";
    $dist=(atan(($lon1-$lon2)/($lat1-$lat2))*180.0)/3.141592653589793;
    if (
    $lat1-$lat2 0
     
    $dist+=180
    echo 
    $dist
    Risultato: -69.72088717011

    Mentre con la pagina: 116.38


    Codice PHP:
    $lat2="41.8880";
    $lat1="41.794";
    $lon2="12.25";
    $lon1="12.5044";
    $dist=(atan(($lon1-$lon2)/($lat1-$lat2))*180.0)/3.141592653589793;
    if (
    $lat1-$lat2 0
     
    $dist+=180
    echo 
    $dist

    Risultato: 110.27911282989

    Mentre con la pagina: 296.38

    Si nota che i due risultati, siano diversi di circa 180° (che ci sia uno scarto di una decina di gradi non mi importa)

    Per caso il +180 va fatto a prescindere?
    Realizza il tuo sito web: www.handcoded.it

  13. #13
    Utente Premium
    Data Registrazione
    Feb 2008
    Messaggi
    131
    PS: ho risolto così

    Codice PHP:
    $lat2="41.8880";
    $lat1="41.794";
    $lon2="12.25";
    $lon1="12.5044";
    $dist=(atan(($lon1-$lon2)/($lat1-$lat2))*180.0)/3.141592653589793238462643383279502884197169399375105820974944592
    if((
    $lat1-$lat2)<0)
        
    $dist=$dist+180;
    if((
    $lon1-$lon2)<&& ($lat1-$lat2)>0)
        
    $dist=$dist+360;
    if((
    $dist>'0' && $dist<'20') || ($dist<'360' && $dist>'340'))
        
    $pos='Nord';
    if(
    $dist>'20' && $dist<'70')
        
    $pos='Nord-Est';
    if(
    $dist<'340' && $dist>'290')
        
    $pos='Nord-Ovest';
    if(
    $dist<'290' && $dist>'250')
        
    $pos='Ovest';
    if(
    $dist>'70' && $dist<'110')
        
    $pos='Est';
    if(
    $dist>'110' && $dist<'160')
        
    $pos='Sud-Est';
    if(
    $dist<'250' && $dist>'200')
        
    $pos='Sud-ovest';
    if(
    $dist<'200' && $dist>'160')
        
    $pos='Sud'
    Realizza il tuo sito web: www.handcoded.it

  14. #14
    User Newbie
    Data Registrazione
    Apr 2011
    Località
    Albano V.se
    Messaggi
    2
    Ho una domanda simile a quella di Amisat ma non so come postarla , se non rubando uno spazio risposta in questa discussione .
    L'Amministratore può indicarmi come fare ?
    Grazie mille

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.