【问题标题】:Maximo: Get the midpoint of a polyline asset [closed]Maximo:获取折线资产的中点 [关闭]
【发布时间】:2020-03-25 20:18:33
【问题描述】:

马克西莫 7.6.1.1;空间 7.6.0.5:

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

我该怎么做?

【问题讨论】:

    标签: python-2.7 coordinates jython maximo centroid


    【解决方案1】:

    我使用的是 Maximo Spatial 7.6.0.3,但它应该不会太远,因为概念和设计仍然非常相同。

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

    为了在地图上绘制工单,您必须拥有以下任一参考资料:

    • 填充了经度和纬度的服务地址
    • 工作订单上的一个要素类,将其链接到您的 GIS
    • 通过要素类链接到 GIS 的资产
    • 通过要素类链接到 GIS 的位置

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

    Maximo Spatial 7.6.x 通过发布在 GIS 服务器上的 Web 服务将您的 MBO 对象链接到您的 GIS 要素(我知道 Spatial 7.6.1 发生了一些变化,但基本上,它仍然使用 Web 服务来定位您的记录)。

    自动创建功能的作用是将记录添加到您的 GIS 要素表中,并通过要素类属性生成链接。您自然必须在 Map Manager 应用程序中配置地图服务、要素类和其他所有内容。自动创建将尝试通过查看服务地址(如果已填充 LONGITUDEX 和 LATITUDEY)或资产/位置参考(如果它们链接到 GIS 中的要素)来确定几何。自动创建需要从某个地方开始,它不能凭空为工单拼凑出一对坐标。

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

    希望对你有帮助。

    干杯,

    恩里克·法利亚

    【讨论】:

    • 谢谢。这有帮助。不“将坐标存储在相关服务地址的 LONGITUDEX 和 LATITUDEY 字段中” 的一个可能原因是:切换到地图选项卡时,如果 LONGITUDEX 和 LATITUDEY 字段中有值服务地址,然后地图不突出显示资产(突出显示资产对用户来说非常方便)。如果我将我提议的空间 WO 视图的 x 和 y 存储在 其他字段 中,那么资产仍会在地图选项卡中突出显示(如果适用)。 i.stack.imgur.com/JuQtl.png
    • 自动定位不计算多边形质心线的中点,它只会为您提供一个要素或一对坐标,用于不是 GIS 要素本身的工单。自动创建可能具有计算这些东西的逻辑,但是,我只是尝试自动创建一条线外的 WO,但它失败了。为了获得这些信息,您可以通过 ArcGIS REST API(使用脚本)查询几何,然后自己编写逻辑,根据几何点找到中点或质心。我知道这需要做很多工作,但可能有一些库可以提供帮助。
    • 我所说的大量工作是为质心编写逻辑;查询几何图形相对简单。该服务将仅仅返回一个与JSON像这样的信息: “几何”:{ “路径”:[[[-12698423.638346856,6616853.3112811456],[-12698421.628177589,6616859.5704756184],[-12698421.49152969,6616906.5357477786],[-12698421.380344408,6616963.3934336742 ] ] ] }
    • 是的。谢谢。我仍然很好奇 Maximo 如何获得中点/质心:How does Maximo Spatial get the asset centerpoint?。我可以看到它在线或多边形的中心放置了一个大头针,我只是不知道它是如何完成的。一位同事建议我查看 Google Chrome 中的网络活动窗口,以查看 Maximo 是否正在发送 REST 请求——特别是为了获取中点/质心。当我回到办公室时,我会这样做。
    • 链接在 PLUSSFEATURECLASS 工单属性中定义。这是您在地图管理器中添加服务图层时 Spatial 自动生成的要素类。您还可以在其中定义 MBO 和 GIS 功能之间的关系。假设您的关系基于 WONUM 和 SITEID;当您自动创建时,Spatial 将在 GIS 中添加一个包含这两个键的空要素,并将默认的自动创建要素(也在地图管理器中定义)写入 PLUSSFEATURECLASS 属性。为了映射更多字段,您可以使用 JSON 映射应用程序。
    【解决方案2】:

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

    1. 如果中间点在一个段内,你需要计算你需要在段的哪一部分停止,例如:假设你的资产有 15 米分成 5 个段(折线),所以每个段有3米。中心点距离原点 7.5 米,所以你需要经过 2 段(6 米),还有更多 1.5 米要走,在这种情况下你的中点在下一段的中点。我们使用三角形相似度来获取特定线段内的坐标。

    2. 1234563该段的起源,但在哪个方向?正弦或余弦将帮助您计算。

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

    希望对你有帮助。

    干杯,

    蒂亚戈·斯卡顿

    【讨论】:

      【解决方案3】:

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

      当我将 GIS 图层集成到 Maximo 中的 ASSET 表时,我使用 midpoint_X 和 midpoint_Y 来填充 Maximo ASSET 表中的自定义 X 和 Y 列。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多