private void OnReset(object sender, RoutedEventArgs e) { // Reset the barrier condition to the initial value. UtilityTraceConfiguration traceConfiguration = _configuration; traceConfiguration.Traversability.Barriers = _initialExpression; ConditionBarrierExpression.Text = ExpressionToString(_initialExpression); }
private void ResetClick(object sender, EventArgs e) { // Reset the barrier condition to the initial value. UtilityTraceConfiguration traceConfiguration = _configuration; traceConfiguration.Traversability.Barriers = _initialExpression; _expressionLabel.Text = ExpressionToString(_initialExpression); }
private async void Initialize() { try { Configuration.IsEnabled = false; // Create and load the utility network. _utilityNetwork = await UtilityNetwork.CreateAsync(new Uri(FeatureServiceUrl)); // Build the choice lists for network attribute comparison. Attributes.ItemsSource = _utilityNetwork.Definition.NetworkAttributes.Where(netattr => !netattr.IsSystemDefined); Operators.ItemsSource = Enum.GetValues(typeof(UtilityAttributeComparisonOperator)); // Create a default starting location. UtilityNetworkSource networkSource = _utilityNetwork.Definition.GetNetworkSource(DeviceTableName); UtilityAssetGroup assetGroup = networkSource.GetAssetGroup(AssetGroupName); UtilityAssetType assetType = assetGroup.GetAssetType(AssetTypeName); Guid globalId = Guid.Parse(GlobalId); _startingLocation = _utilityNetwork.CreateElement(assetType, globalId); // Set the terminal for this location. (For our case, we use the 'Load' terminal.) _startingLocation.Terminal = _startingLocation.AssetType.TerminalConfiguration?.Terminals.FirstOrDefault(term => term.Name == "Load"); // Get a default trace configuration from a tier to update the UI. UtilityDomainNetwork domainNetwork = _utilityNetwork.Definition.GetDomainNetwork(DomainNetworkName); UtilityTier sourceTier = domainNetwork.GetTier(TierName); // Set the trace configuration. _configuration = sourceTier.TraceConfiguration; // Set the default expression (if provided). if (sourceTier.TraceConfiguration.Traversability.Barriers is UtilityTraceConditionalExpression expression) { ConditionBarrierExpression.Text = ExpressionToString(expression); _initialExpression = expression; } // Setting DataContext will resolve the data-binding in XAML. Configuration.DataContext = _configuration; // Set the traversability scope. sourceTier.TraceConfiguration.Traversability.Scope = UtilityTraversabilityScope.Junctions; } catch (Exception ex) { MessageBox.Show(ex.Message, ex.Message.GetType().Name, MessageBoxButton.OK, MessageBoxImage.Error); } finally { Configuration.IsEnabled = true; } }
private async void Initialize() { try { // Disable interaction until the data is loaded. _mainView.Visibility = ViewStates.Gone; // Create and load the utility network. _utilityNetwork = await UtilityNetwork.CreateAsync(new Uri(FeatureServiceUrl)); // Getthe attributes in the utility network. _attributes = _utilityNetwork.Definition.NetworkAttributes.Where(netattr => !netattr.IsSystemDefined); // Create a default starting location. UtilityNetworkSource networkSource = _utilityNetwork.Definition.GetNetworkSource(DeviceTableName); UtilityAssetGroup assetGroup = networkSource.GetAssetGroup(AssetGroupName); UtilityAssetType assetType = assetGroup.GetAssetType(AssetTypeName); Guid globalId = Guid.Parse(GlobalId); _startingLocation = _utilityNetwork.CreateElement(assetType, globalId); // Set the terminal for this location. (For our case, we use the 'Load' terminal.) _startingLocation.Terminal = _startingLocation.AssetType.TerminalConfiguration?.Terminals.FirstOrDefault(term => term.Name == "Load"); // Get a default trace configuration from a tier to update the UI. UtilityDomainNetwork domainNetwork = _utilityNetwork.Definition.GetDomainNetwork(DomainNetworkName); _sourceTier = domainNetwork.GetTier(TierName); // Set the trace configuration. _configuration = _sourceTier.TraceConfiguration; // Set the default expression (if provided). if (_sourceTier.TraceConfiguration.Traversability.Barriers is UtilityTraceConditionalExpression expression) { _initialExpression = expression; _expressionLabel.Text = ExpressionToString(_initialExpression); } // Set the traversability scope. _sourceTier.TraceConfiguration.Traversability.Scope = UtilityTraversabilityScope.Junctions; } catch (Exception ex) { new AlertDialog.Builder(this).SetMessage(ex.Message).SetTitle(ex.GetType().Name).Show(); } finally { _mainView.Visibility = ViewStates.Visible; } }
private async void Initialize() { try { // Disable interaction until the data is loaded. View.UserInteractionEnabled = false; // Create and load the utility network. _utilityNetwork = await UtilityNetwork.CreateAsync(new Uri(FeatureServiceUrl)); // Create a default starting location. UtilityNetworkSource networkSource = _utilityNetwork.Definition.GetNetworkSource(DeviceTableName); UtilityAssetGroup assetGroup = networkSource.GetAssetGroup(AssetGroupName); UtilityAssetType assetType = assetGroup.GetAssetType(AssetTypeName); Guid globalId = Guid.Parse(GlobalId); _startingLocation = _utilityNetwork.CreateElement(assetType, globalId); // Set the terminal for this location. (For our case, we use the 'Load' terminal.) _startingLocation.Terminal = _startingLocation.AssetType.TerminalConfiguration?.Terminals.FirstOrDefault(term => term.Name == "Load"); // Get a default trace configuration from a tier to update the UI. UtilityDomainNetwork domainNetwork = _utilityNetwork.Definition.GetDomainNetwork(DomainNetworkName); _sourceTier = domainNetwork.GetTier(TierName); // Set the trace configuration. _configuration = _sourceTier.TraceConfiguration; // Set the default expression (if provided). if (_sourceTier.TraceConfiguration.Traversability.Barriers is UtilityTraceConditionalExpression expression) { _expressionLabel.Text = ExpressionToString(expression); _initialExpression = expression; } // Set the traversability scope. _sourceTier.TraceConfiguration.Traversability.Scope = UtilityTraversabilityScope.Junctions; } catch (Exception ex) { new UIAlertView(ex.GetType().Name, ex.Message, (IUIAlertViewDelegate)null, "Error loading network", null).Show(); } finally { View.UserInteractionEnabled = true; } }
private async void OnAddCondition(object sender, RoutedEventArgs e) { try { if (_configuration == null) { _configuration = new UtilityTraceConfiguration(); } if (_configuration.Traversability == null) { _configuration.Traversability = new UtilityTraversability(); } // NOTE: You may also create a UtilityCategoryComparison with UtilityNetworkDefinition.Categories and UtilityCategoryComparisonOperator. if (Attributes.SelectedItem is UtilityNetworkAttribute attribute && Operators.SelectedItem is string attributeOperatorStr) { object selectedValue; UtilityAttributeComparisonOperator attributeOperator = Enum.Parse <UtilityAttributeComparisonOperator>(attributeOperatorStr); // If the value is a coded value. if (attribute.Domain is CodedValueDomain && ValueSelection.SelectedItem is CodedValue codedValue) { selectedValue = ConvertToDataType(codedValue.Code, attribute.DataType); } // If the value is free entry. else { selectedValue = ConvertToDataType(ValueEntry.Text.Trim(), attribute.DataType); } // NOTE: You may also create a UtilityNetworkAttributeComparison with another NetworkAttribute. UtilityTraceConditionalExpression expression = new UtilityNetworkAttributeComparison(attribute, attributeOperator, selectedValue); if (_configuration.Traversability.Barriers is UtilityTraceConditionalExpression otherExpression) { // NOTE: You may also combine expressions with UtilityTraceAndCondition expression = new UtilityTraceOrCondition(otherExpression, expression); } _configuration.Traversability.Barriers = expression; ConditionBarrierExpression.Text = ExpressionToString(expression); } } catch (Exception ex) { await new MessageDialog2(ex.Message, ex.Message.GetType().Name).ShowAsync(); } }
private async void OnAddCondition(object sender, EventArgs e) { try { UtilityTraceConfiguration traceConfiguration = _sourceTier.TraceConfiguration; if (traceConfiguration == null) { traceConfiguration = new UtilityTraceConfiguration(); } if (traceConfiguration.Traversability == null) { traceConfiguration.Traversability = new UtilityTraversability(); } // NOTE: You may also create a UtilityCategoryComparison with UtilityNetworkDefinition.Categories and UtilityCategoryComparisonOperator. if (Attributes.SelectedItem is UtilityNetworkAttribute attribute && Operators.SelectedItem is UtilityAttributeComparisonOperator attributeOperator) { object otherValue; // If the value is a coded value. if (attribute.Domain is CodedValueDomain && ValueSelection.SelectedItem is CodedValue codedValue) { otherValue = ConvertToDataType(codedValue.Code, attribute.DataType); } // If the value is free entry. else { otherValue = ConvertToDataType(ValueEntry.Text.Trim(), attribute.DataType); } // NOTE: You may also create a UtilityNetworkAttributeComparison with another NetworkAttribute. UtilityTraceConditionalExpression expression = new UtilityNetworkAttributeComparison(attribute, attributeOperator, otherValue); if (traceConfiguration.Traversability.Barriers is UtilityTraceConditionalExpression otherExpression) { // NOTE: You may also combine expressions with UtilityTraceAndCondition expression = new UtilityTraceOrCondition(otherExpression, expression); } traceConfiguration.Traversability.Barriers = expression; ConditionBarrierExpression.Text = ExpressionToString(expression); } } catch (Exception ex) { await Application.Current.MainPage.DisplayAlert("Error", ex.Message, "OK"); } }
private void AddClick(object sender, EventArgs e) { try { if (_configuration == null) { _configuration = new UtilityTraceConfiguration(); } if (_configuration.Traversability == null) { _configuration.Traversability = new UtilityTraversability(); } // NOTE: You may also create a UtilityCategoryComparison with UtilityNetworkDefinition.Categories and UtilityCategoryComparisonOperator. if (_selectedAttribute != null) { object selectedValue; // If the value is a coded value. if (_selectedAttribute.Domain is CodedValueDomain && _selectedValue is CodedValue codedValue) { selectedValue = ConvertToDataType(codedValue.Code, _selectedAttribute.DataType); } // If the value is free entry. else { selectedValue = ConvertToDataType(_selectedValue.ToString().Trim(), _selectedAttribute.DataType); } // NOTE: You may also create a UtilityNetworkAttributeComparison with another NetworkAttribute. UtilityTraceConditionalExpression expression = new UtilityNetworkAttributeComparison(_selectedAttribute, _selectedComparison, selectedValue); if (_configuration.Traversability.Barriers is UtilityTraceConditionalExpression otherExpression) { // NOTE: You may also combine expressions with UtilityTraceAndCondition expression = new UtilityTraceOrCondition(otherExpression, expression); } _configuration.Traversability.Barriers = expression; _expressionLabel.Text = ExpressionToString(expression); } } catch (Exception ex) { new UIAlertView(ex.GetType().Name, ex.Message, (IUIAlertViewDelegate)null, "Error adding barrier", null).Show(); } }
private async void Initialize() { try { // Disable the UI. FilterOptions.Visibility = Visibility.Collapsed; // Create and load the utility network. _utilityNetwork = await UtilityNetwork.CreateAsync(new Uri(FeatureServiceUrl)); // Create a map with layers in this utility network. MyMapView.Map = new Map(Basemap.CreateStreetsNightVector()); MyMapView.Map.OperationalLayers.Add(new FeatureLayer(new Uri($"{FeatureServiceUrl}/{LineLayerId}"))); MyMapView.Map.OperationalLayers.Add(new FeatureLayer(new Uri($"{FeatureServiceUrl}/{DeviceLayerId}"))); // Get a trace configuration from a tier. UtilityDomainNetwork domainNetwork = _utilityNetwork.Definition.GetDomainNetwork(DomainNetworkName) ?? throw new ArgumentException(DomainNetworkName); UtilityTier tier = domainNetwork.GetTier(TierName) ?? throw new ArgumentException(TierName); _configuration = tier.TraceConfiguration; // Create a trace filter. _configuration.Filter = new UtilityTraceFilter(); // Get a default starting location. UtilityNetworkSource networkSource = _utilityNetwork.Definition.GetNetworkSource(NetworkSourceName) ?? throw new ArgumentException(NetworkSourceName); UtilityAssetGroup assetGroup = networkSource.GetAssetGroup(AssetGroupName) ?? throw new ArgumentException(AssetGroupName); UtilityAssetType assetType = assetGroup.GetAssetType(AssetTypeName) ?? throw new ArgumentException(AssetTypeName); Guid globalId = Guid.Parse(GlobalId); _startingLocation = _utilityNetwork.CreateElement(assetType, globalId); // Create a graphics overlay. GraphicsOverlay overlay = new GraphicsOverlay(); MyMapView.GraphicsOverlays.Add(overlay); // Display starting location. IEnumerable <ArcGISFeature> elementFeatures = await _utilityNetwork.GetFeaturesForElementsAsync(new List <UtilityElement> { _startingLocation }); MapPoint startingLocationGeometry = elementFeatures.FirstOrDefault().Geometry as MapPoint; Symbol symbol = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Cross, System.Drawing.Color.LimeGreen, 25d); Graphic graphic = new Graphic(startingLocationGeometry, symbol); overlay.Graphics.Add(graphic); // Set the starting viewpoint. await MyMapView.SetViewpointAsync(new Viewpoint(startingLocationGeometry, 3000)); // Build the choice list for categories populated with the `Name` property of each `UtilityCategory` in the `UtilityNetworkDefinition`. Categories.ItemsSource = _utilityNetwork.Definition.Categories; Categories.SelectedItem = _utilityNetwork.Definition.Categories.First(); // Enable the UI. FilterOptions.Visibility = Visibility.Visible; } catch (Exception ex) { await new MessageDialog(ex.Message, ex.GetType().Name).ShowAsync(); } finally { LoadingBar.Visibility = Visibility.Collapsed; } }
private async void Initialize() { try { // Disable the UI. _traceButton.Enabled = false; // Create and load the utility network. _utilityNetwork = await UtilityNetwork.CreateAsync(new Uri(FeatureServiceUrl)); // Create a map with layers in this utility network. _myMapView.Map = new Map(new Basemap(new Uri("https://www.arcgis.com/home/item.html?id=1970c1995b8f44749f4b9b6e81b5ba45"))); _myMapView.Map.OperationalLayers.Add(new FeatureLayer(new Uri($"{FeatureServiceUrl}/{LineLayerId}"))); _myMapView.Map.OperationalLayers.Add(new FeatureLayer(new Uri($"{FeatureServiceUrl}/{DeviceLayerId}"))); // Get a trace configuration from a tier. UtilityDomainNetwork domainNetwork = _utilityNetwork.Definition.GetDomainNetwork(DomainNetworkName) ?? throw new ArgumentException(DomainNetworkName); UtilityTier tier = domainNetwork.GetTier(TierName) ?? throw new ArgumentException(TierName); _configuration = tier.TraceConfiguration; // Create a trace filter. _configuration.Filter = new UtilityTraceFilter(); // Get a default starting location. UtilityNetworkSource networkSource = _utilityNetwork.Definition.GetNetworkSource(NetworkSourceName) ?? throw new ArgumentException(NetworkSourceName); UtilityAssetGroup assetGroup = networkSource.GetAssetGroup(AssetGroupName) ?? throw new ArgumentException(AssetGroupName); UtilityAssetType assetType = assetGroup.GetAssetType(AssetTypeName) ?? throw new ArgumentException(AssetTypeName); Guid globalId = Guid.Parse(GlobalId); _startingLocation = _utilityNetwork.CreateElement(assetType, globalId); // Create a graphics overlay. GraphicsOverlay overlay = new GraphicsOverlay(); _myMapView.GraphicsOverlays.Add(overlay); // Display starting location. IEnumerable <ArcGISFeature> elementFeatures = await _utilityNetwork.GetFeaturesForElementsAsync(new List <UtilityElement> { _startingLocation }); MapPoint startingLocationGeometry = elementFeatures.FirstOrDefault().Geometry as MapPoint; Symbol symbol = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Cross, System.Drawing.Color.LimeGreen, 25d); Graphic graphic = new Graphic(startingLocationGeometry, symbol); overlay.Graphics.Add(graphic); // Set the starting viewpoint. await _myMapView.SetViewpointAsync(new Viewpoint(startingLocationGeometry, 3000)); // Build the choice list for categories populated with the `Name` property of each `UtilityCategory` in the `UtilityNetworkDefinition`. _utilityNetwork.Definition.Categories.ToList().ForEach(cat => _categoryDictionary.Add(cat.Name, cat)); _categorySpinner.Adapter = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleSpinnerItem, _categoryDictionary.Keys.ToList()); _categorySpinner.SetSelection(0); // Enable the UI. _traceButton.Enabled = true; } catch (Exception ex) { new AlertDialog.Builder(this).SetMessage(ex.Message).SetTitle(ex.GetType().Name).Show(); } finally { _loadingBar.Visibility = Android.Views.ViewStates.Gone; } }
private async void Initialize() { // As of ArcGIS Enterprise 10.8.1, using utility network functionality requires a licensed user. The following login for the sample server is licensed to perform utility network operations. AuthenticationManager.Current.ChallengeHandler = new ChallengeHandler(async(info) => { try { // WARNING: Never hardcode login information in a production application. This is done solely for the sake of the sample. string sampleServer7User = "******"; string sampleServer7Pass = "******"; return(await AuthenticationManager.Current.GenerateCredentialAsync(info.ServiceUri, sampleServer7User, sampleServer7Pass)); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); return(null); } }); try { // Disable the UI. FilterOptions.IsVisible = false; // Create and load the utility network. _utilityNetwork = await UtilityNetwork.CreateAsync(new Uri(FeatureServiceUrl)); // Create a map with layers in this utility network. MyMapView.Map = new Map(new Basemap(new Uri("https://www.arcgis.com/home/item.html?id=1970c1995b8f44749f4b9b6e81b5ba45"))); MyMapView.Map.OperationalLayers.Add(new FeatureLayer(new Uri($"{FeatureServiceUrl}/{LineLayerId}"))); MyMapView.Map.OperationalLayers.Add(new FeatureLayer(new Uri($"{FeatureServiceUrl}/{DeviceLayerId}"))); // Get a trace configuration from a tier. UtilityDomainNetwork domainNetwork = _utilityNetwork.Definition.GetDomainNetwork(DomainNetworkName) ?? throw new ArgumentException(DomainNetworkName); UtilityTier tier = domainNetwork.GetTier(TierName) ?? throw new ArgumentException(TierName); _configuration = tier.TraceConfiguration; // Create a trace filter. _configuration.Filter = new UtilityTraceFilter(); // Get a default starting location. UtilityNetworkSource networkSource = _utilityNetwork.Definition.GetNetworkSource(NetworkSourceName) ?? throw new ArgumentException(NetworkSourceName); UtilityAssetGroup assetGroup = networkSource.GetAssetGroup(AssetGroupName) ?? throw new ArgumentException(AssetGroupName); UtilityAssetType assetType = assetGroup.GetAssetType(AssetTypeName) ?? throw new ArgumentException(AssetTypeName); Guid globalId = Guid.Parse(GlobalId); _startingLocation = _utilityNetwork.CreateElement(assetType, globalId); // Create a graphics overlay. GraphicsOverlay overlay = new GraphicsOverlay(); MyMapView.GraphicsOverlays.Add(overlay); // Display starting location. IEnumerable <ArcGISFeature> elementFeatures = await _utilityNetwork.GetFeaturesForElementsAsync(new List <UtilityElement> { _startingLocation }); MapPoint startingLocationGeometry = elementFeatures.FirstOrDefault().Geometry as MapPoint; Symbol symbol = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Cross, System.Drawing.Color.LimeGreen, 25d); Graphic graphic = new Graphic(startingLocationGeometry, symbol); overlay.Graphics.Add(graphic); // Set the starting viewpoint. await MyMapView.SetViewpointAsync(new Viewpoint(startingLocationGeometry, 3000)); // Build the choice list for categories populated with the `Name` property of each `UtilityCategory` in the `UtilityNetworkDefinition`. CategoryPicker.ItemsSource = _utilityNetwork.Definition.Categories.ToList(); CategoryPicker.SelectedItem = _utilityNetwork.Definition.Categories.First(); // Enable the UI. FilterOptions.IsVisible = true; } catch (Exception ex) { await Application.Current.MainPage.DisplayAlert(ex.GetType().Name, ex.Message, "OK"); } finally { LoadingIndicator.IsVisible = false; } }
private async void Initialize() { // As of ArcGIS Enterprise 10.8.1, using utility network functionality requires a licensed user. The following login for the sample server is licensed to perform utility network operations. AuthenticationManager.Current.ChallengeHandler = new ChallengeHandler(async(info) => { try { // WARNING: Never hardcode login information in a production application. This is done solely for the sake of the sample. string sampleServer7User = "******"; string sampleServer7Pass = "******"; return(await AuthenticationManager.Current.GenerateCredentialAsync(info.ServiceUri, sampleServer7User, sampleServer7Pass)); } catch (Exception ex) { Debug.WriteLine(ex.Message); return(null); } }); try { Configuration.IsEnabled = false; // Create and load the utility network. _utilityNetwork = await UtilityNetwork.CreateAsync(new Uri(FeatureServiceUrl)); // Build the choice lists for network attribute comparison. Attributes.ItemsSource = _utilityNetwork.Definition.NetworkAttributes.Where(netattr => !netattr.IsSystemDefined); Operators.ItemsSource = Enum.GetValues(typeof(UtilityAttributeComparisonOperator)); // Create a default starting location. UtilityNetworkSource networkSource = _utilityNetwork.Definition.GetNetworkSource(DeviceTableName); UtilityAssetGroup assetGroup = networkSource.GetAssetGroup(AssetGroupName); UtilityAssetType assetType = assetGroup.GetAssetType(AssetTypeName); Guid globalId = Guid.Parse(GlobalId); _startingLocation = _utilityNetwork.CreateElement(assetType, globalId); // Set the terminal for this location. (For our case, we use the 'Load' terminal.) _startingLocation.Terminal = _startingLocation.AssetType.TerminalConfiguration?.Terminals.FirstOrDefault(term => term.Name == "Load"); // Get a default trace configuration from a tier to update the UI. UtilityDomainNetwork domainNetwork = _utilityNetwork.Definition.GetDomainNetwork(DomainNetworkName); UtilityTier sourceTier = domainNetwork.GetTier(TierName); // Set the trace configuration. _configuration = sourceTier.TraceConfiguration; // Set the default expression (if provided). if (sourceTier.TraceConfiguration.Traversability.Barriers is UtilityTraceConditionalExpression expression) { ConditionBarrierExpression.Text = ExpressionToString(expression); _initialExpression = expression; } // Setting DataContext will resolve the data-binding in XAML. Configuration.DataContext = _configuration; // Set the traversability scope. sourceTier.TraceConfiguration.Traversability.Scope = UtilityTraversabilityScope.Junctions; } catch (Exception ex) { MessageBox.Show(ex.Message, ex.Message.GetType().Name, MessageBoxButton.OK, MessageBoxImage.Error); } finally { Configuration.IsEnabled = true; } }
private async void Initialize() { // As of ArcGIS Enterprise 10.8.1, using utility network functionality requires a licensed user. The following login for the sample server is licensed to perform utility network operations. AuthenticationManager.Current.ChallengeHandler = new ChallengeHandler(async(info) => { try { // WARNING: Never hardcode login information in a production application. This is done solely for the sake of the sample. string sampleServer7User = "******"; string sampleServer7Pass = "******"; return(await AuthenticationManager.Current.GenerateCredentialAsync(info.ServiceUri, sampleServer7User, sampleServer7Pass)); } catch (Exception ex) { Debug.WriteLine(ex.Message); return(null); } }); try { // Disable interaction until the data is loaded. View.UserInteractionEnabled = false; // Create and load the utility network. _utilityNetwork = await UtilityNetwork.CreateAsync(new Uri(FeatureServiceUrl)); // Create a default starting location. UtilityNetworkSource networkSource = _utilityNetwork.Definition.GetNetworkSource(DeviceTableName); UtilityAssetGroup assetGroup = networkSource.GetAssetGroup(AssetGroupName); UtilityAssetType assetType = assetGroup.GetAssetType(AssetTypeName); Guid globalId = Guid.Parse(GlobalId); _startingLocation = _utilityNetwork.CreateElement(assetType, globalId); // Set the terminal for this location. (For our case, we use the 'Load' terminal.) _startingLocation.Terminal = _startingLocation.AssetType.TerminalConfiguration?.Terminals.FirstOrDefault(term => term.Name == "Load"); // Get a default trace configuration from a tier to update the UI. UtilityDomainNetwork domainNetwork = _utilityNetwork.Definition.GetDomainNetwork(DomainNetworkName); _sourceTier = domainNetwork.GetTier(TierName); // Set the trace configuration. _configuration = _sourceTier.TraceConfiguration; // Set the default expression (if provided). if (_sourceTier.TraceConfiguration.Traversability.Barriers is UtilityTraceConditionalExpression expression) { _expressionLabel.Text = ExpressionToString(expression); _initialExpression = expression; } // Set the traversability scope. _sourceTier.TraceConfiguration.Traversability.Scope = UtilityTraversabilityScope.Junctions; } catch (Exception ex) { new UIAlertView(ex.GetType().Name, ex.Message, (IUIAlertViewDelegate)null, "Error loading network", null).Show(); } finally { View.UserInteractionEnabled = true; } }