2012-07-09 8 views
7

Ich arbeite an einem Projekt, das eine riesige Menge an Echtzeitdaten pro Sekunde beinhaltet (durch Websockets erreicht). Aus diesem Grund kann Google nicht die API von Google aufrufen, um eine Stadt + Region in eine Long-Link-Koordinate zu konvertieren. Ich bekomme eine Erfolgsquote von 1 bis 100. Gibt es eine unbegrenzte Alternative zu City & Koordinierungsstelle der Google API? Idealerweise ein lokal gespeichertes JSON-Array solcher Daten?Alternative zu Google Maps Geolocation-API

Antwort

2

Wenn Sie mit einer großen Anzahl von Datenpunkten arbeiten, werden Sie diese normalerweise einmal auf dem Server geocodieren. Dann können Sie die lat/longs zu Ihren Kunden streamen, die Sie verwenden können.

Google hat einen Geocoding web service, den Sie von Ihrem Server verwenden können, aber es gibt ein Anforderungslimit von 2.500/Tag. Wenn das nicht funktioniert, können Sie auch in OSM 's Nominatatim suchen; Mapquest hosts ein Webdienst ohne Grenzen.

+0

Eine Lösung wird die API-Aufruf Grenze nicht zu erhöhen, könnten wir immer mehr Geld kaufen, aber es ist, dass die hohe Anfrage/Sekunde einfach nicht erreichbar ist. Ich stimme zu, dass wir diese Informationen in den gestreamten Daten benötigen, aber das liegt derzeit nicht in unserer Hand. Ich habe auf einen Link zu einem Open-Sourced-Array solcher Informationen gehofft. –

+0

Wenn Sie die Datenquelle selbst nicht ändern können, können Sie den Datenstrom immer als Proxy verwenden. Lassen Sie Ihren Server eine Verbindung zur Datenquelle herstellen, führen Sie die Geocodierung durch und streamen Sie die Daten + Koordinaten dann zu den Clients. – josh3736

3

Werfen Sie einen Blick auf datasciencetoolkit.org. Sie bieten ein VM-Image/AMI, das Sie auf EC2 hosten können und Geolocation-Aufrufe an Ihren eigenen Server und somit keine API-Limits.

Dann gibt es auch Yahoo Geolocation API, die höhere Grenzen als Google hat.

5

Sie können einen von Yahoo bereitgestellten Dienst namens YQL verwenden. Dieser Service ist für eine begrenzte Anzahl von Anfragen kostenlos, bis zu 100.000 pro Tag. Dann können Sie den Breiten- und Längengrad der Antwort-XML unter query/results/place/centroid abrufen.

Eine Sache, die ich mit diesem Service bemerkt habe, ist die Stadt Namen müssen genau sein, und es ist möglich, dass es mehrere Ergebnisse gibt.

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

Beispiel YQL Abfrage:

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

XML Antwort:

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