Maximo:获取折线资产的中点

Maximo: Get the midpoint of a polyline asset

Maximo 7.6.1.1;空间 7.6.0.5:

我想创建一个自动化脚本,通过资产折线的中点填充 WORKORDER table 中的自定义 X 和 Y 列。

我该怎么做?

我正在使用 Maximo Spatial 7.6.0.3,但应该不会太远,因为概念和设计仍然非常相似。

CALCULATEDX 和 CALCULATEDY 是 Maximo Anywhere 用来在移动地图上绘制工单的字段。它们由 WoAutoLocateCronTask cron 任务更新。 Maximo 不会使用这两个字段(至少在我使用的版本上)来呈现地图选项卡上的任何内容。

为了在地图上绘制工单,您必须提供这些参考资料中的任何一个:

  • 填充了经度和纬度的服务地址
  • 您的工作订单上的一项功能 class link 将其发送到您的 GIS
  • 通过要素 link 编辑到您的 GIS 的资产 class
  • 通过地图项 link 编辑到您的 GIS 的位置 class

注意:在上述最后三种情况下,几何信息存在于 GIS 中,无需将它们存储在 Maximo 中。

Maximo Spatial 7.6.x link通过在 GIS 服务器上发布的 Web 服务,您的 MBO 对象针对您的 GIS 功能(我知道 Spatial 7.6.1 有一些变化,但是,基本上,它仍然使用网络服务来定位您的记录)。

自动创建功能的作用是将记录添加到您的 GIS 要素 table 并通过要素 class 属性生成 link。您自然必须在地图管理器应用程序中配置地图服务、功能 classes 和其他所有内容。自动创建将尝试通过查看服务地址(如果它填充了 LONGITUDEX 和 LATITUDEY)或 asset/location 参考(如果它们 linked 到 GIS 中的要素)来确定几何图形。自动创建需要从某个地方开始,它不能随便为一个工单组成一对坐标。

Maximo Spatial 不在 Maximo 中存储几何图形。它依靠 GIS 在地图上显示它们。您绝对可以编写逻辑来从 GIS 要素中获取几何图形。如果您想使用该信息在地图上显示您的工作订单,您应该将它们存储在相关服务地址的 LONGITUDEX 和 LATITUDEY 字段中,而不是 CALCULATEDX 和 CALCULATEDY 工作订单属性。

希望对您有所帮助。

干杯,

恩里克·法里亚

计算中心点的数学并不那么简单,我将解释 Spatial 如何处理它。 Spatial 所做的是使用纯数学函数即时计算中点。基本上,您需要计算资产的长度,然后逐段进行(一段是您在 json "paths" 中拥有的每对值),直到到达中间,但有一些复杂情况:

  1. 如果中间点在一个线段内,你需要计算你需要在线段的哪一部分停止,因为 example:let 说你的资产有 15 米分成 5段(折线),所以每段有 3 米。中心点距离原点7.5米,所以你需要走2段(6米),还有1.5米要走,此时你的中点在下一段的中点。我们正在使用三角形相似度来获取特定线段内的坐标。

  2. 要正确获取中间点,您需要使用正弦或余弦来计算线段内点的角度,使用与#1 相同的示例,您需要获取的点是距该线段起点 1.5 米,但在哪个方向?正弦或余弦将帮助您计算。

我们正在使用 Arcgis Javascript API 来帮助我们进行一些数学运算,特别是计算两点之间的距离,因为有一些空间参考考虑了地球曲率,所以我们不能只需计算两点之间的平原距离。

希望对你有所帮助。

干杯,

蒂亚戈·斯卡顿

我最后只是将 midpoint_X 和 midpoint_Y 字段放在 GIS 图层中。

当我将 GIS 层集成到 Maximo 中的资产 table 时,我使用 midpoint_X 和 midpoint_Y 来填充 Maximo 资产中的自定义 X 和 Y 列 table.

从那里,我可以使用 Maximo 中的自动化脚本来填充 WORKORDER table 中的自定义 X 和 Y 字段。