2

有没有办法以编程方式列出长/纬点半径内的所有地理标记的维基百科条目?我认为这可以通过谷歌地图 API 实现,但我对任何方法都感兴趣。注意:我不想显示 googlemap。

4

3 回答 3

3

是的,这是可能的。困难的部分是:

(1)屏幕抓取维基百科(坏主意,除非你已经有一个(小)目标页面列表)
(2)下载和解析大量的维基百科数据集(更好的主意)

一旦你有了纬度/经度坐标,我假设它是维基页面的地理标记格式,你可以使用大圆公式来计算相对距离,并完全绕过谷歌的 API。

这个故事的寓意是什么?当您处理如此庞大的数据集时,您将希望尽可能多地离线处理。

于 2009-01-05T23:41:05.673 回答
2

我通过使用GeoNames webservices解决了一个稍微类似的问题。

您可以使用网络服务来请求城市等。您不能超过每个 ip 的限制。

我搜索得更远了,你发现了一些有趣的东西。该网络服务称为findNearByWikipedia. 它可能是你正在寻找的东西......

于 2009-01-06T07:01:28.903 回答
1

另一种选择是使用 DbPedia SPARQL 接口。例如,以下 SPARQL 查询在受坐标限制的边界框中获取 wikipedia 文章。

SPARQL 库广泛可用,例如用于Python 的 SPARQL Endpoint 接口

要对其进行测试,只需将以下查询粘贴到此在线查询编辑器中:

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"
于 2012-02-08T05:28:04.190 回答