Image 在NetLogo中导出部分视图

Image 在NetLogo中导出部分视图,image,netlogo,Image,Netlogo,我想,给定一个海龟列表,将视图中包含这些海龟的部分导出为图像。能够导出由一组边界指定的视图的一部分将解决此问题。也就是说,像export view of turtles list of turtles或export view rectangle min xcor max xcor min ycor max ycor这样的函数是理想的 显然,一个完全在NetLogo中工作的解决方案是最好的,但我发现这不太可能:导出视图是我所知道的唯一一个导出视图图像的函数,而这只会导出整个视图。然而,如果有一个插

我想,给定一个海龟列表,将视图中包含这些海龟的部分导出为图像。能够导出由一组边界指定的视图的一部分将解决此问题。也就是说,像
export view of turtles list of turtles
export view rectangle min xcor max xcor min ycor max ycor
这样的函数是理想的

显然,一个完全在NetLogo中工作的解决方案是最好的,但我发现这不太可能:
导出视图
是我所知道的唯一一个导出视图图像的函数,而这只会导出整个视图。然而,如果有一个插件,这将是可怕的


我最后的办法是导出视图,然后运行相应的脚本对其进行剪辑。如果没有更好的解决方案,我会这样做,然后发布脚本。

好吧,这有点脏,但似乎有效。基本上,下面的内容在一个临时文件中导出世界状态,记录有关海龟的数据,根据海龟与中心的距离调整视图大小,根据记录的数据仅重新创建海龟,导出视图,然后恢复原始世界状态。代码如下:

to export-view-of-turtles [ filename the-turtles ]
  let center-patch min-one-of patches [ sum [ (distance myself ^ 2) ] of the-turtles ]
  let turtle-props [ (list
       (- distance center-patch * sin towards center-patch) ; xcor relative to center patch
       (- distance center-patch * cos towards center-patch) ; ycor relative to center patch
       heading size shape label color
  ) ] of the-turtles
  let max-x max map [ first ? + item 3 ? ] turtle-props
  let min-x min map [ first ? - item 3 ? ] turtle-props
  let max-y max map [ item 1 ? + item 3 ? ] turtle-props
  let min-y min map [ item 1 ? - item 3 ? ] turtle-props
  let world-state-backup (word "temp-world-" date-and-time ".csv")
  export-world world-state-backup
  resize-world min-x max-x min-y max-y
  foreach turtle-props [
    crt 1 [
      setxy first ? (item 1 ?)
      set heading (item 2 ?)
      set size (item 3 ?)
      set shape (item 4 ?)
      set label (item 5 ?)
      set color (item 6 ?)
    ]
  ]
  export-view filename
  import-world world-state-backup
  file-delete world-state-backup
end
使用示例。鉴于:

调用turtle 85的导出视图“test.png”[turtles in radius 5]给出:

注:

  • 这完全支持世界包装
  • 它只会显示给定的海龟。补丁、绘图层和其他海龟将不会显示。这就是说,它可以很容易地修改,使他们补丁和其他海龟显示
  • 与任何使用导入和导出世界的代码一样(不推荐用于这种情况),这可能会在许多情况下出现问题

任何涉及进出口世界的东西都可能是脆弱的,但是,如果它在您的用例中起作用的话。为了减少黑客行为,你必须编写一个扩展。我开始考虑一种不同的黑客行为,有不同的优缺点。你在哪里使用了
stamp
export drawing
,但是Bryan提醒我,出于某种原因(也许根本没有什么好的理由),这种语言缺少
export drawing
。它确实以API调用的形式存在。