2012-07-09 12 views
7

Saniyede çok büyük miktarda gerçek zamanlı veri içeren bir projede çalışıyorum (websockets tarafından sağlanan). Bu nedenle, Google'ın API'sini bir Şehir + Bölgeyi bir longlat koordinatına dönüştürmek için kullanamaz. 1 ila 100 başarı oranı elde ediyorum. Google API'nın Koordinatör hizmeti için & Bölgesi'ne sınırsız bir alternatif var mı? İdeal olarak bu tür verilerin yerel olarak depolanmış bir JSON dizisi?Google Maps Geolocation API'ye alternatif

cevap

2

Genellikle çok sayıda veri noktasıyla uğraşırken, bunları bir kez sunucuda kodlarsınız. Daha sonra, lat/long'ları müşterilerinize kullanıma hazır olarak aktarabilirsiniz.

Google, sunucunuzdan kullanabileceğiniz bir Geocoding web service sahiptir, ancak 2,500/gün istek sınırı vardır. Bu işe yaramazsa, OSM'un Nominatim'ine de bakabilirsiniz; Mapquest hosts sınırsız bir web hizmeti.

+0

bir çözüm API çağrısı sınırını artmıyor, her zaman daha ödenek alabilir ama olabilir yüksek istek/saniye sadece ulaşılabilir değil. Aktarılan verilerde bu bilgiye ihtiyacımız olduğunu kabul ediyorum, ancak şu anda ellerimizin dışında kalıyor, böyle bir bilginin Açık Kaynaklı dizisine bir bağlantı olmasını umuyordum. –

+0

Veri kaynağını kendisi değiştiremezseniz, her zaman veri akışını proxy edebilirsiniz. Sunucunuzun veri kaynağına bağlanmasını sağlayın, coğrafi kodlamayı yapın, ardından verileri + akışları istemcilere aktarın. – josh3736

3

datasciencetoolkit.org'a bir göz atın. EC2 üzerinde barındırabileceğiniz ve kendi sunucunuza coğrafi konum aramaları yapabileceğiniz ve dolayısıyla API sınırları olmayan bir sanal makine görüntüsü/AMI sunarlar.

Ayrıca, Yahoo'ların Google’dan daha yüksek limitlere sahip coğrafi konum belirleme API'si de var.

5

Yahoo tarafından YQL adı verilen bir hizmeti kullanabilirsiniz. Bu hizmet, günde 100.000'e kadar sınırlı sayıda istek için ücretsizdir. Sonra enlem ve boylamı yanıt XML'inde sorgu/sonuç/yer/centroid'e alabilirsiniz.

Bu hizmetle farkettiğim bir şey şehir isimlerinin tam olması gerektiğidir ve birden çok sonuç olması mümkündür.

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

Örnek YQL sorgusu:

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

Tepki XML:

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