1

我需要获取距离指定点(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"

我错过了什么?谢谢

4

2 回答 2

0

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

在这些坐标的 100 公里范围内搜索主题需要更多的工作。您需要使用仍处于 alpha阶段的Geosearch 服务。以下查询应为您提供您正在寻找的结果:

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 读取 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 个结果,因此您可能需要编辑其中一些主题以将它们标记为教堂。

于 2011-04-17T03:45:15.663 回答
0

区域不是距离,无论如何您可能不希望与值“100”完全匹配。你要求的东西正好在那个长/纬度并且正好有那个区域。

您是在寻找小于某个距离、大于某个距离或恰好是给定距离的教堂吗?您可能想查看 Geosearch API http://api.freebase.com/api/service/geosearch?help(尽管它已被弃用,因此不是长期解决方案)

于 2011-04-17T03:47:45.287 回答