首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任何限制因素进入特定的地理信息系统区域

任何限制因素进入特定的地理信息系统区域
EN

Stack Overflow用户
提问于 2022-02-24 18:09:16
回答 2查看 67关注 0票数 0

我目前正在研究一个模型,在这个模型中,代理移动到GIS地图上的海洋中的随机点。然而,我希望他们在道路上不会与地图上的任何岛屿发生碰撞。我正在考虑利用这些岛屿的周长创建地理信息系统区域,并希望对地理信息系统区域有一些访问限制选项。然而,这似乎还不是一个特性。

有没有人在向地理信息系统地图上的某个点移动时,对如何使代理人避免进入某些区域有任何建议?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2022-02-24 18:12:14

创建GISRoutes并沿着这些

票数 0
EN

Stack Overflow用户

发布于 2022-02-25 07:36:40

一种选择是生成这些路线,然后评估它们是否与一个岛屿重叠。如果他们这么做了,你就会改变路线的那一部分。请参阅下面的代码示例,注意我并没有做所有的数学运算来创建一条新的环岛路线.你相信你自己能做到的。这将是一个工作,所以我没有测试这个或开发完成的解决方案。

代码语言:javascript
复制
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 segementsToKeep

LatLongPointsOIfIslands是Pair的集合,它仅仅是岛屿周围所有地理信息系统点的长组合。

我希望这能帮到你或者让你走上正确的方向。

另外,您还可以研究其他路由提供程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71256397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档