Domanda

Esiste un modo per stimare l'offset dal GMT (o fuso orario) da una latitudine/longitudine?Ho visto nomi geografici, ma dovrebbe funzionare a lungo termine e non vogliamo davvero fare affidamento su un servizio web.Verrebbe utilizzato solo per determinare se visualizzare "oggi" o "stasera" quando si forniscono informazioni a vari utenti, quindi non sarebbe necessario che fosse troppo preciso (un'ora o due di pausa non sarebbero male).

È stato utile?

Soluzione

offset = direction * longitude * 24 / 360

dove direzione è 1 per est, -1 per ovest e la longitudine è a (-180.180)

Altri suggerimenti

Basare il fuso orario solo sulla longitudine è estremamente impreciso al di fuori delle acque internazionali.Guarda la mappa in questa pagina:

http://askgeo.com/database/TimeZone

Le strisce colorate verticali nelle profondità dell'oceano sono i cosiddetti fusi orari naturali derivati ​​solo dalla longitudine, mentre i colori della terra sono i fusi orari effettivi secondo le leggi vigenti.Puoi vedere che non si allineano affatto bene.

In realtà mi sono imbattuto in questo problema mentre lavoravo a un progetto diverso e ho svolto ricerche e sviluppi sostanziali su di esso.Prima la mia ricerca:

  • Innanzitutto, i fusi orari non sono generalmente codificati semplicemente con un offset rispetto al GMT (noto anche come UTC).Ciò non tiene conto dell’ora legale e dei cambiamenti nei fusi orari nel corso degli anni.Invece, gli ID del fuso orario vengono utilizzati per designare un'area geografica in cui l'ora ufficiale dell'orologio è stata la stessa in tutta l'area per un dato periodo di tempo (ad esempio, dal 1970).Il sistema più importante di tali ID è l '"ID del fuso orario Olson" (insieme questi ID e le loro regole di offset sono noti come "database tz"), che viene utilizzato da Linux e altri sistemi operativi Unix.La maggior parte dei linguaggi di programmazione e dei sistemi operativi dispone del supporto nativo o di terze parti per gli ID del fuso orario Olson.

In termini di soluzioni esistenti per convertire latitudine e longitudine in fuso orario:

  • GeoNames.org dispone di un vasto database di posizioni di punti (centri di città, aeroporti, edifici pubblici, ecc.), ognuno dei quali è annotato con una serie di metadati utili, incluso l'ID del fuso orario di Olson.E hanno una bella API per consentirti di accedervi tramite il web.Il problema è che se, a meno che il punto che stai interrogando non sia proprio sopra un record nel loro database, potresti ottenere un risultato che si trova dall'altra parte del confine del fuso orario, oppure potresti non ricevere alcuna risposta se la tua query è lontano dal loro punto più vicino.Anche il servizio web è terribilmente lento e limita il numero di query che è possibile effettuare in un giorno a un numero relativamente piccolo.

  • Anche Earth Tools (http://www.earthtools.org/webservices.htm) ha un servizio per questo, ed è molto più veloce di GeoNames, ma restituisce solo un offset da GMT, non un ID di fuso orario, e non non gestisce correttamente l'ora legale nella maggior parte del mondo.Inoltre, sembra che non venga mantenuto, quindi non sono più sicuro che i dati siano più accurati (i fusi orari cambiano nel tempo).

Dopo aver esaminato tali opzioni e aver cercato altre possibilità senza successo, ho deciso di creare la mia soluzione e di averla rilasciata all'indirizzo:

http://askgeo.com

AskGeo si basa su una mappa del fuso orario del mondo, quindi restituisce un fuso orario valido per ogni latitudine e longitudine valide.Restituisce l'ID del fuso orario Olson standard (ad esempio "America/Los_Angeles") utilizzato su Linux e sulla maggior parte degli altri sistemi operativi e framework di programmazione.Restituisce inoltre l'offset corrente, tenendo pienamente conto dell'ora legale.

È estremamente facile da usare e l'utilizzo è documentato nella pagina principale del sito.L'API supporta le query batch, quindi se hai bisogno di fare molte ricerche, utilizza l'interfaccia batch invece di intasare i nostri server con richieste seriali.Anche le query collettive sono molto più veloci, quindi tutti vincono.

Quando lo abbiamo lanciato per la prima volta, lo abbiamo creato su Google App Engine (GAE) e lo abbiamo reso gratuito per tutti gli utenti.Ciò è stato possibile perché i prezzi di GAE all'epoca erano molto bassi.Da allora, il carico del nostro server è aumentato notevolmente e i prezzi di GAE sono aumentati notevolmente.La combinazione di entrambi i fattori ci ha portato a passare ad Amazon Web Services per l'hosting e a iniziare a addebitare i costi per l'uso commerciale, mantenendo il servizio gratuito per progetti open source non commerciali e senza scopo di lucro e per i ricercatori.Per gli utenti commerciali, forniamo 1000 query gratuite per consentire ai potenziali clienti di valutare l'API per assicurarsi che soddisfi le loro esigenze.Consulta il sito web per prezzi e condizioni.

La libreria sottostante è stata scritta in Java e, a grande richiesta, l'abbiamo rilasciata anche con licenza commerciale.La documentazione completa della biblioteca e i dettagli sui prezzi sono sul sito web.

Spero che questo sia utileSicuramente è stato utile per il progetto a cui stavo lavorando.

Se conoscete gli utenti longitudine, si sa completamente ogni aspetto del tempo per loro (trascurando alcuni piccoli errori come speciale ecc relatività). Il tempo solare medio è semplicemente la differenza di GMT e longitudine (gradi convertire parte di minuti, 1 grado = 60 minuti). Si aggiungono o tolgono in base a Est o Ovest. Medio tempo solare è fondamentalmente tempo più esatto poi fusi orari. di giorno e di notte gli orari sono variabili e dipendono latitudine, in modo da utilizzare alcune approssimazioni di alba e tramonto prendendo in latitudine e la data e l'anno. Questo da solo potrebbe fornire nozione abbastanza precisa del giorno e della notte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top