我的补丁包含海拔等属性:
set mnt gis:load-dataset "F:/StageM2/Modelisation/Modele/mnt.asc"
gis:apply-raster mnt alt
gis:set-transformation (list 567887.504252 573503.504252 6183200.86463 6187628.86463) (list min-pxcor max-pxcor min-pycor max-pycor)
gis:set-world-envelope gis:envelope-of mnt
海龟是从森林光栅创建的:
to import-foret93
set foret-93 gis:load-dataset "F:/StageM2/Modelisation/Modele/foret76_93.asc"
gis:apply-raster foret-93 f93
使用 [f93 = 1] 询问补丁 [ 设置 pcolor 黑色 设置foret93?真的 ;用 [foret93? 询问 2813 个补丁中的 n 个? =真] [孵化2813]
sprout-arbres 1 [set color pink
set size 4]
] 结束
各图层具有相同的空间参考:RGF1993,因此单位为米。
现在,我想从现有的海龟中创建新的海龟,并在距海龟 150m 的半径内随机创建(新海龟可以在 1m 或 130m 处孵化)。例如,我只要求一只海龟在名为 dispersal-dist 的界面中的输入框给出的距离处孵化一只海龟。
to disp-graines
ask turtle 2918
[
hatch-arbres 1
[
let seedX xcor
let seedY ycor
let ran-bear random 360
lt ran-bear
move-to one-of patches in-radius dispersal-dist
set color magenta
set size 15
]
]
end
但是创建的海龟比以米为单位的分散距离更远。 我是否忘记了以米为单位转换 netlogo 比例的东西?还是其他问题?
虽然您的栅格数据集在您的情况下以米表示,但您的补丁没有真实世界的比例。假设您的栅格具有方形像素,您可以使用以下内容计算补丁比例:
let patch-scale (item 1 gis:world-envelope - item 0 gis:world-envelope ) / world-width
然后您可以在现有代码中使用它:
move-to one-of patches in-radius dispersal-dist / patch-scale
如果栅格中的像素具有不同的现实世界高度和宽度,则必须分别对水平和垂直尺寸进行补丁缩放。