问题

问题:Network Analyst 输出路径不包含 m 值

Last Published: April 25, 2020

描述

在求解网络分析图层时,若在 ArcMap 中将输出形状类型设置为“具有测量值的实际形状”, 将返回以下错误消息:

错误: 
警告:“路径”中“位置 [网络位置编号] - 位置 [网络位置编号]”的输出几何图形没有 M 值,因为最大 M 值超过了 M 值域支持的最大 M 值。
An image of the warning message.

原因

当网络分析图层的测量值(m 值)超出 M 值域支持的最大 m 值时,则将出现此问题。 M 值存储在 4 字节空间中,因此可存储的最大 m 值为 2,147,483,648 (2^31)。 这要假设 m 值不包含小数。 默认情况下,Network Analyst 中路径的 m 值将设置为四位小数,以提供足够的精度并减少存储空间。 因此, 可为路径存储的最大 m 值为 214,748.3648。

解决方案或解决方法

要解决此问题,请使用以下解决方案之一:

将“输出形状类型”参数更改为“实际形状”

将网络分析图层属性的“输出形状类型”更改为实际形状。 这样做的目的是在求解网络分析图层时排除 m 值。 以下步骤概述了如何更改“输出形状类型”参数。

:
“实际形状”选项可在不进行路径测量的情况下提供生成路径的精确形状。 在求解网络分析图层时选择“实际形状”选项可停止警告提示,但输出路径不包含 m 值。
  1. Network Analyst 窗口中, 单击分析图层属性按钮。

    The Analysis Layer Properties button. 

    图层属性对话框随即打开。
  2. 图层属性对话框中,单击分析设置选项卡。
  3. 单击输出形状类型的下拉箭头,然后选择实际形状
  4. 单击应用,然后单击确定

    Properties in the Analysis Settings tab.
     
  5. 在网络分析图层上运行网络分析。 不再生成警告消息,但输出路径不包含 m 值。
将网络数据集成本属性的单位改为更大的单位

创建网络数据集时,在“新建网络数据集”对话框中将用作阻抗的网络数据集成本属性的单位改为更大的单位。 例如,若在使用小型单位(如米)设置成本属性时返回警告消息,请将成本属性的单位更改为公里。 以下步骤概述了在创建网络数据集时更改成本属性单元的操作方法。

  1. 右键单击“目录”窗口中的网络数据集以打开网络数据集属性
  2. 属性选项卡上,将成本属性单位改为更大的单位。
    1. 单击成本属性的单位列,然后将该单位改为更大的测量单位。

      例如,下图显示了以为单位设置成本属性的路径长度,且属性单位更改为公里

      User-added image
       
    2. 单击赋值器
    3. 赋值器对话框中,单击第一个源要素所在的行,然后单击类型列下的字段
    4. 单击赋值器属性按钮将字段表达式赋值器分配给源。

      Selecting Field as the source value Type and setting the evaluator properties.
       
    5. 字段赋值器对话框中,输入表达式以更改参数中的成本属性单位。

      例如,要将属性值的单位由米更改为千米,需要使用以下表达式:
      值 = [SHAPE_Length]/1000
      Expression to change the unit of the value used as the attribute source from meters to kilometers.
    6. 单击确定
  3. 单击应用,然后单击确定关闭赋值器对话框。
  4. 创建网络分析图层并在图层上运行网络分析。 随即将生成具有 m 值的输出路径。
在“注册表编辑器”窗口中配置 RouteMDomainPrecision 值
:
仅当前两个选项均不可用时,方可使用此选项。

如果上述两个选项均不可行,请在“注册表编辑器”窗口中配置 RouteMDomainPrecision 值,以增加 M 值域支持的 m 值。 默认情况下,RouteMDomainPrecision 值设置为 10000,以精确到小数点后四位。 以下步骤概述了如何在“注册表编辑器”窗口中配置 RouteMDomainPrecision 值。

  1. 单击 Windows 开始菜单,然后单击运行
  2. 运行对话框中输入 regedit,然后单击确定
  3. 注册表编辑器窗口中,展开 HKEY_CURRENT_USER\Software\ESRI\Desktop\ 键。
  4. 单击 NetworkAnalyst 键。

    如果 NetworkAnalyst 键不存在,请右键单击 Desktop 键,然后单击新建 > 以创建新键。 将新键重命名为 NetworkAnalyst
  5. NetworkAnalyst 键中,创建一个名为 RouteMDomainPrecision 的字符串键值。
    1. 右键单击 NetworkAnalyst 键,然后选择新建 > 字符串值

      Creating a new String Value.
       
    2. 将创建的值键重命名为 RouteMDomainPrecision
    3. 双击 RouteMDomainPrecision 值键,然后将值数据参数设置为适当的值以更改 m 值的精度。

      例如,将值数据设置为 100 以将支持的测量值更改为 21,474,836.48,或设置为 1000 以将支持的 m 值更改为 2,147,483.648。

      Value Data of the RouteMDomainPrecision string.
       
    4. 单击确定
  6. 在 ArcMap 中,重建网络数据集,然后重新创建网络分析图层。
  7. 在网络分析图层上运行网络分析。 随即将生成具有 m 值的输出路径。

文章 ID: 000014693

接收通知并查找新问题或常见问题的解决方案

从我们全新的 AI 聊天机器人中获得简明答案和视频解决方案。

下载 Esri 支持应用程序

相关信息

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项