2013-09-28 39 views
0

我想計算其中位於龜的多邊形與位於多邊形周圍2公里的多邊形之間的邊到邊距,位於烏龜。多邊形由不同的ID表示,每個多邊形由多個貼片組成。我通過下面的代碼獲取了一條錯誤消息「FOREACH預期這個輸入是一個列表,但是代理集合取而代之」。我不明白爲什麼「[plabel = ID-polygon])」的補丁不是一個列表?實際上,我想選擇所有貼圖的標籤等於多邊形的標籤。 謝謝你的幫助。位於緩衝區內的多邊形之間的邊與邊之間的距離

to-report create-edge-turtles [ID-polygon] 
let edge-turtles nobody 
ask ID-polygon [ 
foreach (patches with [plabel = ID-polygon]) [ 
foreach sort neighbors [ 
sprout 1 [ 
    if [plabel] of neighbors != ID-polygon [ 
    face ? 
    fd distance ?/2 
    set edge-turtles (turtle-set edge-turtles self)] ] ] ] ] 
report edge-turtles 
end code here 

to-report edge-distance-between-polygons-in-buffer [indvidual] 
ask individual [ 
set list-ID-polygon-in-buffer ([plabel] of patch-here in-radius 2) 
set list-ID-polygon-in-buffer remove ([plabel] of patch-here) list-ID-polygon-in-buffer 
foreach list-ID-polygon-in-buffer [ 
let ID-polygon-with-individual ([plabel] of patch-here) 
let ID-polygon-in-buffer ? 
let edges-polygon-with-individual create-edge-turtles ID-polygon-with-individual 
let edges-polygon-in-buffer create-edge-turtles ID-polygon-in_buffer 
set distance-patches min [ min [ distance myself ] of edges-polygon-in-buffer ] of edges-polygon-with-individual 
ask edges-polygon-with-individual [ die ] 
ask edges-polygon-in-buffer [ die ] ] ] 
report distance-patches 
end 

回答

1

命令

patches with [plabel = ID-polygon] 

返回agentset,而不是一個列表。要將代理人列表轉換爲列表,只需使用sort關鍵字,因此

sort patches with [plabel = ID-polygon]