使用C#查找包含Wikipedia中坐标的地点的链接

时间:2016-02-18 11:35:26

标签: c# hyperlink wikipedia wikipedia-api mediawiki-api

对于我的项目,我需要列出City内许多有趣的地方。例如在柏林维基百科页面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来提取包含地理坐标信息的链接。所以我想获得包含Geoinformation的所有地方链接的方法是什么。

2 个答案:

答案 0 :(得分:1)

维基百科有一个很好的Geo Search API,可以让您搜索附近的页面:

https://en.wikipedia.org/w/api.php?action=query&list=geosearch&gsradius=10000&gspage=Berlin&gslimit=500&gsprop=type|name|dim|country|region|globe&format=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使用任何维基百科文章with geographic coordinates的标题进行搜索。您会看到一些地理标记的历史事件,地标和其他功能,因此您可以添加gsprop=type来添加属性,以帮助您过滤您不感兴趣的文章。

一些注意事项:

  • API(目前)只能返回最多500个项目,这些项目位于您正在搜索的点的10,000米半径范围内。如果你没有得到你想要的一切,你可能想尝试一系列更窄的搜索或使用一个小的边界框(带有gsbbox参数)。

  • 维基百科的每种语言都有自己的API端点。您可以尝试same query on the German language Wikipedia,但可能会看到略有不同的结果。

  • 维基数据使用SPARQL interface跨语言提供大量数据,但不支持地理坐标搜索(yet)。有一天,您可以使用维基数据根据其位置查找项目(P625)。

答案 1 :(得分:0)

您可以使用API​​获取每个链接页面获取坐标。然后,您可以忽略所有没有任何坐标的链接页面来处理它。

查询如下所示:

https://en.wikipedia.org/w/api.php?action=query&generator=links&titles=Berlin&prop=coordinates&gpllimit=max&colimit=max

请注意,链接页面包含与柏林完全无关的页面,例如Aachen。

更好的方法可能是搜索坐标靠近柏林某一点的页面。