我目前正在研究一个模型,在这个模型中,代理移动到GIS地图上的海洋中的随机点。然而,我希望他们在道路上不会与地图上的任何岛屿发生碰撞。我正在考虑利用这些岛屿的周长创建地理信息系统区域,并希望对地理信息系统区域有一些访问限制选项。然而,这似乎还不是一个特性。
有没有人在向地理信息系统地图上的某个点移动时,对如何使代理人避免进入某些区域有任何建议?谢谢。
发布于 2022-02-24 18:12:14
创建GISRoutes并沿着这些
发布于 2022-02-25 07:36:40
一种选择是生成这些路线,然后评估它们是否与一个岛屿重叠。如果他们这么做了,你就会改变路线的那一部分。请参阅下面的代码示例,注意我并没有做所有的数学运算来创建一条新的环岛路线.你相信你自己能做到的。这将是一个工作,所以我没有测试这个或开发完成的解决方案。
GISRoute route = main.map.getRoute(currentLat, currentLong, toLat, toLong);
List<GISMarkupSegment> segementsToKeep = new ArrayList<GISMarkupSegment>()
SegmentForLoop:
for (int i = 0; i < route.getSegmentCount(); i++) {
GISMarkupSegment segment = route.getSegment(i);
// Check if the segmeent is too close to an island, if within 100m then we adjust the segment and stop adding segeents
for (Pair<Double, Double> pair:main.LatLongPointsOIfIslands) {
double distance = Math.sqrt(segment.getDistanceSq(new Point(pair.getFirst(), pair.getSecond())));
if (distance < 100) {
segment.setEnd(pair.getFirst() + 100, pair.getSecond()+100);
break SegmentForLoop:
}
segementsToKeep.add(segment);
}
}
GISRoute routeUpToIsland = new GISRoute(main, segementsToKeep);
//TODO
// Create a new route around the island
// Add the segements of this new route to segementsToKeepLatLongPointsOIfIslands是Pair的集合,它仅仅是岛屿周围所有地理信息系统点的长组合。
我希望这能帮到你或者让你走上正确的方向。
另外,您还可以研究其他路由提供程序。

https://stackoverflow.com/questions/71256397
复制相似问题