2009-01-05 38 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"