首页 > 解决方案 > 从 NetLogo 中的栅格数据分配补丁值

问题描述

我正在尝试根据栅格值为 NetLogo 中的补丁分配值:0、1 和 2。这些补丁只需要与我的栅格的值相关,它确实使用灰度正确显示,然后“绘制”自己的颜色分别是蓝色、绿色和白色。

使用 gis 扩展可以很好地加载此栅格数据。在 gis:load-dataset 之后,我尝试使用 apply-raster 命令和 ifelse 来根据值提供选项。我相信我在滥用布尔运算符,但网上很少有例子像我尝试的那样广泛。

patches-own [value]

; Draws raster dataset (terrain of each Millenium) 
to display-terrain
  gis:paint terrain 62

 ask patches [
  (ifelse
    value = 0 [
      set pcolor blue
    ]
    value = 1 [
      set pcolor green
    ]
    ; elsecommands
    [
      set pcolor white
  ])
]
end

我目前无法判断这些值是否被正确分配并不断收到“ifelse 认为这是一个命令块”的错误,所以我认为格式不正确和/或缺少值关联。

标签: gisnetlogoagent-based-modeling

解决方案


实际上,您完全按照文档中的说明使用它,但您可能没有当前版本。NetLogo v6.0.4 中的多项选择ifelse是全新的。您需要显式包含cf扩展名,并且在调用新ifelse语法时需要扩展名。

NetLogo 的早期版本根本不会这样做。您拥有的语法适用于仅在最近几周发布的 v6.1。

试试这个 v6.0.4:

extensions [cf]
patches-own [value]

to testme
  clear-all
  ask patches [ set value one-of [0 1 2] ]
  ask patches [
  (cf:ifelse
    value = 0 [
      set pcolor blue
    ]
    value = 1 [
      set pcolor green
    ]
    ; elsecommands
    [
      set pcolor white
    ])
  ]
end

推荐阅读