2013-04-09 7 views
6

Non sono sicuro che sia effettivamente correlato ad Android, ma dal momento che sto per utilizzarlo per un'app Android, sto taggando anche Android.Il calcolo del tempo di alba non corrisponde al risultato di Google

Sto provando a costruire una logica per calcolare il tempo di alba se sono forniti lat-long.

Ho provato in seguito, ma tutto dà un tempo leggermente diversa della Alba del luogo fornisco con (di Bangalore, India), e quando cerco di Google con la parola chiave Bangalore Sunrise Google dà un risultato diverso in la carta che sembra più accurata:

Tutti danno risultati diversi, e ancora aspetto di Google per essere più acccurate.

Qualcuno qui conosce un'API o un calcolo migliore per questo? O l'algoritmo/webservice che Google sta usando per le loro carte?

Qualsiasi aiuto è molto apprezzato.

+0

Quanto è grande la differenza? "Bangalore" non è un lat/long preciso, è una gamma di essi. A circa 12 ° 58 ', il terminatore si sposta verso ovest a circa 1600KPH - abbastanza veloce da farti sbagliare velocemente se usi una longitudine diversa da quella di Google. –

+0

La differenza media è di circa 30 minuti. Se cerco google per 'Bangalore lat long' mi dà il lat-long, e io uso gli stessi valori nel calcolo, assumendo che stiano anche usando lo stesso. –

risposta

0

Una rapida ricerca mi ha portato a questa API

http://www.earthtools.org/webservices.htm#sun

+0

Oh sì, l'ho già provato. Un bel po 'di differenza rispetto a quanto dicono Google o Weather.com. Ho questo link anche nella mia domanda. Volevo calcolarlo offline solo –

0

non ho studiato tutti i link che hai dato, ma molto probabilmente le differenze derivano da presupposti diversi & definizioni. In particolare, i seguenti fattori tendono a variare in base all'algoritmo:

  • rifrazione atmosferica incluso oppure no (elevazione "vero" o "apparente")
  • "superiore" o "centro" di sole di rottura dell'orizzonte

Ci sono certamente anche altri fattori, e il problema diventa sempre più mal definito mentre la latitudine si allontana dall'equatore. Ma questi fattori da soli possono spiegare minuti di differenza.

+0

concordato. E presumo che l'alba sia piuttosto relativa, poiché ci sono più eventi legati alla luce che si accendono dopo la notte. Tuttavia, se qualcuno salirà per verificare il tempo di alba della loro città attuale, si posizionerà su Google come primo posto, e se ci sono enormi differenze tra questo e il calcolo della mia app, questo lascerà una brutta impressione. –

2

L'ora standard indiana è UTC + 05: 30, probabilmente è per questo che si nota una differenza di 30 minuti.

L'algoritmo può calcolare il tempo di alba in UTC, ma non sarà in grado di convertire l'ora UTC in ora locale, il che richiede una conoscenza del fuso orario complessa. L'algoritmo probabilmente fa qualcosa di molto semplicistico, come

localTime = utcTime + 1_hour * longitude/15_degree 

che è di 5 ore per città di Banglore.

È necessario prendere l'ora UTC, quindi convertirla all'ora locale utilizzando le API di data Java.

+0

Questi calcoli mi chiedono il lat-long, quindi suppongo che stiano prendendo in considerazione la differenza di fuso orario? –

+0

l'algoritmo può calcolare il tempo di alba in UTC, ma non sarà in grado di convertire l'ora UTC in ora locale, il che richiede una conoscenza del fuso orario complicata. l'algoritmo probabilmente aggiunge semplicemente '1ora * longitudine/15', che è di 5 ore per Banglore. è troppo semplicistico – ZhongYu

+0

Oh grazie. btw, a quale algoritmo ti stai riferendo? qualcuno dal link che ho postato nella domanda? Mi aiuterebbe a restringere il campo. –

Problemi correlati