When solving network analysis layers with the output shape type set to 'True Shape with Measures' in ArcMap, the following error message is returned:
Warning: The output geometry for "Location [network location number] - Location [network location number]" in "Routes" has no M values because the maximum M value is larger than the largest M value that can be supported by the M domain.
The problem occurs when the measure value (m-value) of the network analysis layer exceeds the largest m-value supported by the M domain. M-values are stored in a 4 byte space, so the maximum m-value that can be stored is 2,147,483,648 (2^31). This is assuming the m-value does not contain decimals. An m-value for a route in Network Analyst is set to four decimal places by default to provide sufficient precision and to decrease storage space. Therefore, the largest m-value that can be stored for a route is 214,748.3648 .
Solution or Workaround
Use one of the following solutions to resolve the issue:
Change the Output Shape Type parameter to True Shape
Change the Output Shape Type of the network analysis layer properties to True Shape. This is done to exclude the m-values when solving the network analysis layers. The following steps outline how to change the Output Shape Type parameter.
The True Shape option gives the exact shape of the resulting route without the route measurements. Selecting the True Shape option stops the warning prompt when solving the network analysis layer, but the output route does not contain m-values.
- In the Network Analyst window, click the Analysis Layer Properties button.
The Layer Properties dialog box opens.
- In the Layer Properties dialog box, click the Analysis Settings tab.
- Click the drop-down arrow for Output Shape Type, and select True Shape.
- Click Apply, and click OK.
- Run the network analysis on the network analysis layer. The warning message is no longer generated, but the output route does not contain m-values.
Change the network dataset cost attribute unit to a larger unit
When creating the network dataset, change the unit of the network dataset cost attribute used as the impedance to a larger unit in the New Network Dataset dialog box. For example, if the warning message is returned when the cost attribute is set using a small unit such as meters, change the cost attribute unit to kilometers. The following steps outline how to change the cost attribute unit when creating a network dataset.
- Right-click the network dataset in the Catalog window to open the Network Dataset Properties.
- On the Attributes tab, change the cost attribute unit to a larger unit.
- Click the Units column of the cost attribute, and change the unit to a larger measurement.
For example, the figure below shows the Length of the route with the cost attribute set in Meters, and the attribute unit is changed to Kilometers.
- Click Evaluators.
- In the Evaluators dialog box, click the first source row and click Field under the Type column.
- Click the Evaluator Properties button to assign a field expression evaluator to the source.
- In the Field Evaluators dialog, type the expression to change the cost attribute unit in the Value parameter.
For example, changing the attribute values from meters to kilometers requires the expression below:
Value = [SHAPE_Length]/1000
- Click OK.
- Click Apply, and click OK to close the Evaluators dialog box.
- Create a network analysis layer and run the network analysis on the layer. An output route with the m-values is generated.
Configure the RouteMDomainPrecision value in the Registry Editor window
Only use this option if neither of the previous two options work.
If neither of the previous options is viable, configure the RouteMDomainPrecision value in the Registry Editor window to increase the m-value supported by the M domain. By default, the RouteMDomainPrecision value is set to 10000 to give four decimals of precision. The following steps outline how to configure the RouteMDomainPrecision value in the Registry Editor window.
- Click the Windows Start menu, and click Run.
- Type regedit in the Run dialog box, and click OK.
- In the Registry Editor window, expand the HKEY_CURRENT_USER\Software\ESRI\Desktop<version number>\ key.
- Click the NetworkAnalyst key.
Right-click the Desktop<version number> key, and click New > Key to create a new key if the NetworkAnalyst key does not exist. Rename the new key as NetworkAnalyst.
- In the NetworkAnalyst key, create a string key with the name RouteMDomainPrecision.
- Right-click the NetworkAnalyst key, and select New > String Value.
- Rename the created value key to RouteMDomainPrecision.
- Double-click the RouteMDomainPrecision value key, and set the Value data parameter to an appropriate value to change the precision of the m-value.
For example, set the Value data as 100 to change the supported measure value to 21,474,836.48, or 1000 to support m-values up to 2,147,483.648.
- Click OK.
- In ArcMap, rebuild the network dataset and recreate the network analysis layer.
- Run the network analysis on the network analysis layer. An output route with the m-value is generated.