该地图具有地理信息系统区域,由多个区域相互分离而成。例如:

如果我尝试用下面的方法在这个GIS区域生成一个随机的GIS点:
gisPoint = gisRegion.randomPointInside();任何逻辑只在GIS区域的一个区域生成它们(我不明白它是如何选择特定区域的)!我该如何解决这个问题?
谢谢你的帮忙!
发布于 2022-07-21 06:45:37
那么你就会自动有一个多区域,对吗?如果创建由多个区域组成的区域,则项目树中还应该有一个多区域可见。
然后,您仍然可以使用上面描述的相同的逻辑,然后代码是:
GISRegion region = Nederland.randomRegionInside();
Point gisPoint = region.randomPointInside();
myAgents(0).setLocation(gisPoint);

好的,所以如果您使用的是map.searchFirstRegion(municipalityName)方法,它显然不能按您的意愿工作,因为仍然有两个区域,它只选择第一个区域。例如,如果你对美国采取同样的做法,它就会继续在美国众多地区中的一个--一个小岛上--部署特工。所以你使用的方法是不正确的。
由于这是一个由2个区域组成的区域,这是一个多区域。因此,与其寻找第一个区域,不如寻找第一个多区域。为此,您可以使用如下代码:
GISMultiRegion multiregion = map.searchFirstMultiRegion("United States of America");
GISRegion region = multiregion.randomRegionInside();
Point gisPoint = region.randomPointInside();
myAgents(0).setLocation(gisPoint);发布于 2022-07-19 13:09:14
看起来gisRegion只是其中的一个区域吗?如果是的话,在一个区域内只选择一个随机点是有意义的。
要解决这个问题,您可以尝试这样的方法(我自己就知道了):
首先创建一个多区域并将两个区域添加到其中。然后选择一个随机区域。然后对于这个随机区域,在这个区域内选择一个随机点。
GISMultiRegion multiregion = new GISMultiRegion();
multiregion.add(gisRegion);
multiregion.add(gisRegion1);
GISRegion region = multiregion.randomRegionInside();
Point gisPoint = region.randomPointInside();
myAgents(0).setLocation(gisPoint);https://stackoverflow.com/questions/73023838
复制相似问题