如何在 NetLogo 6.2 中导出 .ASCII 文件?

How to export .ASCII file in NetLogo 6.2?

我想知道如何在 NetLogo 6.2 中将 .csv 文件转换为光栅 (ASCII) 文件?

好吧,我可以导出为 .csv,稍后在另一个程序(例如 R)中以 .ASCII 格式进行转换。但是,我认为应该可以通过 NetLogo 本身以 .ASCII 格式导出输出。同时,我想知道在处理方面,通过 NetLogo 或 .ASCII 将输出导出为 .csv 更好吗? obs.: 我在NetLogo上的世界比较大

提前致谢

extensions [ gis ]

globals [ file output-filename ]

to setup
  clear-all
  reset-ticks
  set output-filename "output-data.csv"
  set-default-shape turtles "person"
  create-turtles 10 [
    setxy random-pxcor random-pycor
  ]
  initialize-data-file

end

to initialize-data-file 
  file-close-all    
  if file-exists? output-filename [
    file-delete output-filename
  ]     
  file-open output-filename
  file-print ( word "xcor, ycor" ) 
end

to go
  ask turtles [
    wander-about 
    if ticks mod 50 = 0  [    
      write-output-data who xcor ycor
    ]
  ]
  tick
end

to write-output-data [ #turtle-id #xpos #ypos ]
  file-open output-filename
  file-print ( word #xpos ", " #ypos )
  file-flush
  
  ; set file gis:patch-dataset xcor ycor
  ;  gis:store-dataset file "test.asc"
  
end

to wander-about 
  rt random 40
  lt random 40
  if not can-move? 1 [ rt 180 ]
  fd 1
end

您使用 GIS 扩展程序直接导出为 ASCII 的方向正确。您是否真的需要这样做完全取决于您的应用程序 - 正如您所说,根据您的需要,只需导出海龟坐标列表或补丁值列表等,就可以完成您需要的操作。您应该使用 ASCII 还是 csv 将取决于您的应用程序,但是:对于我实际上需要导出整个世界进行分析的所有较大模型(更重要的是,走另一条路,将我的空间数据 导入 NetLogo),我总是使用 GIS 扩展,因为它似乎要快得多。如果我只导出海龟特征,我可能会导出到 csv。

在这里回答您有关如何直接导出到 ASC 的具体问题 - 这是一种方法。您需要为 GIS 扩展设置一些空间信息以处理您的数据,但是完成后,您可以从补丁值创建栅格数据集并将其导出到一个 .ASC 文件,该文件将包含 .ASC header 除了你世界中每个补丁的价值。用这个例子:

extensions [ gis ]

patches-own [ turtle-here ]

to setup
  ca
  resize-world 0 14 0 14
  ; Pull in some coordinate system 
  gis:load-coordinate-system "utm_11.prj"
  ; Set some envelope. Unless you are actually spatially
  ; referencing your model, this is just a placeholder. 
  ; If you are using actual spatial coordinates, set these
  ; appropriately or use gis:envelope-of
  gis:set-world-envelope [ 55000 50000 55000 50000 ]
  crt 10
  reset-ticks
end


to go
  ask turtles [
    rt random 80 - 40
    ifelse not can-move? 1
    [ rt 180 ]
    [ fd 1 ]
  ]

  if ticks = 50 [
    export-ascii
    stop
  ]
  tick
end

to export-ascii
  ask patches with [ any? turtles-here ] [
    set turtle-here 1
  ]
  let ras_out gis:patch-dataset turtle-here
  gis:store-dataset ras_out "any_turtle_here.asc"
end

这会导出一个存储名为 turtle-herepatches-own 变量的 ascii 文件,该文件仅指示导出时补丁上是否存在乌龟:

NCOLS 15
NROWS 15
XLLCORNER 50000
YLLCORNER 50000
CELLSIZE 333.333333
NODATA_VALUE NaN
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 
0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0