谷歌地图***层
Posted
技术标签:
【中文标题】谷歌地图***层【英文标题】:The Google Maps Wikipedia Layer 【发布时间】:2009-01-05 23:22:56 【问题描述】:有没有办法以编程方式列出长/纬点半径内的所有地理标记的***条目?我认为这可以通过谷歌地图 API 实现,但我对任何方法都感兴趣。注意:我不想显示 googlemap。
【问题讨论】:
【参考方案1】:是的,这是可能的。困难的部分是:
(1) 屏幕抓取***(坏主意,除非您已经有一个(小)目标页面列表) (2) 下载并解析海量的Wikipedia data sets(更好的主意)
一旦你有了纬度/经度坐标,我假设它是 wiki 页面的地理标记格式,你可以使用 great circle formula 来计算相对距离,并完全绕过 Google 的 API。
这个故事的寓意是什么?当您处理如此庞大的数据集时,您会希望尽可能多地离线处理。
【讨论】:
【参考方案2】:我使用GeoNames webservices 解决了一个稍微类似的问题。
您可以使用网络服务来请求城市等。您不能超过每个 ip 的限制。
我进一步搜索了一下,发现有一些对你来说很有趣的东西。该网络服务称为findNearByWikipedia
。它可能是您正在寻找的东西......
【讨论】:
【参考方案3】:另一个选项是使用 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"
【讨论】:
以上是关于谷歌地图***层的主要内容,如果未能解决你的问题,请参考以下文章