是否可以导入不同的文件?

时间:2018-03-15 11:31:17

标签: netlogo

首先,如果这是一个愚蠢的问题,我很抱歉,因为我是Netlogo的新手。

我已经完成了Steven Railsback和Volker Grimm书中的蝴蝶模型,并且有一个练习来导入一个具有坐标X Y的文件和一个在该示例中为高程的变量。到目前为止,好的。但我现在正在尝试实现一个模型,其中我们有4个不同的文件,每个文件包含相同的坐标但不同的变量,我的问题是:是否可以导入这4个文件并在我们的“环境”中有4个不同的变量?

1 个答案:

答案 0 :(得分:2)

只是为了确保你正在使用" ElevationData.txt"找到文件here,对吗?因此,您的文件阅读代码应该与Railsback and Grimm本书中显示的内容大致相同:

file-open "ElevationData.txt"                          
  while [not file-at-end?] [
    let next-X file-read                                 
    let next-Y file-read
    let next-elevation file-read                         
    ask patch next-X next-Y [set elevation next-elevation]
  ]
  file-close

因此,如果您要导入的其他文件大多与" ElevationData.txt"相同。文件,但在第三列中具有不同的值,您绝对可以相应地修改该代码块。如果我们以植被覆盖为例,您需要patches-own变量,以及已存在的elevation变量:

patches-own [ elevation veg-cover ]

现在假装你有一个" VegetationData.txt"文件看起来像:

0 0 0.86
1 0 0.15
2 0 0.42
3 0 0.44
4 0 0.43
5 0 0.33
...

运行高程导入后,您可以使用植被完成相同的操作:

  file-open "VegetationData.txt"                          
  while [not file-at-end?] [
    let next-X file-read                                 
    let next-Y file-read
    let next-veg-cover file-read                         
    ask patch next-X next-Y [set veg-cover next-veg-cover]
  ]
  file-close

现在,您的修补程序将为其elevationveg-cover变量分配值。

也就是说,如果可能的话,将输入文件组合在一起并加载它们会更好。如果您有一个组合的Elevation和Vegetation文本文件,如下所示:

0 0 532.4 0.86
1 0 529.3 0.15
2 0 526 0.42
3 0 520 0.44
4 0 519.5 0.43
5 0 519.3 0.33
...

在组合数据集(" ComboData.txt")中,您仍然拥有x和y列,但现在第三列是高程,第四列是植被覆盖。现在,您可以通过稍微修改导入代码来同时加载所有内容:

  file-open "ComboData.txt"                          
  while [not file-at-end?] [
    let next-X file-read                                 
    let next-Y file-read
    let next-elev file-read
    let next-veg-cover file-read                         
    ask patch next-X next-Y [
      set elevation next-elev
      set veg-cover next-veg-cover
    ]
  ]
  file-close