【问题标题】:Importing raster data into NetLogo results in a column with all patch variables = 0将栅格数据导入 NetLogo 会导致所有补丁变量 = 0 的列
【发布时间】:2018-07-05 08:53:28
【问题描述】:

当我使用此代码将栅格图层导入 NetLogo 并调整世界大小时,最后一列的所有补丁变量在它应该包含数据时为零。这只发生在同一景观的少数栅格上。

set rasterLayer gis:load-dataset "x.asc"
resize-world 0 (gis:width-of rasterLayer) -1 0 (gis:height-of rasterLayer) -1
gis:set-world-envelope gis:envelope-of rasterLayer
gis: apply-raster rasterLayer 

在调整世界大小时没有“-1”,我会得到一列 NaN 值 (Importing raster data into NetLogo results in a row/column of NaN values)。

这个栅格的尺寸是正确的; 0 值的列不是额外的,这意味着丢失了一些数据。

【问题讨论】:

  • 关于这个问题的更多注意事项:NetLogo 世界的尺寸(166 行,202 列)在我调整大小后与栅格的尺寸相匹配。这是否意味着不应该进行重采样并且在gis: apply-raster 命令之后NetLogo 世界中的所有补丁都应该完全镜像光栅?如何确定 NetLogo 世界和栅格的边界是否对齐?
  • 您是否已经检查过此答案和解决方案? stackoverflow.com/questions/37703137/… 但请记住,建议的解决方案代码示例使用 NetLogo 5 语法。对于 NetLogo 6,您必须调整 foreach 部分(参见 ccl.northwestern.edu/netlogo/docs/dictionary.html#foreach 上的多个列表示例)
  • @Tyr 非常感谢!尽管反复搜索,我以前没有遇到过这个问题和答案。您共享的链接中发布的答案确实解决了问题。唯一的问题是,以这种方式将 ascii 文件应用到 NetLogo 世界需要更长的时间,特别是因为我有大约 15 个已应用的栅格和大约 500 个这样的图块(我已经将一个大景观分割成更易于管理的“图块”稍后将合并以形成景观)我必须为此重复操作。

标签: gis netlogo raster


【解决方案1】:

感谢@Tyr:here 发布了解决此可能错误的方法。这是我为 NetLogo 6 使用的代码,以确保将光栅正确应用于 NetLogo 世界:

 file-open "data/my-folder/my-file.asc"
 let temp []
 repeat 6 [let header file-read-line] ; skip first 6 lines of header
 while [file-not-at-end?][
       set temp lput file-read temp 
]
 file-close
(foreach sort patches temp [
       [a b] -> ask a [ set my-variable b] 
 ] )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多