NetLogo - 如何在字典或两个并行列表中读取和存储来自 GIS 栅格的数据?

NetLogo - How to read and store data from GIS raster in a dictionary or two parallel list?

我是 Netlogo 的新手,在空间上下文中实施意见动态模型时,我正在努力解决以下问题。 我使用以下代码导入了具有四种不同土地利用 类(值 1-4)的 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 的土地使用价值以及该补丁与他们自己所在位置之间的距离,对世界上每个补丁有不同的看法。

因此,我的想法是创建一个字典或并行列表来存储位置键以及相应的意见。

然而,经过几天的努力,我比开始时更加困惑,我感到完全迷失了。 请,如果有人有任何想法,如何解决这个问题。非常感谢

谢谢, 一月

Jan,听起来 GIS 数据对您的问题来说不是必需的。以下是正确的吗?您想要为每一对 [patch, person] 存储一个值——一个意见。这种观点是两件事的函数:人的品种,以及人与补丁的距离。以下是我的一些想法。以下一些可能有用。

我看到了一些存储此信息的自然方式:

  1. 将意见存储在人中。

  2. 在补丁中存储意见。

  3. 双向存储意见。这需要一些小心。

  4. 将意见存储在单独的数据结构中,您可以使用补丁、人对访问。

  5. 创建一个名为 opinions 的单独品种的海龟。 (这可能不是你想要的。)

1、2 或 3 是最有用的取决于程序的其余部分需要做什么。例如,如果我的程序将主要对人进行操作,那么将意见存储在人中可能是最方便的。然后我可以使用 ask people [...] 访问每个人的意见。

另一个因素是:

如果您将意见存储在人身上,那么在每个人内部,都会有一个包含意见的数据结构,您必须能够通过 pxcors 和 pycors 访问这些意见。这可以是列表的列表,或者您可以使用 NetLogo 通过扩展提供的二维数据结构之一:数组、table 和矩阵。

如果您将意见存储在补丁中,您也许可以将它们存储在列表中,但您必须有一种方法来找到列表中的正确元素。也许每个人都可以有一个特殊的索引号,指示每个补丁的意见列表中的哪个元素对应于该人。

如果您使用选项 4,您可能需要创建一个 3 维数据结构(pxcorpycor 和人物)。

感谢 Mars 和 Seth 的建议。

我最终使用以下方法让它工作...

我在补丁设置中安装了一个计数器来为每个补丁分配一个 id:

让计数器0 设置计数器计数器 + 1 设置 ID 计数器

然后我通过使用距离计算了每个补丁中每只海龟的初始意见。这里是测试模型的代码:

让操作 0
让虚拟补丁具有 [value > 0]
问海龟[
让 tx xcor 让 ty ycor 展示 ”##############################################” 问假人[ 让 dist distancexy tx ty 显示编号 显示价值 显示距离 如果距离<?和价值=? [设置操作?] 如果距离<?和价值=? [设置操作?] 如果距离<?和价值=? [设置操作?] 如果距离<?和价值=? [设置操作 ?]

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 和基于距离和补丁值的意见。以及所有海龟和补丁之间的计算距离。