freebase获得建筑物和地理位置

时间:2011-04-16 12:37:04

标签: geolocation freebase

我需要让所有具有“教堂”功能的建筑物远离指定点(lat,lng)100公里。我这样做了:

[{
"id":            null,
"name":          null,
"type":          "/architecture/building",
"building_function" : [{"name" : 'church'}],
"/location/location/geolocation" : {"latitude" : 45.1603653, "longitude" : 10.7976976}
"/location/location/area" : 100
}]​

但我总是得到一个空洞的回应

code: "/api/status/ok"
result: []
status: "200 OK"
transaction_id: "cache;cache03.p01.sjc1:8101;2011-04-16T12:32:45Z;0035"

我错过了什么? 感谢

2 个答案:

答案 0 :(得分:0)

/ location / location / area 属性用于查询覆盖特定区域的位置。因此,您的查询将查找以(45.1603653,10.7976976)为中心的建筑物,其面积为100公里。当然没有匹配的结果。

在这些坐标的100公里范围内搜索主题需要更多的工作。您需要使用仍处于alpha状态的Geosearch service。以下查询应该为您提供所需的结果:

http://www.freebase.com/api/service/geosearch?location={%22type%22:%22Point%22,%22coordinates%22:[10.7976976,45.1603653]}&type=/architecture/building&within=100&indent=1

获得建筑物列表后,您可以查询MQL Read API以找出这样的教堂:

[{
  "id": null,
  "name": null,
  "type": "/architecture/building",
  "building_function" : [{"name" : 'church'}],
  "filter:id|=":[
    "/en/verona_arena",
    "/en/basilica_palladiana",
    "/en/teatro_olimpico",
    "/en/palazzo_del_te",
    "/en/villa_capra_la_rotonda",
    "/en/villa_badoer",
    "/en/san_petronio_basilica",
    "/en/palazzo_schifanoia",
    "/en/palazzo_chiericati",
    "/en/basilica_di_santandrea_di_mantova",
    "/en/basilica_of_san_domenico",
    "/en/castello_estense",
    "/en/palazzo_dei_diamanti",
    "/en/villa_verdi",
    "/en/cathedral_of_cremona",
    "/en/monte_berico",
    "/en/villa_pojana",
    "/en/san_sebastiano",
    "/en/cremona_baptistery",
    "/en/palazzo_della_pilotta"
  ]
}]​

现在它只匹配2个结果,因此您可能需要编辑其中一些主题以将其标记为教堂。

答案 1 :(得分:0)

区域不是距离,您可能不希望与值“100”完全匹配。你已经要求那些正好在那个长/纬度的东西,并且确切地说就是那个区域。

您是否正在寻找距离小于一定距离或超过一定距离的教堂?您可能希望查看Geosearch API http://api.freebase.com/api/service/geosearch?help(虽然它不是长期解决方案,因为它已被弃用)