2009-01-05 40 views
2

有沒有一種方法來編程列出所有地理標記的維基百科條目在長/拉特半徑範圍內?我認爲這可能與谷歌地圖API,但我對任何方法感興趣。注意:我不想顯示googlemap。谷歌地圖維基百科圖層

回答

3

是的,這是可能的。困難的部分可以是:

(1)屏幕抓取維基百科(壞主意,除非你已經有目標頁面的(小)名單)
(2)下載並解析了大量Wikipedia data sets(好主意)

一旦你有緯度/經度座標,我以爲是在維基頁面的地理標記格式,你可以使用great circle formula來計算相對距離,並繞過谷歌的API完全。

這個故事的寓意是什麼?當你處理這麼龐大的數據集時,你會希望儘可能地使它離線。

2

我已經通過使用GeoNames webservices解決了一個稍微類似的問題。

您可以使用web服務來請求城市等。有一個每IP限制,你可能不會超過。

我搜索遠一點,有對你一些有趣的事情。該webservice被稱爲findNearByWikipedia。這可能是你正在尋找...

1

另一種選擇是使用DBpedia的SPARQL接口的東西。例如,以下SPARQL查詢將獲取由座標限制的邊界框內的維基百科文章。

SPARQL庫廣泛使用,例如用於SPARQL Endpoint interface to Python

爲了測試它,只需粘貼下面這個網上查詢編輯器查詢:

http://dbpedia.org/sparql

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
PREFIX onto: <http://dbpedia.org/ontology/> 

SELECT * WHERE { 
?s a onto:Place . 
?s geo:lat ?lat . 
?s geo:long ?long . 
FILTER (?long > 30.3 && ?long < 30.5 && ?lat > 50.4 && ?lat < 50.5) 
} 

LIMIT 100 

得到以下結果:

"s","lat","long" 
"http://dbpedia.org/resource/Kotsiubynske","50.48972320556641","30.32888793945312" 
"http://dbpedia.org/resource/Akademmistechko_%28Kiev_Metro%29","50.46555709838867","30.35499954223633" 
"http://dbpedia.org/resource/Zhytomyrska_%28Kiev_Metro%29","50.45583343505859","30.36416625976562" 
"http://dbpedia.org/resource/Sviatoshyn_Airfield","50.47833251953125","30.38500022888184"