2011-04-16 24 views
1

我需要獲得距離指定點(lat,lng)100km的「教堂」功能的所有建築物。我這樣做:freebase獲取建築物和地理位置

[{ 
"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" 

我缺少什麼? 謝謝

回答

0

/位置/位置/區域屬性用於查詢覆蓋一定面積的位置。所以你的查詢尋找以(45.1603653,10.7976976)爲中心的建築物,其覆蓋面積爲100km。自然沒有匹配的結果。

在這些座標100km範圍內搜索主題需要多一點工作。您需要使用仍處於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個結果,因此您可能需要編輯其中的一些主題以將它們標記爲教堂。

0

一個區域不是距離,你可能不希望完全匹配值「100」。你要求的東西正好在那個長/緯度,並且恰好在那個區域。

您是否在尋找不到一定距離,超過一定距離或完全給定距離的教堂?您可能想看看Geosearch API http://api.freebase.com/api/service/geosearch?help(雖然它不是一個長期的解決方案,因爲它已被棄用)