2015-01-15 16 views
1

我是Netlogo的新手,我正在努力解決以下問題,即在空間環境中實施意見動態模型。 我進口GIS光柵有四個不同的土地利用班(值1-4)用下面的代碼:NetLogo - 如何從GIS字典或兩個並行列表中讀取和存儲GIS柵格數據?

to loadData                      
    clear-patches 
    initLandCharacter 
     show "loading landCharacter from file luw6604.asc" 
     set landUse gis:load-dataset landUseDataSet 
     show word "rows : "gis:height-of landUse 
     show word "columns: "gis:width-of landUse 
     gis:set-world-envelope-ds gis:envelope-of landUse 
     gis:apply-raster landUse value 
     resize-world 0 gis:width-of landUse (gis:height-of landUse - (2 * gis:height-of landUse)) 0 

在我的模型3人靜品種應具有在世界的每一個補丁基於不同很有高見某些pxcor pycor的土地使用價值以及此補丁與他們自己的位置之間的距離。

因此,我的想法是創建一個字典或並行列表來存儲位置的鍵以及相應的意見。

但是,經過幾天的努力,我比初學者更困惑,我感到完全失去了。 請,如果有人有任何想法,如何解決這個問題。彷彿GIS數據不是你的問題至關重要,我將非常感激

感謝, 揚

+0

嗨,簡,你想要存儲什麼?您可以定義'varX'和'varX'變量,並在行爲空間中獲取結果,或者將'varX'和'varY'定義爲2個列表並記錄每個ticks的pxcor pycor whit'lput' – delaye 2015-01-15 21:45:45

回答

1

月,它的聲音。以下是否正確?你想爲每一對[補丁,人]存儲一個值 - 一個意見。這個觀點是兩件事的函數:人的品種,人與貼片的距離。以下是我想到的一些想法。以下一些可能會有用。

我看到一些自然的方式來存儲這些信息:在人們

  1. 商店意見。

  2. 將意見存儲在補丁中。

  3. 雙向存儲意見。這需要小心。

  4. 將意見存儲在您可以使用補丁,人員對訪問的單獨數據結構中。

  5. 創建一個單獨的品種的龜叫opinions。 (這可能不會是你想要的。)

1,2或3是否最有用取決於程序的其餘部分需要做什麼。例如,如果我的程序主要用於人員操作,則可能最方便將意見存儲在人員中。例如,我可以使用ask people [...]訪問每個人的意見。

另一個因素是:

如果存儲在人的意見,然後每個人內,將有包含,你必須能夠通過pxcor S和pycor S以訪問意見的數據結構。這可能是一個列表列表,或者您可以使用NetLogo通過擴展提供的二維數據結構之一:數組,表格和矩陣。

如果您將意見存儲在補丁中,您可能可以將它們存儲在列表中,但是您必須有方法找到列表的正確元素。也許每個人都可以有一個特殊的索引號,指出每個補丁的意見清單中哪個元素是與該人對應的那個元素。

如果使用選項4,則可能需要創建3維數據結構(pxcor,pycor和person)。

0

感謝您的建議火星和塞思。

我做了最後使用以下方法工作...

我安裝在安裝補丁一個計數器來分配一個ID,每個補丁:

設計數器0 集專櫃+ 1 設置id計數器

比我計算每個斑塊的每個龜的初始意見,通過使用距離。這裏用於測試模型的代碼:

讓運算0
讓虛設貼劑爲[value> 0]
問龜[
讓TX XCOR 讓TY YCOR 節目「####### #######################################「 ask dummy [ let dist distancexy tx ty show id show value show dist if dist <?和值=? [set op?] if dist <?和值=? [set op?] if dist <?和值=? [set op?] if dist <?和值=? [設定運算?]

if dist > ? and dist < ? and value = ? [set op ?] 
    if dist > ? and dist < ? and value = ? [set op ?] 
     if dist > ? and dist < ? and value = ? [set op ?] 
     if dist > ? and dist < ? and value = ? [set op ?] 

if dist > ? and value = ? [set op ?] 
    if dist > ? and value = ? [set op ?] 
     if dist > ? and value = ? [set op ?] 
     if dist > ? and value = 4 [set op ?] 
show op     

] ]

其結果是,給出了一個補丁ID和基於距離和patch-值的意見的序列。以及所有龜和斑塊之間計算的距離。