Zeitzonensuche vom Längengrad [geschlossen]

79

Gibt es eine Bibliothek (oder noch besser einen Webdienst), die von einem Breiten- / Längengrad in eine Zeitzone konvertiert werden kann?

Matt Sheppard
quelle
9
Gibt es dafür eine Nicht-Webservice-Lösung? Ich habe einen Anwendungsfall, in dem ich sporadisch über eine Internetverbindung verfüge und diese Informationen immer noch vor Ort abrufen muss. Eine Datenbank zur Zeitzonengeographie mit einer API darüber wäre nützlich.
Simon Gillbee
Ja, dafür gibt es auf askgeo.com eine im Handel erhältliche Bibliothek . Es ist in Java geschrieben, threadsicher und sehr schnell (10.000 Abfragen pro Sekunde).
James D
1
Letztendlich ist Zeit nur eine Dimension für die Planung. "Stunden" sind nicht relativ zum lokalen Tageszyklus, da dieser selbst für einen bestimmten Ort jährlich variiert. Es würde die Dinge immens einfacher machen, wenn jeder die Sternzeit in Sekunden, Kilosekunden, Megasekunden usw. verwenden würde. Ein kSec ist ungefähr 17 Minuten, was ein sehr menschlicher Zeitabschnitt ist. Ein Tag ist ungefähr 86,4kSec. Es ist keine gerade Zahl, aber was nun? Kein Tag ist jemals genau so lang wie der vorherige, weil sich der Planet dreht.
Peter Wone

Antworten:

64

Ich habe mich ziemlich intensiv mit dieser Frage für ein Projekt befasst, an dem ich arbeite. GeoNames.org und EarthTools.com sind beide gute Optionen für viele Situationen, jedoch mit den folgenden schwerwiegenden Mängeln:

  • GeoNames.org findet die Zeitzone, indem es nach dem nächsten Punkt in seiner Datenbank sucht, der ein Zeitzonenfeld enthält. Dies führt häufig zu einem falschen Ergebnis in Grenznähe. Es ist auch schmerzhaft langsam, was zu Abfragezeiten in der Größenordnung von einigen Sekunden pro Anforderung führt. Es wird auch keine gültige Zeitzone zurückgegeben, wenn sich kein Element in der Datenbank in der Nähe des Abfragepunkts befindet. GeoNames beschränkt auch die Anzahl der Abfragen, die pro Tag durchgeführt werden können, was Massenvorgänge erschwert.
  • EarthTools.org verwendet eine Karte und kann Anfragen schnell zurückgeben, berücksichtigt jedoch nicht die Sommerzeit für die meisten Standorte und gibt einen Rohversatz anstelle einer Zeitzonen-ID zurück (dh sie geben "GMT-7" zurück "anstelle von" Amerika / Chicago "). Außerdem habe ich mir gerade ihre Seite angesehen, als ich diesen Beitrag vorbereitet habe, und Google Chrome warnte vor Malware auf ihrer Website. Das ist neu für mich und kann sich ändern, gibt aber offensichtlich Anlass zur Sorge.

Diese Mängel führten dazu, dass diese vorhandenen Tools nicht für meine Anforderungen geeignet waren. Daher habe ich meine eigene Lösung entwickelt und für den allgemeinen Gebrauch veröffentlicht. Sie finden es hier:

http://www.askgeo.com/

AskGeo basiert auf einer Zeitzonenkarte der Welt und gibt daher für jeden gültigen Breiten- und Längengrad eine gültige Zeitzone zurück. Es gibt die Standard-Zeitzonen-ID (z. B. "America / Los_Angeles") zurück, die unter Linux und den meisten anderen Betriebssystemen und Programmierframeworks verwendet wird. Außerdem wird der aktuelle Offset unter vollständiger Berücksichtigung der Sommerzeit zurückgegeben.

Es ist extrem einfach zu bedienen und die Verwendung ist auf der Hauptseite der Website dokumentiert. Die API unterstützt Stapelabfragen. Wenn Sie also viele Suchvorgänge durchführen müssen, verwenden Sie bitte die Stapelschnittstelle, anstatt unsere Server mit seriellen Anforderungen zu blockieren. Die Massenabfragen sind auch viel schneller, so dass jeder gewinnt.

Als wir dies zum ersten Mal starteten, bauten wir es auf Google App Engine (GAE) auf und machten es für alle Benutzer kostenlos. Dies war möglich, weil die Preise von GAE zu dieser Zeit so niedrig waren. Seitdem hat unsere Serverlast erheblich zugenommen und die Preise von GAE sind deutlich gestiegen. Beide Faktoren zusammen führten dazu, dass wir für das Hosting zu Amazon Web Services wechselten und Gebühren für die kommerzielle Nutzung erhoben, während der Service für gemeinnützige, nichtkommerzielle Open Source-Projekte und Forscher kostenlos blieb. Für gewerbliche Benutzer bieten wir 1000 kostenlose Abfragen an, damit potenzielle Kunden die API bewerten können, um sicherzustellen, dass sie ihren Anforderungen entspricht. Preise und Bedingungen finden Sie auf der Website.

Die zugrunde liegende Bibliothek wurde in Java geschrieben und aufgrund der großen Nachfrage haben wir die Bibliothek auch unter einer kommerziellen Lizenz veröffentlicht. Die vollständige Dokumentation der Bibliothek und Preisangaben finden Sie auf der Website.

Ich hoffe das ist nützlich. Es war sicherlich nützlich für das Projekt, an dem ich arbeitete.

James D.
quelle
Gibt es eine Möglichkeit, von Ihrer Zeitzonen-ID (z. B. "America / Los_Angeles") in ein .NET System.TimeZoneInfo zu konvertieren?
Judah Gabriel Himango
Diese Seite enthält die Zuordnung zwischen den tz-Datenbank-IDs (auch als Olson-IDs bekannt) und den Windows-Zeitzonen-IDs: unicode.org/repos/cldr-tmp/trunk/diff/supplemental/…
James D
Gute Arbeit. Es wäre gut, wenn ein Datum übergeben werden könnte, um den tageslichtangepassten Versatz für einen anderen Zeitpunkt zu erhalten. Das Hinzufügen des Windows TimeZone-Namens wäre ein zusätzlicher Bonus.
CodeGrue
1
Planen Sie, einen Rückrufparameter zu akzeptieren, damit JSONP funktioniert?
Jon Nylander
8
Sofern ich nichts verpasst habe, ist dies nicht mehr kostenlos: Die API kann kostenlos getestet werden und ist für den nichtkommerziellen und persönlichen Gebrauch kostenlos. Open Source-Projekte, Studenten und Privatpersonen können es kostenlos nutzen (vorbehaltlich unserer Nutzungsrichtlinien). Jeder Benutzer, der die API für kommerzielle Zwecke nutzen möchte, muss eine Zugriffsgebühr von 200 USD pro Jahr zahlen.
Arry
28

Schauen Sie sich Geonames.org an

Es ist ein kostenloser Webservice, mit dem Sie viele Informationen von einem Long / Lat erhalten können

Sie bieten auch einen kostenlosen (und Open Source) Java Client für die GeoNames Webservices-Bibliothek (Bibliothek für andere Sprachen wird ebenfalls bereitgestellt: Ruby, Python, Perl, Lisp ...)

Hier sind einige Informationen, die Sie von long / lat erhalten können: (vollständige Liste der Webservices hier)

  • Finden Sie die nächstgelegene Adresse
  • Finden Sie die nächste Kreuzung
  • Finden Sie nahe gelegene Straßen
  • Elevation
  • Zeitzone
Frederic Morin
quelle
1
Dies gibt Ihnen die aktuelle Zeit und die Offsets für Sommerzeit und Standard, aber ich habe Probleme zu finden, ob ein Datum in der Zukunft unter Sommerzeit liegt
Scott Cowan
Dafür wird der Java-Kalender wahrscheinlich nützlicher sein
Frederic Morin
12

Zeitzonen sind jetzt über die Google-API verfügbar

https://developers.google.com/maps/documentation/timezone/

John
quelle
Das ist großartig. Wissen Sie, ob ich die Google Maps-API auch für die Geokodierung verwende, ob das Limit von 2.500 für alle Anforderungen gilt oder ob es 2.500 für die Geokodierung und weitere 2.500 für die Zeitzone sind?
Tesla
8

Die Yahoo Places-API liefert Zeitzoneninformationen über die umgekehrte Geolokalisierung.

Hör zu.

http://developer.yahoo.com/geo/placefinder/guide/requests.html

Jiho Kang
quelle
Für PHP verwende ich unserialize (file_get_contents ()) auf der Basis-URL mit location = lat% 20long & gflags = R & flags = PT, um ein Array zu erhalten, das die Zeitzone enthält.
Owen
1
Die Abfrage-URL sieht folgendermaßen aus: where.yahooapis.com/…
Jon Stevens
5

Wie viel Genauigkeit benötigen Sie? Die Länge durch 15 zu teilen wäre fast richtig: p

Tom
quelle
6
Ich war ziemlich scherzhaft, als ich diese Antwort gab, aber erst als ich wieder auf diese Frage stieß, als ich versuchte, das Problem selbst zu lösen, wurde mir klar, wie völlig nutzlos die Idee ist: upload.wikimedia.org/wikipedia/commons/e/e7 /Timezones2008.png (es sei denn, Sie sind in internationalen Gewässern)
Tom
1
Ich schaue auf diese Karte und denke, dass der von Ihnen vorgeschlagene Ansatz für eine grobe Schätzung eigentlich ziemlich anständig ist. Ich brauche zum Beispiel etwas ziemlich ungefähres (ein paar Stunden sind in Ordnung), und das Teilen des Längengrads durch 15 scheint eine gute Lösung zu sein. Aus der Karte geht hervor, dass es auf der Erde nur sehr wenige bewohnte Orte rund um die internationale Datumsgrenze gibt, an denen das Teilen durch 15 schrecklich falsch sein wird.
MB.
2
Es wird nicht immer empfohlen, die Zeitzone aus politischer Sicht mithilfe von Mathematik zu erfassen. Wenn man jedoch wissen muss, ob es Tag oder Nacht gibt, kann dieser Ansatz programmgesteuert ohne Webservice gelöst werden. Danke für diese Idee.
JackPearse
Ja, askgeo.com (vollständige Offenlegung: Ich betreibe die Website). Sie können eine Java-Bibliothek kaufen, die dies auf Ihrem eigenen Server ausführt.
James D
4

Eric Muller hat Shapefile-Karten für die Zeitzonen der tz (Olson) -Datenbank erstellt. Ein paar kleine Einschränkungen:

  1. Die verwendeten Grenzen sind oft inoffiziell.
  2. Es wird nicht so regelmäßig aktualisiert wie die tz-Datenbank selbst, sodass möglicherweise einige neu gebildete oder angepasste Zonen fehlen.

Abgesehen davon scheint es jedoch für die meisten Zwecke sehr genau zu sein.

Tim Parenti
quelle
0

Die DRT Engine verwendet einen Breiten-, Längen- und lokalen Datums- / Uhrzeitpunkt und gibt einen Zeitzonenversatz zurück. Dies kann verwendet werden, um die Zeitzone eines bestimmten Standorts zu einem späteren Zeitpunkt festzulegen .

Jules
quelle