2015-11-10 1 views
4

J'ai fait des recherches CLDR et IANA afin de trouver une cartographie centralisée de LOCODE/UN à Olsen Timezones.Existe-t-il une source fiable fournissant des correspondances de LOCODE/UN pour les fuseaux horaires Olsen?

Idéalement je voudrais avoir par exemple:

+--------------+--------------------+ 
|un_locode  |timezone   | 
+--------------+--------------------+ 
|USLAX   | America/Los_Angeles| 
+--------------+--------------------+ 

pour chaque LOCODE /. Est-ce que mes compétences dans le nube me manquent pour comprendre comment utiliser ces sources pour atteindre mon objectif? (Si oui, aidez-moi à me diriger vers le script qui me permettrait d'automatiser la fourniture de ces mappings).

Ou, ces sources ne parviennent-elles pas à avoir la corrélation de données que je recherche? (Si oui, faites le moi savoir si vous avez une source fiable).

Répondre

1

Je n'ai pas vu une telle source. Vous pouvez essayer d'en créer un en mappant les coordonnées lat/lon pour les entrées qui en ont, et en corrélant avec le fuseau horaire de l'IANA par one of the methods listed here. Cependant, assurez-vous de lire Wikipedia's article about UN/LOCODE, en particulier en décrivant les erreurs avec les coordonnées.

Notez également que de nombreuses coordonnées ne figurent tout simplement pas dans les données - pourquoi? Je ne sais pas.

Le list of UN/LOCODE for the US is here, et montrer Los Angeles à US LAX (pas UNLAX). Son champ de coordonnées est vide.

Si vous pouvez trouver une autre source fiable de UN/LOCODE à lat/lon, alors vous êtes en affaires. Une recherche rapide a trouvé que GeoNames claims to have this in their premium data subscription, mais je n'ai pas enquêté plus loin.

+0

Merci Matt, de mes recherches et du poste que vous avez mentionné, il est recommandé de ne pas résoudre les fuseaux horaires à des endroits en utilisant la latitude/longitude, car les fuseaux horaires sont principalement sur le plan politique gouverné, pas géographiquement. La Chine est un bon exemple en ce sens que le pays entier est compensé en UTC + 8 par institution politique, mais si vous résolviez l'une des villes chinoises les plus à l'ouest par latitude/longitude, vous pourriez obtenir un décalage horaire égal à UTC + 6. . – mattbrosenberg

+0

@mattbrosenberg - Cela dépend entièrement de la méthode que vous utilisez pour le résoudre. Si vous prenez un calcul simple, alors vous avez absolument raison. Mais la plupart des méthodes sur le post référencé utilisent des cartes avec des limites. Bien sûr, les cartes ont toujours un contexte politique. Si vous n'êtes pas d'accord avec ces cartes d'un point de vue politique, vous pouvez les ajuster en fonction de vos opinions - et de nombreuses solutions le permettent. –

+0

WRT à la Chine, notez que politiquement tout le pays est sur UTC + 8 («Asie/Shanghai»), mais certaines des solutions incluent en effet «Asie/Urumqi» (UTC + 6) dans leurs résultats. Voir [Xijiang - Urumqi Time] (https://en.wikipedia.org/wiki/Time_in_China#Xinjiang). En particulier, les solutions qui utilisent [tz_world maps] (http://efele.net/maps/tz/world/) incluent cette zone, mais pas d'autres telles que l'API de Google. –

2

Le GeoNames free database of cities (qui est disponible en téléchargement) fournit: les noms de villes, la latitude/longitude et, surtout, les informations de fuseau horaire. Vous pouvez assez rapidement faire votre propre base de données reliant cette information avec le UN/LOCODE code lists en fonction du nom/pays/coordonnées.

1

Nous avons fait face exactement au même problème et avons donc dû fournir une solution.

Cette solution implique la liaison de la base de données UN/LOCODES avec une base de données de géolocalisation/fuseau horaire. Il y a quelques mises en garde à cette approche qui ont été capturées par la réponse de Matt Johnson et les commentaires qui l'accompagnent.

A savoir:

  • la base de données UN/LOCODE de coordonnées est pas terminée [1] et a parfois des données inexactes [2]
  • dans certains cas, 1 à 1 correspondance entre l'ONU/LOCODE et un fuseau horaire est impossible en raison de la nature politique des fuseaux horaires.
  • les deux points ci-dessus sont aggravés par l'inexactitude des bases de données libres de coordonnées à fuseau horaire. Il est utile d'obtenir un jeu de données qui inclut également les eaux territoriales afin que les fuseaux horaires des ports puissent être correctement reliés au pays auquel ils appartiennent.

Le référentiel suivant https://github.com/Portchain/un_locodes_sql contient le code pour extraire et lier les données. Il génère un fichier SQL qui peut être importé dans une base de données PostgreSQL. Les données de géolocalisation/fuseau horaire sont basées sur le module geo-tz [3] qui semble se procurer ses données à partir de timezone-boundary-builder [4].

Encore une fois, la liste fournie par notre dépôt est bien sûr incomplète et inexacte. Si vous voyez une erreur dans les données, veuillez ouvrir un problème de github et faisons une liste précise et ouverte des informations UN/LOCODE, des coordonnées et du fuseau horaire.