2013-04-28 36 views
1

我有一個CouchDB,其中每個文檔都代表地圖上的一個點。此外,每個文檔都有一個ID列表,每個ID代表地圖上鍊接的目標。我想知道是否可以創建一個GeoCouch空間索引,其中的鍵是鏈接的GeoJSON表示(例如LineStrings)。我在下面舉一個例子。使用CouchDB + GeoCouch發佈2 doc的地理位置之間的鏈接

假設我有這2個文件:

{ 
    _id: "doc1", 
    latlng: [52.52, 13.13],  // geoposition of doc1 
    links: ["doc2", "doc3"]  // links to doc2 and doc3 
} 

{ 
    _id: "doc2", 
    latlng: [53.53, 14.14],  // geoposition of doc2 
    links: ["doc1"]    // link to doc1 
} 

我想有是在那裏我可以查詢在給定的邊框中的所有環節空間索引。但是,在運行doc1的CouchDB/GeoCouch映射函數中,我無法訪問doc2的地理位置。

有沒有人看到另一種方式來實現上述情況下的鏈接的空間索引?

回答

0

在Apache CouchDB中,您可以發出鏈接as _id,使用include_docs=true查詢並使用_list函數將其轉換爲任何您想要的值。

不幸的是,GeoCouch不支持include_docs參數,所以它不會在那裏工作。對於GeoCouch,您需要提出兩個請求。首先獲取鏈接,然後通過keys=[the-ids]獲取所有文檔。您可以選擇在View上執行第二個請求,並使用_list函數將GeoJSON取出。

+0

Thx @vmx,目前我在[couchmap](https://github.com/andrenarchy/couchmap)中完全按照您的建議進行。我提交了兩個請求:一個通過GeoCouch索引獲取包含相應鏈接標識的邊界框中的所有節點。第二個請求是一個包含鏈接數組中所有id的普通多讀取請求。所以如果這個解決方案是我可以用GeoCouch實現的最好的解決方案,我很滿意。 :) – andrenarchy 2013-04-29 08:02:25