2012-07-09 60 views
7

我正在處理一個涉及每秒大量實時數據(通過websockets實現)的項目。因此,它無法處理調用Google的API將City + Region轉換爲Longlat座標。我的成功率約爲1至100。有沒有無限的替代城市&地區來協調Google API的服務?理想情況下,這些數據的本地存儲JSON數組?谷歌地圖替代地理定位API

回答

2

通常,當您處理大量數據點時,您需要在服務器上對它們進行一次地理編碼。然後,您可以將經緯度數據流傳輸到您的客戶端以備使用。

谷歌有一個Geocoding web service你可以從你的服務器使用,但有一個2500 /天的請求限制。如果這不起作用,您也可以查看OSM的Nominatim; Mapquest hosts無限制的網絡服務。

+0

一個解決方案不能提高API調用限制,我們總是可以購買更多的津貼,但這是高要求/秒是不可實現的。我同意我們需要流數據中的這些信息,但目前我們手中沒有,我希望鏈接到這樣的信息的開源數組。 – 2012-07-09 16:31:13

+0

如果您無法修改數據源本身,則始終可以代理數據流。讓您的服務器連接到數據源,進行地理編碼,然後將數據+座標流送到客戶端。 – josh3736 2012-07-09 16:36:57

3

看看datasciencetoolkit.org。它們提供可以在EC2上託管的VM映像/ AMI,並可以對您自己的服務器進行地理位置調用,因此不會受到API限制。

然後還有雅虎的地理定位API,它的限制比Google的要高。

5

您可以使用Yahoo提供的服務YQL。這項服務對於數量有限的請求是免費的,每天最多10萬次。然後,您可以從query/results/place/centroid中的響應XML中檢索經度和緯度。

我注意到這個服務的一件事是城市名稱需要精確,並且可能有多個結果。

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

例YQL查詢:

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

響應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 -->