【问题标题】:How to set database locations to GISPoints in anylogic如何在anylogic中将数据库位置设置为GISPoints
【发布时间】:2021-11-05 04:13:17
【问题描述】:

我有一个 Anylogic 模型,其中车辆在 GIS 地图上从一个点移动到另一个点。目标点从数据库中加载(见图)。通过使用源块,订单详细信息被映射到代理群体(类型订单)。这组命令用于在 GISmap 上引导车辆。现在,我想知道车辆经过的距离。但是,我遇到了一些麻烦。 数据库中的位置只能映射到参数类型字符串。这很烦人,因为这意味着我不能使用例如“distanceTo”函数。是否可以将数据库中的字符串映射到位置类型的代理(即 GISPoint)?

DB snapshot

【问题讨论】:

  • 您确定您的代理居住在 GIS 空间中吗?没有更多信息,很难提供帮助。也许在帮助部分查看本教程。 anylogic.help/tutorials/gis/model.html
  • 嗨 Jaco-ben,是的,我很确定我在 GIS 空间中。漂浮问题已经解决(一些位置被放置在海洋中)。但是,数据库中的位置仍以字符串形式导入。 moveTo 和 jumpTo 函数可以工作,但 distanceTo 函数不能。
  • 主要问题是位置是作为字符串导入的,我需要将其转换为 GIS 地图上的位置。
  • 创建一个代表这些位置的新代理并从数据库中生成它们。例如,您想要移动到的所有位置都可以表示为数据库中的单独表,然后您从该表创建代理。
  • 我已经创建了一组放置在这些位置的代理。但是,位置存储在车辆使用的顺序中。我已经编辑了这个问题,我希望我的问题现在更清楚了。

标签: anylogic


【解决方案1】:

您需要一个将位置名称(字符串)映射到实际代理(您的位置)的对象。您可以为此使用 LinkedHashMap

然后在定位代理的On startup: 代码中,您只需将其添加到地图中。

现在您可以使用位置名称访问实际代理,以便您可以这样做

getDistanceTo(mapOfNameAndAgents.get("Boxtel"))

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 2020-10-03
    • 2021-10-29
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多