如何在 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-here
的 patches-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
我想知道如何在 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-here
的 patches-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