Anylogic - 使用自定义 GIS 路线绘制动画帧时出错

Posted

技术标签:

【中文标题】Anylogic - 使用自定义 GIS 路线绘制动画帧时出错【英文标题】:Anylogic - Error when drawing animation frame with custom GIS routes 【发布时间】:2021-05-24 16:47:25 【问题描述】:

我将 GIS 地图用于水路运输系统,并且必须使用我自己的 GIS 路线(不是自动生成的)。我使用 moveTo 块,但每次代理到达 GIS 点时,我都会收到一条错误消息:

"Error while drawing animation frame. Possibly caused by dynamic properties of animation shapes. The picture will be restored when (and if) the error goes away."

控制台中出现以下消息:

Error during drawing animation frame:
java.lang.RuntimeException: root:
gisRoute8 (GISRoute) : Offset (9539.429153529953) is greater than length (687.4357796935112)
    at com.anylogic.engine.Engine.error(Unknown Source)
    at com.anylogic.engine.Agent.error(Unknown Source)
    at com.anylogic.engine.Utilities.error(Unknown Source)
    at com.anylogic.engine.markup.GISMarkupElement.error(Unknown Source)
    at com.anylogic.engine.markup.GISRoute$1.n(Unknown Source)
    at com.anylogic.engine.markup.AbstractCurve.n(Unknown Source)
    at com.anylogic.engine.markup.AbstractCurve.getPositionAtOffset(Unknown Source)
    at com.anylogic.engine.markup.GISRoute.getPositionAtOffset(Unknown Source)
    at com.anylogic.engine.markup.SimpleDirection$2.getPositionAtOffset(Unknown Source)
    at com.anylogic.engine.markup.AbstractNetwork.n(Unknown Source)
    at com.anylogic.engine.markup.AbstractNetwork.n(Unknown Source)
    at com.anylogic.engine.markup.AbstractNetwork.n(Unknown Source)
    at com.anylogic.engine.markup.AbstractNetwork.getPosition(Unknown Source)
    at com.anylogic.engine.markup.AbstractNetwork.getPositionAtOffset(Unknown Source)
    at com.anylogic.engine.markup.AbstractNetwork.getPositionAtOffset(Unknown Source)
    at com.anylogic.engine.b.i(Unknown Source)
    at com.anylogic.engine.ih.updatePosition(Unknown Source)
    at com.anylogic.engine.ExtAgentWithSpatialMetricsDelegate.updatePosition(Unknown Source)
    at com.anylogic.libraries.processmodeling.l.updatePosition(Unknown Source)
    at com.anylogic.engine.Agent.h(Unknown Source)
    at com.anylogic.engine.Agent.getX(Unknown Source)
    at com.anylogic.engine.ih.getLat(Unknown Source)
    at com.anylogic.engine.presentation.ShapeEmbeddedObjectPresentation.updateDynamicPropertiesStructural(Unknown Source)
    at com.anylogic.engine.presentation.ShapeAgentGroup_xjal.updateDynamicPropertiesStructural(Unknown Source)
    at com.anylogic.engine.presentation.ShapeGroup.updateDynamicPropertiesStructural(Unknown Source)
    at com.anylogic.engine.Presentable.n(Unknown Source)
    at com.anylogic.engine.Presentable.updateShapeDynamicProperties(Unknown Source)
    at com.anylogic.engine.gui.SVGFrameProducer.n(Unknown Source)
    at com.anylogic.engine.gui.ExperimentHost$1.l(Unknown Source)
    at com.anylogic.engine.gui.ExperimentHost$1.n(Unknown Source)
    at com.anylogic.engine.gui.SVGFrameCollector.l(Unknown Source)
    at com.anylogic.engine.gui.SVGFrameCollector.c(Unknown Source)
    at java.base/java.lang.Thread.run(Thread.java:834)

每次代理从定制的 GIS 路线到达 GIS 点时都会发生这种情况,而自动生成的 GIS 路线工作。我做错了什么还是这是一个已知的错误?

【问题讨论】:

【参考方案1】:

使用自定义 GIS 路由时,AnyLogic 8.7.2 中出现错误:GIS 地图从 OSM 服务器获取路由的默认设置与使用自定义 GIS 网络进行路由的代理冲突。 (经 AnyLogic 支持确认,将在 8.7.3 中修复。)

如果您使用自定义 GIS 路线,则可以通过设置 GIS 地图(路线部分)来解决此问题,以便路线是直线(这样就没有路线使用服务器)。

(错误消息表明它以某种方式认为目标点(或途中的某个中间点)超出了 GIS Route 网络的范围。最初它们只是“临时”动画错误,但是,如果您尝试进行后续移动,你会得到一个硬错误 --- 所以看起来代理已经以某种方式定位在 GIS 网络范围之外的一个点上。)

【讨论】:

谢谢,这解释了很多!我最终为每个“转弯”使用了一个 GIS 点,并为每个“转弯”使用了直接 moveTo 块作为临时修复。我会等待更新,然后尝试旧方法! 如果您只使用自定义 GIS 路线,您现在可以按照指定修复此问题,而无需等待 8.7.3。

以上是关于Anylogic - 使用自定义 GIS 路线绘制动画帧时出错的主要内容,如果未能解决你的问题,请参考以下文章

Anylogic中以编程方式创建的GIS网络中的代理路由

在 Anylogic 中分配随机 GIS 位置

如何在离散事件模拟中的 Anylogic 中绘制代理在图上行驶的距离?

将 gis 地图加载到离线 anylogic 计算机

Anylogic GIS实时交通数据

Anylogic GIS 功能