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

有帮助吗?

解决方案

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

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

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

这个故事的寓意?当您处理这么大的数据集时,您将希望尽可能多地脱机处理。

其他提示

我使用 GeoNames webservices 解决了一个类似的问题

您可以使用网络服务来申请城市等。您可能不会超过每个IP限制。

我进一步搜索了一些有趣的东西给你。该Web服务称为 findNearByWikipedia 。这可能是你正在寻找的东西......

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

SPARQL库广泛使用,例如 SPARQL Endpoint 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"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top