在GIS空间内随机定位代理

问题描述 投票:0回答:1

我希望将固定数量的“人员”代理随机放置到我的带有区域的 GIS 空间中。我目前有一个表,其中有一列用于区域,并且在我的 GIS 地图中具有相同名称的 GIS 区域。 每个“人”都有一个参数“区域”,我将表中“区域”列的值映射到该参数。然后我需要找到某种方法将代理的位置设置为指定区域内的随机点。

我已经尝试过:

GISRegion myRegion = main.map.searchFirstRegion(region);
Point pt = myRegion.randomPointInside();
setXYZ( pt.x, pt.y, pt.z ); 

在我的个人代理的“启动时”字段中,但似乎

main.map.searchFirstRegion(region);
不能很好地获取正确的区域,因为代理分布在没有区域的地方(即在海中): Image

理想情况下,我想使用

void setLocation(region)
setLocation
接受 Point 或 INode 变量,而“region”参数是字符串。有没有办法按名称搜索区域列表中的匹配区域并返回该区域? 谢谢!

anylogic
1个回答
0
投票

您可能缺少初始化顺序的一些问题。

将事件添加到您的代理类型中,使其在模型启动后 0.1 秒触发并执行您的代码(在需要时应用正确的链接返回

main
)。

如果这不起作用,请对代码进行一些跟踪。它能识别一切吗?

© www.soinside.com 2019 - 2024. All rights reserved.