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

时间:2015-01-15 15:46:03

标签: gis netlogo

我是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

在我的模型中,根据特定pxcor pycor的土地利用价值以及该补丁与其自身位置之间的距离,3个静态品种的人在世界上的每个补丁上都应该有不同的意见。

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

然而,经过几天的努力,我比在初学期更困惑,我感到完全迷失了。 请,如果有人有任何想法,如何解决这个问题。我将非常感激

谢谢, 扬

2 个答案:

答案 0 :(得分:1)

Jan,听起来好像GIS数据对你的问题不是必不可少的。以下是否正确?你想为每一对[补丁,人]存储一个值 - 一个意见。这种观点是两件事的函数:人的品种,以及人与补丁的距离。以下是我想到的一些想法。以下某些内容可能很有用。

我看到了一些自然的方法来存储这些信息:

  1. 在人们中存储意见。

  2. 在补丁中存储意见。

  3. 双向存储意见。这需要一些照顾。

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

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

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

    另一个因素是:

    如果您将意见存储在人员中,那么在每个人中,将会有一个包含您必须能够通过pxcorpycor访问的意见的数据结构。这可以是列表列表,也可以使用NetLogo通过扩展提供的二维数据结构之一:array,table和matrix。

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

    如果您使用选项4,则可能需要创建三维数据结构(pxcorpycor和人员)。

答案 1 :(得分:0)

感谢Mars和Seth的建议。

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

我在修补程序的设置中安装了一个计数器,为每个补丁分配一个ID:

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

我通过使用距离来计算每个补丁的每只乌龟的初步意见。这里是测试模型的代码:

让操作0 让虚拟补丁[value> 0]
问乌龟[
  让tx xcor   让ty ycor   show" ############################################# #"   问假人[     让dist distxy tx ty     显示ID     显示价值     显示dist     如果dist< ?和价值=? [设置操作?]        如果dist< ?和价值=? [设置操作?]           如果dist< ?和价值=? [设置操作?]              如果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和意见。以及所有乌龟和斑块之间的计算距离。