56 votes

J'ai besoin d'une liste cartographique des villes et des fuseaux horaires - le meilleur moyen de l'obtenir?

J'ai une liste de villes, d'états/provinces et de pays et j'ai besoin de trouver leurs fuseaux horaires respectifs facilement. Plus précisément, j'ai besoin de savoir qui Windows ils Fuseau horaire carte de. Jusqu'à présent, cela a été un processus difficile, car il n'y a pas de moyen facile de passer d'une ville à quelque chose et d'obtenir un fuseau horaire à l'arrière (un fuseau horaire étant un décalage et si oui ou non le fuseau horaire prend en charge l'Heure d'été).

Le flux de courant est d'utiliser http://www.batchgeocode.com pour obtenir la latitude/longitude de la ville (qui appelle un service Yahoo) et ensuite appeler http://www.EarthTools.org pour obtenir un fuseau horaire de la lettre, qui correspond à un décalage. Le problème, c'est le service yahoo parfois renvoyer un mauvais longitude/latitude, et earthtools.org ne sais pas beaucoup sur l'heure d'été info afin de cartographie pour le bon Fuseau horaire de l'Id est un fastidieux processus manuel.

Je ne peux pas être la première personne qui a fait cela - est-ce que quelqu'un sait d'une meilleure façon, ou de certains de liste qui a l'info dont j'ai besoin?

Merci.

44voto

Jason S Points 58434

Question intéressante! Ces trois autres AFIN de postes (41504, 55901 et 237023) mentionner un couple de conduit. Il y a le Olson base de données (voir l' entrée de Wikipedia pour la description), mais il semble plus algorithmique/programmes (par exemple, si vous connaissez le nom des comtés, il y a une règle pour certains comtés dans l'Indiana).

J'ai essayé de regarder EarthTools mais il a échoué pour Saint-Pierre/Miquelon, de l'un des cas de test (-3:00 plutôt le -3:30 à terre-Neuve, qui est ce que EarthTools dit).

Certaines des options prometteuses: worldtimeengine.com a gratuitement une version interactive et d'une API qui semble être peu coûteux (5000 requêtes par livre sterling), mais l'API ne couvre lat,long requêtes comme entrées (pas de localisation en entrée, ce qui est quelque chose que la version interactive a).

Meilleur: je regarderais geonames.org qui ressemble a une belle riche API que vous pouvez utiliser, et ils ont à la fois libre (lente) de la version, et une version commerciale pour de meilleures performances.

p.s. voici quelques bonnes cas de test (à partir de worldtimezone.com et Wikipédia la liste de fuseaux horaires, la carte des fuseaux horaires est également illustratif):

  • Caracas, Venezuela (-4:30)
  • Gander, À Terre-Neuve (À 3:30)
  • Téhéran, Iran (+3:30)
  • Kaboul, Afghanistan (+4:30)
  • Katmandou, Népal (+5:45)
  • Yangon, Myanmar (+6:30)
  • Chatham islands, Nouvelle-Zélande (+12:45)
  • L'Île De Pâques (-6)
  • Saint-Pierre-et-Miquelon (-3)
  • Stanley, Falkland, Îles (-4)
  • Evansville, Indiana (-6=Centre)
  • De L'Ontario, Oregon (-7=Montagne)

0voto

Tim Cooper Points 2481

Je peux vous aider avec la 2ème partie de votre flux de travail actuel. J'ai écrit une bibliothèque Java qui maps lat/long de fuseaux horaires, où la base de données est codée dans le code source.

Le code source est à la base un énorme arbre de if: if (lat >= -33.0) si (gnl < -151.5) ... d'autre ... et ainsi de suite. C'est juste une seule classe. Donc, si vous programmez en C# il serait trivial de le porter.

http://www.edval.biz/mapping-lat-lng-s-to-timezones

Il est précis à 22km.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X