2012-07-09 16 views
7

Pracuję nad projektem, który wymaga dużej ilości danych w czasie rzeczywistym na sekundę (osiągniętych przez websockets). Z tego powodu nie radzi sobie z wywołaniem interfejsu API Google'a w celu konwersji regionu City + do długiej współrzędnej. Osiągam wskaźnik sukcesu od 1 do 100. Czy istnieje nieograniczona alternatywa dla regionu City & do usługi Coordinate interfejsu API Google? Idealnie lokalnie przechowywane tablice JSON takich danych?Alternatywa Google Maps Geolocation API

Odpowiedz

2

Zwykle, gdy masz do czynienia z dużą liczbą punktów danych, możesz geokodować je raz na serwerze. Następnie możesz przesyłać strumienie/longs do swoich klientów, gotowe do użycia.

Google ma numer Geocoding web service, którego można używać z poziomu serwera, ale istnieje limit żądań wynoszący 2500/dzień. Jeśli to nie zadziała, możesz również zajrzeć do Nominatim z OSM; Mapquest hosts Usługa internetowa bez ograniczeń.

+0

rozwiązanie nie jest zwiększenie limitu połączeń API, możemy zawsze kupić więcej zasiłku, ale to, że wysokie żądanie/sekunda właśnie nie jest osiągalne. Zgadzam się, że potrzebujemy tych informacji w przesyłanych strumieniowo danych, ale to jest obecnie w naszych rękach, miałem nadzieję na link do tablicy z otwartym źródłem takich informacji. –

+0

Jeśli nie można zmodyfikować samego źródła danych, zawsze można podać serwerowi proxy strumień danych. Niech twój serwer połączy się ze źródłem danych, zrób geokodowanie, a następnie wyślij dane do współrzędnych. – josh3736

3

Spójrz na datasciencetoolkit.org. Oferują obraz maszyny wirtualnej/AMI, który można hostować na EC2 i wykonywać połączenia geolokalizacyjne na własny serwer, a zatem nie ma ograniczeń API.

Następnie jest także interfejs API geolokalizacji Yahoo, który ma wyższe limity niż Google.

5

Możesz skorzystać z usługi świadczonej przez Yahoo o nazwie YQL. Ta usługa jest bezpłatna w przypadku ograniczonej liczby wniosków, do 100 000 dziennie. Następnie możesz pobrać szerokość i długość geograficzną z pliku XML odpowiedzi w zapytaniu/wynikach/miejscu/centrum.

Jedna rzecz, którą zauważyłem w tej usłudze, to nazwy miast muszą być dokładne i możliwe jest uzyskanie wielu wyników.

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

Przykład YQL kwerendy XML

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

Response:

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