使用 C# 查找包含维基百科坐标的地方的链接
本文关键字:坐标 百科 链接 查找 包含维 使用 | 更新日期: 2023-09-27 18:35:07
对于我的项目,我需要列出城市中许多有趣的地方。比如在柏林维基百科页面 https://en.wikipedia.org/wiki/Berlin 有很多有趣的地方链接,如柏林国家歌剧院链接 https://en.wikipedia.org/wiki/Berlin_State_Opera、柏林动物园、链接 https://en.wikipedia.org/wiki/Berlin_Zoological_Garden 等等。所有这个地方的右上角都有坐标,像这样坐标52°30′30"N 13°20′15"ECoordinates:52°30′30"N 13°20′15"E。所以我想做的是,我只想从维基百科文章中获取包含坐标信息的链接。好吧,我已经阅读了一些文章,但是有任何api来提取包含地理坐标信息的链接。所以我想有什么方法可以获取包含地理信息的所有地点链接。
维基百科有一个很好的地理搜索API,可以让你搜索附近的页面:
https://en.wikipedia.org/w/api.php?action=query&list=geosearch&gsradius=10000&gspage=Berlin&gslimit=500&gsprop=type|名称|暗淡|国家|地区|全球&格式=JSON
{
"batchcomplete": "",
"query": {
"geosearch": [
...
{
"pageid": 391156,
"ns": 0,
"title": "Berlin State Opera",
"lat": 52.516666666667,
"lon": 13.395,
"dist": 789.4,
"primary": "",
"type": "landmark",
"name": "",
"dim": 1000,
"country": "DE",
"region": "BE"
},
...
{
"pageid": 1005900,
"ns": 0,
"title": "Berlin Zoological Garden",
"lat": 52.508333333333,
"lon": 13.3375,
"dist": 3237.1,
"primary": "",
"type": "landmark",
"name": "",
"dim": 500,
"country": "DE",
"region": "BE"
},
...
您可以使用gspage
使用带有地理坐标的任何维基百科文章的标题进行搜索。您将看到一些带有地理标记的历史事件、地标和其他要素,因此您可以添加gsprop=type
以添加属性,以帮助您筛选不感兴趣的文章。
一些注意事项:
API (当前)最多只能返回您正在搜索的点 10,000 米半径范围内的 500 个项目。如果您没有得到想要的所有内容,您可能需要尝试一系列更窄的搜索或使用小边界框(带有
gsbbox
参数)。维基百科的每种语言都有自己的API端点。您可以在德语维基百科上尝试相同的查询,您可能会看到略有不同的结果。
维基数据通过SPARQL界面拥有跨语言的大量数据,但它(尚不支持地理坐标搜索)。有一天,您可以使用维基数据根据项目的位置查找项目(P625)。
您可以使用 API 获取每个链接页面的所有链接页面以获取坐标。然后,您可以通过忽略所有没有任何坐标的链接页面来处理它。
查询将如下所示:
https://en.wikipedia.org/w/api.php?action=query&generator=links&titles=Berlin&prop=coordinates&gpllimit=max&colimit=max
请注意,链接的页面包括与柏林完全无关的页面,例如亚琛。
更好的方法可能是搜索坐标靠近柏林某个点的页面。