Google 地图维基百科图层

发布于 2024-07-11 10:41:34 字数 94 浏览 4 评论 0原文

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

Is there a way to programmatically list all geo-tagged Wikipedia entries within a radius of a long/lat point? I'm thinking this is possible with the google maps API but I am interested in any method. NOTE: I do not want to display a googlemap.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

想念有你 2024-07-18 10:41:34

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

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

一旦你有了lat/长坐标,我假设是维基页面的地理标记格式,您可以使用 大圆公式< /a> 计算相对距离,并完全绕过 Google 的 API。

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

Yes, it's possible. The hard part is either:

(1) Screen-scraping Wikipedia (bad idea, unless you already have a (small) list of target pages)
(2) Downloading and parsing the massive Wikipedia data sets (better idea)

Once you have lat/long coordinates, which I assume are in the wiki page's geotag format, you can use the great circle formula to compute relative distances, and bypass Google's API entirely.

The moral of this story? When you've dealing with datasets this massive, you're going to want to do as much of it offline as possible.

帅的被狗咬 2024-07-18 10:41:34

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

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

我进一步搜索了一下,发现了一些你感兴趣的东西。 该网络服务称为 findNearByWikipedia。 这可能就是您正在寻找的东西......

I've solved a slightly similar problem by using the GeoNames webservices.

You can use the webservice to request cities and so on. There is a per-ip-limitation you may not exceed.

I searched a little further and there's something interesting for you. The webservice is called findNearByWikipedia. It may be the thing you're searching for...

谢绝鈎搭 2024-07-18 10:41:34

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

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"

Another option is using DbPedia SPARQL interface. For example, the following SPARQL query gets wikipedia articles within bounding box limited by coordinates.

SPARQL libraries widely available, for example for SPARQL Endpoint interface to Python

To test it, just paste the query below to this online query editor:

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

Gets the following result:

"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"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文