2012-07-09 15 views
7

Sto lavorando a un progetto che comporta un volume enorme di dati in tempo reale al secondo (raggiunti da Websockets). Per questo motivo, non può gestire la chiamata dell'API di Google per convertire una città + regione in una coordinata longlat. Sto ottenendo un tasso di successo da 1 a 100. Esiste un'alternativa illimitata al City & dal servizio Region to Coordinate dell'API di Google? Idealmente un array JSON memorizzato localmente di tali dati?Alternativa all'API di geolocalizzazione di Google Maps

risposta

2

Di solito quando si ha a che fare con un numero elevato di punti dati, li si geocodifica una volta sul server. Quindi è possibile eseguire lo streaming di lat/long per i client pronti per l'uso.

Google ha un Geocoding web service che è possibile utilizzare dal proprio server, ma esiste un limite di richieste di 2.500/giorno. Se questo non funziona, puoi anche cercare in Nominatim OSM; Mapquest hosts un servizio web senza limiti.

+0

Una soluzione non sta aumentando il limite di chiamata API, potremmo sempre comprare più indennità, ma è che l'alta richiesta/secondo non è realizzabile. Sono d'accordo sul fatto che abbiamo bisogno di queste informazioni nei dati in streaming, ma che è attualmente fuori dalle nostre mani, speravo in un collegamento a un array Open Source di tali informazioni. –

+0

Se non è possibile modificare l'origine dati, è sempre possibile eseguire il proxy del flusso di dati. Chiedi al tuo server di connettersi all'origine dati, eseguire la geocodifica, quindi trasmettere i dati + le coordinate ai client. – josh3736

3

Dai un'occhiata a datasciencetoolkit.org. Offrono una VM image/AMI che puoi ospitare su EC2 e fare chiamate di geolocalizzazione al tuo server e quindi nessun limite API.

Poi c'è anche l'API di geolocalizzazione di Yahoo che ha limiti più alti di quelli di Google.

5

È possibile utilizzare un servizio fornito da Yahoo denominato YQL. Questo servizio è gratuito per un numero limitato di richieste, fino a 100.000 al giorno. Quindi è possibile recuperare latitudine e longitudine dall'XML di risposta a query/results/place/centroid.

Una cosa che ho notato con questo servizio è che i nomi delle città devono essere precisi, ed è possibile che ci siano più risultati. interrogazione

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

Esempio YQL: XML

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

Risposta:

<?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 --> 
Problemi correlati