代码之家  ›  专栏  ›  技术社区  ›  Bjarke Freund-Hansen najhi ullah

反向维基百科地理标记查找

  •  13
  • Bjarke Freund-Hansen najhi ullah  · 技术社区  · 17 年前

    维基百科是 geotagging 一 lot of its articles . (查看页面右上角。)

    是否有用于查询所有 geotagged pages 在地理位置的指定半径内?

    更新

    好吧,根据丢失理论的答案,我试过这个 DBpedia query explorer ):

    PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
    SELECT ?subject ?label ?lat ?long WHERE {
        ?subject geo:lat ?lat.
        ?subject geo:long ?long.
        ?subject rdfs:label ?label.
        FILTER(xsd:float(?lat) - 57.03185 <= 0.05 && 57.03185 - xsd:float(?lat) <= 0.05
            && xsd:float(?long) - 9.94513 <= 0.05 && 9.94513 - xsd:float(?long) <= 0.05
            && lang(?label) = "en"
        ).
    } LIMIT 20
    

    这与我想要的非常接近,只是它返回( local )围绕点而不是圆形。另外,如果结果是根据与点之间的距离排序的,我也希望如此。(如果可能的话)

    更新2

    我试图将欧几里得距离确定为实际距离的近似值,但在SPARQL中对一个数字求平方时遇到了困难。( Question opened here 当我得到一些有用的东西时,我会更新这个问题,但同时,我会感谢对其他方法的任何建议。

    更新3

    最后更新。我放弃了通过dbpedia使用sparql。我已经编写了一个简单的解析器,它在夜间获取维基百科文章文本数据库转储,并解析地理代码的所有文章。它工作得相当好,它允许我存储关于地理标记文章的信息,无论我希望如何。

    这可能是我将继续使用的解决方案,如果我能够创建一个很好的接口,我可能会考虑允许公共API访问和/或将源发布到解析器。

    6 回复  |  直到 13 年前
        1
  •  3
  •   asynja    15 年前

    dbpedia端点使用的openlink virtuoso服务器有几个查询功能。我找到的信息 http://docs.openlinksw.com/virtuoso/rdfsparqlgeospat.html 对于类似的问题很有用。

    最后我问了这样一个问题:

    SELECT ?page ?lat ?long (bif:st_distance(?geo, bif:st_point(15.560278, 58.394167)))
    WHERE{
        ?m foaf:page ?page.
        ?m geo:geometry ?geo.
        ?m geo:lat ?lat.
        ?m geo:long ?long.
        FILTER (bif:st_intersects (?geo, bif:st_point(15.560278, 58.394167), 30))
    }
    ORDER BY ASC 4 LIMIT 15
    

    此示例检索距原点30公里内的地理标记位置。

        2
  •  3
  •   Steven Kryskalla    17 年前

    您应该能够使用SPARQL和 dbpedia . 一个例子(来自 here ):

    SELECT distinct ?s ?la ?lo ?name ?country WHERE {
    ?s dbpedia2:latitude ?la .
    ?s dbpedia2:longitude ?lo .
    ?s dbpedia2:officialName ?name .
    ?s dbpedia2:country ?country .
    filter (
      regex(?country, 'England|Scotland|Wales|Ireland')
      and regex(?name, '^[Aa]')
    )
    }
    

    您可以运行自己的查询 here .

        3
  •  1
  •   Bill the Lizard    17 年前

    上面列出了一些工具 Tools and applications based on coordinates from Wikipedia .我不确定这是不是你要找的,但是 Geosearch.py 工具看起来很酷。

        4
  •  1
  •   Stan James nfaggian    14 年前

    不是一个API,但您也可以下载这组所有地理标记的维基百科文章,并直接在本地数据库中查询: http://www.google.com/fusiontables/DataSource?dsrcid=423292

        5
  •  1
  •   mvark    13 年前

    这个 free GeoNames.org FindNearbyWikipedia service 可以获取给定邮政编码或坐标(纬度、经度)的地理标记文章

    它为每个应用程序提供每天30000个学分的限制(由参数'username'标识),小时限制为2000个学分。信用是对大多数服务点击的Web服务请求。超过限制时引发异常。

        6
  •  0
  •   Guss    17 年前

    我对SPARQL还不够熟悉,但是如果它可以在过滤器中使用幂函数,那么使用毕达哥拉斯定理(a^2+b^2=c^2)就可以很容易地计算出给定文章与给定点之间的距离,这样就可以得到半径内的所有文章。

    另一个选择是 Wikipedia data dump 然后自己处理——这就是我在需要对维基百科文章进行语言分析时所做的。