2012-07-09 24 views
7

Estoy trabajando en un proyecto que implica un gran volumen de datos en tiempo real por segundo (logrado por websockets). Debido a esto, no puede manejar llamar a la API de Google para convertir una ciudad + región a una coordenada longlat. Estoy obteniendo una tasa de éxito de 1 a 100. ¿Existe una alternativa ilimitada a la ciudad & Región para coordinar el servicio de la API de Google? ¿Idealmente una matriz JSON almacenada localmente de tales datos?Alternativa a la API de geolocalización de Google Maps

Respuesta

2

Por lo general, cuando se trata de una gran cantidad de puntos de datos, los geocodificaría una vez en el servidor. Luego puede transmitir los lat/longs a sus clientes listos para usar.

Google tiene un Geocoding web service que puede utilizar desde su servidor, pero hay un límite de solicitud de 2.500/día. Si eso no funciona, también puede consultar el Nominatim OSM; Mapquest hosts un servicio web sin límites.

+0

Una solución no está aumentando el límite de llamada a la API, siempre podemos comprar más subsidio, pero es que la solicitud alta/segundo simplemente no es alcanzable. Acepto que necesitamos esta información en los datos transmitidos, pero que actualmente está fuera de nuestras manos, esperaba un enlace a una matriz de origen abierto de dicha información. –

+0

Si no puede modificar la fuente de datos en sí, siempre puede usar el proxy de la secuencia de datos. Haga que su servidor se conecte a la fuente de datos, haga la geocodificación, luego transmita los datos + las coordenadas a los clientes. – josh3736

3

Eche un vistazo a datasciencetoolkit.org. Ofrecen una imagen VM/AMI que puede alojar en EC2 y realizar llamadas de geolocalización a su propio servidor y, por lo tanto, no tienen límites de API.

Luego, también está la API de geolocalización de Yahoo que tiene límites más altos que los de Google.

5

Puede utilizar un servicio proporcionado por Yahoo llamado YQL. Este servicio es gratuito para un número limitado de solicitudes, hasta 100,000 por día. Luego puede recuperar la latitud y la longitud del XML de respuesta en query/results/place/centroid.

Una cosa que he notado con este servicio es que los nombres de las ciudades deben ser exactos, y es posible que haya múltiples resultados.

http://developer.yahoo.com/yql/

Ejemplo YQL consulta: XML

http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM geo.places WHERE text="Seattle" and placeTypeName = "Town"

Respuesta:

<?xml version="1.0" encoding="UTF-8"?> 
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="1" yahoo:created="2012-07-09T16:20:40Z" yahoo:lang="en-US"> 
    <results> 
    <place xmlns="http://where.yahooapis.com/v1/schema.rng" xml:lang="en-US" yahoo:uri="http://where.yahooapis.com/v1/place/2490383"> 
     <woeid>2490383</woeid> 
     <placeTypeName code="7">Town</placeTypeName> 
     <name>Seattle</name> 
     <country code="US" type="Country">United States</country> 
     <admin1 code="US-WA" type="State">Washington</admin1> 
     <admin2 code="" type="County">King</admin2> 
     <admin3/> 
     <locality1 type="Town">Seattle</locality1> 
     <locality2/> 
     <postal/> 
     <centroid> 
     <latitude>47.603561</latitude> 
     <longitude>-122.329437</longitude> 
     </centroid> 
     <boundingBox> 
     <southWest> 
      <latitude>47.422359</latitude> 
      <longitude>-122.472153</longitude> 
     </southWest> 
     <northEast> 
      <latitude>47.745071</latitude> 
      <longitude>-122.176193</longitude> 
     </northEast> 
     </boundingBox> 
     <areaRank>6</areaRank> 
     <popRank>12</popRank> 
    </place> 
    </results> 
</query> 
<!-- total: 82 --> 
<!-- engine5.yql.mud.yahoo.com -->