Búsqueda de zona horaria a partir de latitud y longitud [cerrado]

79

¿Existe alguna biblioteca (o mejor aún, servicio web) disponible que pueda convertir de una latitud / longitud a una zona horaria?

Matt Sheppard
fuente
9
¿Existe una solución que no sea de servicio web para esto? Tengo un caso de uso en el que tengo conectividad a Internet esporádica y todavía necesito obtener esta información en el campo. Sería útil una base de datos de la geografía de la zona horaria con una API en la parte superior.
Simon Gillbee
Sí, hay una biblioteca disponible comercialmente disponible en askgeo.com para hacer exactamente esto. Está escrito en Java, es seguro para subprocesos y muy rápido (10.000 consultas por segundo).
James D
1
Cuando todo está dicho y hecho, el tiempo es solo una dimensión para la programación. Las "horas" no son relativas al ciclo diurno local, ya que éste varía anualmente incluso para un lugar determinado. Haría las cosas inmensamente más simples si todo el mundo usara el tiempo sidéreo en segundos, kilosegundos, megaseconds, etc. Un kSec es de aproximadamente 17 minutos, lo cual es una cantidad de tiempo muy humana. Un día es aproximadamente 86,4kSeg. No es un número par, pero ¿y qué? Ningún día tiene exactamente la misma duración que el anterior porque el giro del planeta se está desacelerando.
Peter Wone

Respuestas:

64

Analicé bastante profundamente esta pregunta para un proyecto en el que estoy trabajando. GeoNames.org y EarthTools.com son buenas opciones para muchas situaciones pero con los siguientes defectos graves:

  • GeoNames.org encuentra la zona horaria buscando el punto más cercano en su base de datos que contiene un campo de zona horaria. Esto a menudo conduce a un resultado incorrecto cerca de las fronteras. También es terriblemente lento, lo que lleva a tiempos de consulta del orden de un par de segundos por solicitud. Tampoco devuelve una zona horaria válida si no hay ningún elemento en su base de datos cerca del punto de consulta. GeoNames también restringe la cantidad de consultas que se pueden realizar por día, lo que dificulta las operaciones masivas.
  • EarthTools.org utiliza un mapa y puede devolver consultas rápidamente, pero no tiene en cuenta el horario de verano para la mayoría de las ubicaciones y devuelve un desplazamiento sin procesar en lugar de una ID de zona horaria (es decir, devuelven "GMT-7 "en lugar de" América / Chicago "). Además, solo miré su página mientras preparaba esta publicación y Google Chrome advirtió sobre el malware en su sitio. Eso es nuevo para mí y puede cambiar, pero obviamente es motivo de preocupación.

Estos defectos significaron que estas herramientas existentes no eran adecuadas para mis necesidades, así que desarrollé mi propia solución y la publiqué para uso general. Lo puedes encontrar aquí:

http://www.askgeo.com/

AskGeo se basa en un mapa de zona horaria del mundo, por lo que devuelve una zona horaria válida para cada latitud y longitud válidas. Devuelve el ID de zona horaria estándar (por ejemplo, "America / Los_Angeles") utilizado en Linux y la mayoría de los demás sistemas operativos y marcos de programación. También devuelve la compensación actual, teniendo plenamente en cuenta el horario de verano.

Es extremadamente fácil de usar y su uso está documentado en la página principal del sitio. La API admite consultas por lotes, por lo que si necesita realizar muchas búsquedas, utilice la interfaz por lotes en lugar de atascar nuestros servidores con solicitudes en serie. Las consultas masivas también son mucho más rápidas, por lo que todos ganan.

Cuando lo lanzamos por primera vez, lo construimos en Google App Engine (GAE) y lo hicimos gratis para todos los usuarios. Esto fue posible porque los precios de GAE eran tan bajos en ese momento. Desde entonces, la carga de nuestro servidor ha aumentado sustancialmente y los precios de GAE subieron mucho. Ambos factores combinados nos llevaron a cambiar a Amazon Web Services para alojamiento y comenzar a cobrar por uso comercial, mientras manteníamos el servicio gratuito para investigadores y proyectos de código abierto no comerciales y sin fines de lucro. Para los usuarios comerciales, ofrecemos 1000 consultas gratuitas para que los clientes potenciales evalúen la API para asegurarse de que satisfaga sus necesidades. Consulte el sitio web para conocer los precios y las condiciones.

La biblioteca subyacente fue escrita en Java y debido a la demanda popular, también lanzamos la biblioteca bajo una licencia comercial. La documentación completa de la biblioteca y los detalles de precios se encuentran en el sitio web.

Espero que esto sea útil. Ciertamente fue útil para el proyecto en el que estaba trabajando.

James D
fuente
¿Hay alguna manera de convertir su ID de zona horaria (por ejemplo, "America / Los_Angeles") a .NET System.TimeZoneInfo?
Judah Gabriel Himango
Esta página contiene el mapeo entre los identificadores de la base de datos tz (también conocidos como identificadores de Olson) y los identificadores de zona horaria de Windows: unicode.org/repos/cldr-tmp/trunk/diff/supplemental/…
James D
Buen trabajo. Sería bueno si se pudiera pasar una fecha para obtener la compensación ajustada de la luz del día para un punto diferente en el tiempo. Agregar el nombre de la zona horaria de Windows sería una ventaja adicional.
CodeGrue
1
¿Planea aceptar un parámetro de devolución de llamada para que JSONP funcione?
Jon Nylander
8
A menos que me perdiera algo, esto ya no es gratuito: la API se puede probar gratis y es gratis para uso personal y no comercial. Los proyectos de código abierto, los estudiantes y los particulares pueden usarlo sin cargo (sujeto a nuestras pautas de uso). Cualquier usuario que desee utilizar la API con fines comerciales debe pagar una tarifa de acceso de $ 200 por año.
Arry
28

Eche un vistazo a Geonames.org

Es un servicio web gratuito que le permite obtener mucha información de un

También proporcionan un cliente Java gratuito (y de código abierto) para la biblioteca de servicios web GeoNames (también se proporciona una biblioteca para otros lenguajes: ruby, python, perl, lisp ...)

Aquí hay información que puede obtener de long / lat: (lista completa de servicios web aquí)

  • Encuentra la dirección más cercana
  • Encuentra la intersección más cercana
  • Encuentra calles cercanas
  • Elevación
  • Zona horaria
Frederic Morin
fuente
1
esto le dará la hora actual y las compensaciones para el horario de verano y el estándar, pero tengo problemas para encontrar si una fecha en el futuro está bajo el horario de verano
Scott Cowan
para ello, el calendario de Java probablemente será más útil
Frederic Morin
12

Las zonas horarias ahora están disponibles a través de la API de Google

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

John
fuente
Esto es genial, ¿sabe si también estoy usando la API de Google Maps para la codificación geográfica, si el límite de 2.500 es para todas las solicitudes o si es 2.500 para la codificación geográfica y otros 2.500 para la zona horaria?
Tesla
8

La API de lugares de Yahoo proporciona información de la zona horaria a través de la geolocalización inversa.

Echale un vistazo.

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

Jiho Kang
fuente
Para PHP, uso unserialize (file_get_contents ()) en la URL base con location = lat% 20long & gflags = R & flags = PT para obtener una matriz que incluye la zona horaria.
Owen
1
La URL de consulta tiene este aspecto: where.yahooapis.com/…
Jon Stevens
5

¿Cuánta precisión necesitas? Dividir la longitud entre 15 sería casi correcto: p

Tom
fuente
6
Estaba siendo bastante bromista cuando hice esta respuesta, pero no hasta que me encontré con esta pregunta nuevamente al intentar resolver el problema por mí mismo, me di cuenta de lo totalmente inútil que es la idea: upload.wikimedia.org/wikipedia/commons/e/e7 /Timezones2008.png (a menos que estés en aguas internacionales)
Tom
1
Miro ese mapa y creo que el enfoque que sugirió es bastante decente para una estimación aproximada. Yo, por ejemplo, necesito algo bastante aproximado (un par de horas está bien), y dividir la longitud entre 15 parece una buena solución. En el mapa parece que hay muy pocos lugares habitados en la tierra, alrededor de la línea de fecha internacional, donde dividir por 15 lo va a hacer terriblemente mal.
MB.
2
No siempre se recomienda introducir la zona horaria desde un punto de vista político utilizando matemáticas. Pero si uno necesita saber si hay noche o día, este enfoque se puede resolver programáticamente sin ningún servicio web. Gracias por esta idea.
JackPearse
Sí, askgeo.com (divulgación completa: yo dirijo el sitio). Puede comprar una biblioteca Java que haga esto en su propio servidor.
James D
4

Eric Muller ha creado mapas de shapefile para las zonas horarias de la base de datos tz (Olson). Sin embargo, algunas advertencias menores:

  1. Los límites utilizados a menudo no son oficiales.
  2. No se actualiza con tanta regularidad como la propia base de datos tz, por lo que es posible que falten algunas zonas recién formadas o ajustadas.

Aparte de eso, sin embargo, parece ser muy preciso para la mayoría de los propósitos.

Tim Parenti
fuente
0

DRT Engine toma una latitud, longitud y fecha y hora local y devuelve un desplazamiento de zona horaria. Esto se puede utilizar para establecer la zona horaria de una ubicación en particular en una fecha futura .

Jules
fuente