Netlogo:使用.csv作为光栅值的交叉引用

Netlogo:使用.csv作为光栅值的交叉引用,csv,key,netlogo,raster,cross-reference,Csv,Key,Netlogo,Raster,Cross Reference,我正在尝试导入包含土地覆盖代码的光栅文件。一旦光栅将面片变量设置为这些土地覆盖代码,我想将这些代码链接到一个单独的.csv,其中包含每个土地覆盖代码的植被特定参数。因此,每个补丁将根据其土地覆盖代码分配.csv变量。我完全不知道该怎么做。一般来说,如何使用.csv作为交叉引用文件?我没有任何代码示例,但下面是我想要使用的.csv类型的示例: 因此,这个.csv将GR1变量分配给多个土地覆盖代码为GR1的斑块,我肯定同意JenB的观点,尤其是如果您的值表相对较短的话。但是,如果您有很多值,则可以

我正在尝试导入包含土地覆盖代码的光栅文件。一旦光栅将面片变量设置为这些土地覆盖代码,我想将这些代码链接到一个单独的.csv,其中包含每个土地覆盖代码的植被特定参数。因此,每个补丁将根据其土地覆盖代码分配.csv变量。我完全不知道该怎么做。一般来说,如何使用.csv作为交叉引用文件?我没有任何代码示例,但下面是我想要使用的.csv类型的示例:


因此,这个.csv将GR1变量分配给多个土地覆盖代码为GR1的斑块,我肯定同意JenB的观点,尤其是如果您的值表相对较短的话。但是,如果您有很多值,则可以将
csv
扩展一起使用,以创建一个字典,其中“土地覆盖代码”充当检索修补程序其他数据的键。因此,一条途径是:

  • 阅读csv
  • 将其中一列作为键
  • 将其余列保留为值列表
  • 将这两个列表合并为一个列表列表
  • 用这两张单子编一本词典
  • 让每个修补程序在字典中查询感兴趣的值
因此,在这个示例csv表中:

lcover,fuel,type
GR1,15,a
GR2,65,b
GR3,105,a
这些扩展和变量:

extensions [ csv table ]

globals [ csvRaw keyValList dataList patchDataDict ]

patches-own [ land-cover fuel patchType]
我们可以运行一个代码块来执行所有这些步骤(注释中有更多解释):

这将生成一个玩具场景,其中根据基于该csv第一列的查询,为每个补丁分配一个
fuel
patchType
值:


希望这能让您开始

表中的值会发生变化吗?如果没有,我会编写代码,而不是导入csv,因为这样做比键入5行数据和一些
ifelse
set
语句更麻烦。
to setup
  ca
  
  ; Load the csv
  set csvRaw but-first csv:from-file "landCoverMeta.csv"
  print csvRaw 
  
  ; Pull first value (land cover)   
  set keyValList map first csvRaw
  print keyValList
  
  ; Pull data values
  set dataList map but-first csvRaw
  print dataList
  
  ; Combine these two lists into a list of lists
  let tempList ( map [ [ a b ] -> list a b ] keyValList dataList ) 
  
  ; Make a dictionary with the land cover as the key
  ; and the other columns as the value (in a list)
  set patchDataDict table:from-list tempList 
  
  ask patches [
    ; Randomly set patch 'land cover' for this example
    set land-cover one-of [ "GR1" "GR2" "GR3" ]
    
    ; Query the dictionary for the fuel column (item 0 since
    ; we've used landcover as the key) and for the type (item 1)
    set fuel item 0 table:get patchDataDict land-cover
    set patchType item 1 table:get patchDataDict land-cover
  ]
  
  ; Do some stuff based on the retrieved values
  ask patches [
    set pcolor fuel
    if patchType = "a" [
      sprout 1
    ]
  ]
  reset-ticks
end