NetLogo,如何在Gis层上孵化一定距离的乌龟

时间:2014-07-15 14:39:36

标签: gis distance netlogo

我的补丁包含高程等属性

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,因此以米为单位。

现在,我想从现有的海龟中创造出新的海龟,并在距海龟150米半径范围内随机创建(新海龟可以在1米或130米处孵化)。举例来说,我只要求一只乌龟在一个名为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规模的东西吗?或者这是另一个问题?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

虽然您的栅格数据集以米为单位表示,但您的补丁没有真实世界范围。假设您的栅格具有方形像素,则可以使用以下内容计算补丁比例:

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

如果栅格中的像素具有不同的真实世界高度和宽度,则必须分别为水平和垂直尺寸执行贴片缩放。