Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167

    Distanza tra 2 punti conoscendo latitudine e longitudine

    Voglio calcolare la distnza tra due punti di cui conosco latitudine e longitudine, che ricavoi tramite Google Maps, quindi sono in gradi.
    Le converto in radianti facendo , ad esempio:

    latitudine*(PI_GRECO/180)

    E così lo faccio per la latitudine dell'altro punto e per le due longitudini.

    Poi utilizzo la formula per la distanza tra i punti A e B con a1 e b1 longitudine e latitudine di A e a2 e b2 longitudine e latitudine di B:

    codice:
    A-B = arccos(cos(a1-a2)cos(b1)cos(b2)+sin(b1)sin(b2)
    che mi dovrebbe dare il risultato in radianti, poi da convertire in km.
    ma non sembra funzionare.
    Cosa c'è di sbagliato ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Può esserti d'aiuto?

    Codice PHP:
    <%

    ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    '
    :::                                                                         :::
    ':::  This routine calculates the distance between two points (given the     :::
    '
    :::  latitude/longitude of those points). It is being used to calculate     :::
    ':::  the distance between two location using GeoDataSource(TM)              :::
    '
    :::  products.                                                              :::
    ':::                                                                         :::
    '
    :::  Definitions:                                                           :::
    ':::    South latitudes are negative, east longitudes are positive           :::
    '
    :::                                                                         :::
    ':::  Passed to function:                                                    :::
    '
    :::    lat1lon1 Latitude and Longitude of point 1 (in decimal degrees)  :::
    ':::    lat2, lon2 = Latitude and Longitude of point 2 (in decimal degrees)  :::
    '
    :::    unit the unit you desire for results                               :::
    ':::           where: 'M' is statute miles (default)                         :::
    '
    :::                  'K' is kilometers                                      :::
    ':::                  'N' is nautical miles                                  :::
    '
    :::                                                                         :::
    ':::  Worldwide cities and other features databases with latitude longitude  :::
    '
    :::  are available at http://www.geodatasource.com                          :::
    ':::                                                                         :::
    '
    :::  For enquiriesplease contact sales@geodatasource.com                  :::
    ':::                                                                         :::
    '
    :::  Official Web sitehttp://www.geodatasource.com                        :::
    ':::                                                                         :::
    '
    :::  GeoDataSource.com (CAll Rights Reserved 2015                         :::
    ':::                                                                         :::
    '
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    const 
    pi 3.14159265358979323846

    Function distance(lat1lon1lat2lon2unit)
      
    Dim thetadist
      theta 
    lon1 lon2
      dist 
    sin(deg2rad(lat1)) * sin(deg2rad(lat2)) + cos(deg2rad(lat1)) * cos(deg2rad(lat2)) * cos(deg2rad(theta))
      
    dist acos(dist)
      
    dist rad2deg(dist)
      
    distance dist 60 1.1515
      Select 
    Case ucase(unit)
        Case 
    "K"
          
    distance distance 1.609344
        
    Case "N"
          
    distance distance 0.8684
      End Select
    End 
    Function


    '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    '
    :::  This function get the arccos function from arctan function    :::
    '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    Function acos(rad)
      If Abs(rad) <> 1 Then
        acos = pi/2 - Atn(rad / Sqr(1 - rad * rad))
      ElseIf rad = -1 Then
        acos = pi
      End If
    End function


    '
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    ':::  This function converts decimal degrees to radians             :::
    '
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    Function 
    deg2rad(Deg)
        
    deg2rad cdbl(Deg pi 180)
    End Function

    '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    '
    :::  This function converts radians to decimal degrees             :::
    '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    Function rad2deg(Rad)
        rad2deg = cdbl(Rad * 180 / pi)
    End Function

    response.write distance(32.9697, -96.80322, 29.46786, -98.53506, "M") & " Miles<br>"
    response.write distance(32.9697, -96.80322, 29.46786, -98.53506, "K") & " Kilometers<br>"
    response.write distance(32.9697, -96.80322, 29.46786, -98.53506, "N") & " Nautical Miles<br>"
    %> 

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    Quote Originariamente inviata da Roby140569 Visualizza il messaggio
    Può esserti d'aiuto?
    Guardo e la metto giù in asp.
    E' che in teoria quella che ho messo io dovrebbe funzionare, perchè quella formula non l'ho, ovviamente, inventata io, è proprio la formula per la distanza tra 2 punti.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Il codice che ho postato è appunto in ASP.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    Quote Originariamente inviata da Roby140569 Visualizza il messaggio
    Il codice che ho postato è appunto in ASP.
    ho visto, infatti, è che avevo letto codice php in cima.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.