POST
|
You cannot use Add Trace Configuration. Use Trace and fill it out as you want. Then use the Trace to Trace Configuration tool in the UtilityDataManagementSupport toolbox. This uses the python syntax from trace and converts it to a Trace Configuration https://esri.github.io/Utility-Data-Management-Support-Tools/docs/3.3/Trace2Config.html
... View more
07-24-2024
01:23 AM
|
0
|
2
|
215
|
POST
|
You need to generate a trace configuration that has that information. The Add Trace Configuration tool currently does not expose that information, so you need to create a Trace with Feature Output and define the fields, and use the Trace to Trace Config tool to create the Trace Configuration as this uses Import Trace Configuration and will create a trace config with the feature field and network attribute information.
... View more
07-24-2024
01:11 AM
|
0
|
4
|
219
|
POST
|
Can you share your asset package? Lots of variables here. Schema only is fine.
... View more
07-24-2024
12:27 AM
|
0
|
0
|
267
|
POST
|
take a look at the Update Related tool in this toolbox. It will generate the Attribute rule for you https://github.com/Esri/arcade-expressions/blob/master/attribute_assistant/AttributeAssistant.atbx
... View more
07-22-2024
10:18 AM
|
0
|
0
|
137
|
POST
|
Without running update subnetwork, you would need to run a Subnetwork Controller trace to identify the controllers and then use a process to copy attributes from the selected controller(s) to the edited features.
... View more
07-15-2024
07:45 AM
|
1
|
0
|
180
|
POST
|
hmm, you will have to work with tech support. I did not think Dirty Areas where posted. But it looks like it is failing as there is a duplicate GlobalID on them
... View more
07-12-2024
12:15 PM
|
0
|
1
|
353
|
POST
|
Geometry is immutable, so convert to dictionary var p = Polyline(
{
paths: [
[
[-97.06138, 32.837, 0],
[-97.06133, 32.836, 0],
[-97.06124, 32.834, 0],
[-97.06127, 32.832, 0]
]
],
hasZ: true,
spatialReference: { wkid: 3857 }
}
);
console(p);
var p_z = Dictionary(p)
for(var i in p_z['paths']){
for(var j in p_z['paths'][i]){
p_z['paths'][i][j][2] = 50
}
}
return Polyline(p_z)
... View more
07-12-2024
05:47 AM
|
0
|
0
|
274
|
POST
|
Verify might be a bad tool to build a simple repo, it seems to have some user name requirements: The network topology must be enabled. When working with an enterprise geodatabase, the database connection must be from a branch versioned workspace. When working with an enterprise geodatabase, the Input Utility Network parameter value must be from a database connection established as the database utility network owner. When working with an enterprise geodatabase, the connected ArcGIS Enterprise portal account must be the portal utility network owner. If you review the server logs, does it provide more info, such as what user is being sent? Since it is a GP service, I wonder if it is using the ArcGIS user account
... View more
07-12-2024
05:29 AM
|
0
|
0
|
508
|
POST
|
Do you need it as an attribute? You could calculate it on demand in a pop up. You could also look at using a propagator. What kind and of info are you trying to set on each feature? For a pop up, take a look at the Subnetwork Popup option in the Configure UN layer tool. https://esri.github.io/Utility-Data-Management-Support-Tools/docs/3.3/ConfigureUtilityNetworkLayers.html The code is below(This is not usable as it has the variables in it that the tool sets for you, so run the tool to get a usable version) // This script will traverse the subnetwork table to find all neighboring and parent subnetworks
// ************* User Variables *************
// This section has the functions and variables that need to be adjusted based on your implementation
Expects($feature, @subnetwork_fields@);
var subnetwork_name_fields = [@subnetwork_fields@];
// subnetwork_tier_names and subnetwork_tier_ranks should be an empty list for partitioned network, for hierarchical, it needs to align with subnetwork_name_fields
var subnetwork_tier_names = [@tier_names@];
var subnetwork_tier_ranks = [@tier_ranks@];
var device_source_id = null; // this line will be replaced at runtime
var junction_object_source_id = null; // this line will be replaced at runtime
var subnetwork_query_fields = ['subnetworkname', 'globalid', 'featuresourceid', 'featureglobalid', 'tierrank', 'tiername'];
// The subnetwork table in a feature service is always layer id 500002 or named Subnetworks
// The subnetwork table in a FGDB UN is based on the DSID, it will be something like UN_5_Subnetwork
var subnetwork_table = FeatureSetByName($datastore, '@subnetwork_table@', subnetwork_query_fields, false);
// The device class is the only class that can be controllers, use its map name or layer ID
// For services this is the name in the feature service or the layer ID
// In a FGDB, use the name of the feature class in the GDB
var device_table = FeatureSetByName($datastore, '@device@', [@subnetwork_fields@, 'globalid'], false);
var jo_table = FeatureSetByName($datastore, '@junction_objects@', [@subnetwork_fields@, 'globalid'], false);
// Change this to show results at different parent tiers. 0 shows only subnetworks the feature is on and its adjacent tiers
// Value needs to be positive
// 1 is all subnetworks on the current tier and all subnetwork in tier rank minus the value
// This is only for partitions
var rank_offet = 0;
// ************* End User Variables Section *************
// A list to store info for debugging
var debug_info = [];
function get_subnetworks(controller_table, feature_global_ids, current_subnetwork, controller_subnetworks) {
// locally defined to not override global scope
if (Count(feature_global_ids) == 0) {
return;
}
var features = Filter(controller_table, "globalid IN @feature_global_ids");
for (var feat in features) {
// Store the device into a global variable
Push(controller_features, feat);
// If a controller has a parent network, the networks are concatenated with ::, continue if no parent
if (Find('::', feat[current_subnetwork_field], 0) == -1) {
continue;
}
// Split on the subnetwork concatenation string
var feat_sub = Split(feat[current_subnetwork_field], '::');
for (var j in feat_sub) {
// Only store the network if it is a parent, do not store the network that the controller is controlling
if (feat_sub[j] != current_subnetwork) {
Push(controller_subnetworks, feat_sub[j]);
}
}
}
}
function get_parents(current_subnetwork) {
// Filter the subnetwork table to get the controllers for the subnetwork the feature is on
var add_sql = "";
if (hier_tier_name != '')
{
add_sql = ` AND TIERNAME = '${hier_tier_name}'`;
}
var results = Filter(subnetwork_table, `subnetworkname = @current_subnetwork${add_sql}`);//AND isdirty = 0
//Debug info to help look at the queries being made
//push(debug_info,'subnetworkname = ' + current_subnetwork + ' AND isdirty = 0');
var device_global_ids = [];
var jo_global_ids = [];
// Create a list of the controllers global IDs for the features subnetwork
// NOTE: Count does not work on results
for (var result in results) {
// Store the rank of the subnetwork the feature is on, if the feature is on more than one, store the lowest
if (hier_tier_name != ''){
feature_tier_rank = hier_tier_rank;
feature_tier_name = hier_tier_name;
}
else if (includes(features_subnetworks, result.subnetworkname) &&
(IsEmpty(feature_tier_rank) || result.tierrank < feature_tier_rank)) {
feature_tier_rank = result.tierrank;
feature_tier_name = result.tiername;
}
// exit on first feature not in the range of ranks
if (result.tierrank + Abs(rank_offet) < feature_tier_rank) {
return;
}
if (IndexOf(controller_guid, result.featureglobalid) != -1){
continue
}
Push(controller_guid, result.featureglobalid);
// Check the features source ID to see if it is a device or JO
iif(result.featuresourceid == device_source_id,
Push(device_global_ids, result.featureglobalid),
Push(jo_global_ids, result.featureglobalid));
Push(subnetwork_rows, result);
}
// Return if no new subnetworks
if (Count(device_global_ids) == 0 && Count(jo_global_ids) == 0) {
return;
}
// Filter the device and JO class to get the subnetwork names from the controller feature
var controller_subnetworks = [];
get_subnetworks(device_table, device_global_ids, current_subnetwork, controller_subnetworks);
get_subnetworks(jo_table, jo_global_ids, current_subnetwork, controller_subnetworks);
// If no parent networks are found, exit function
if (Count(controller_subnetworks) == 0) {
return;
}
// Get a unique set of subnetworks
controller_subnetworks = Distinct(controller_subnetworks);
// Loop through all parents, and store into global variable
// using recursion, call get parents for each parent
for (var parent_sub_idx in controller_subnetworks) {
get_parents(controller_subnetworks[parent_sub_idx]);
}
return;
}
function create_result() {
// If no controllers where found, ie, feature is not on a subnetwork, exit
if (Count(controller_guid) == 0) {
if (hier_tier_name != "") {
return hier_tier_name + ": Unknown Subnetwork\n";
}
else {
return current_subnetwork_field + ": Unknown Subnetwork\n";
}
}
// Dict of arrays with key as tier rank, each subnetwork controller row is store in here
var results_dict = {};
// Dict of strings with key as tier rank, each values is the subnetwork name
var tier_names = {};
// Array of the tier ranks as int
var tier_ranks = [];
// the current tier rank the feature resides on
// Loop through the subnetwork rows found in get_parents
for (var rowidx in subnetwork_rows) {
// Store the row using the loop index
var subnetwork_row = subnetwork_rows[rowidx];
// Convert the tierrank to text as dict keys must be strings
var tier_rank = Text(subnetwork_row.tierrank);
// If the tier name as not been stored yet, store into list with tier_rank as key
if (HasKey(tier_names, tier_rank) == False) {
tier_names[tier_rank] = subnetwork_row.tiername;
}
// Store the current rank the feature resides on, do not store into result dict, as the current subnetwork is
// displayed separately
if (Includes(features_subnetworks, subnetwork_row.subnetworkname)) {
continue;
}
// Store the tier rank, as a number, into array to arrange results
Push(tier_ranks, subnetwork_row.tierrank);
// Init the dict with the tier rank as the key as an array
if (HasKey(results_dict, tier_rank) == False) {
results_dict[tier_rank] = [];
}
// Add to the array in the dict by tier rank the subnetwork name
Push(results_dict[tier_rank], subnetwork_row.subnetworkname);
}
if (Count(tier_ranks) > 1) {
// Get a unique list of tier ranks
tier_ranks = Distinct(tier_ranks);
// Sort the tier in descending order
tier_ranks = Reverse(Sort(tier_ranks));
}
// Create the result value, first with tier the feature is on
var result_string = feature_tier_name + ": " + Concatenate(Distinct(features_subnetworks), ', ') + " \n";
// Loop through all the ranks, highest first
for (var key_idx in tier_ranks) {
// Get the key as text
var tier_key = Text(tier_ranks[key_idx]);
if (IsEmpty(results_dict[tier_key])) {
// No other subnetworks are on the features tier
continue;
}
if (Text(feature_tier_rank) == tier_key) {
// If you want to display the information about other subnetworks on the same tier as the feature, change
// the line below,
// tier_names[tier_key] + " - " can be added to show the name of the subnetwork
result_string = result_string + "Adjacent: " + Concatenate(Distinct(results_dict[tier_key]), ', ') + " \n";
} else {
result_string = result_string + tier_names[tier_key] + " Tier - " + Concatenate(Distinct(results_dict[tier_key]), ', ') + " \n";
}
}
return result_string;
}
// Init Global Variables
var controller_guid = [];
var controller_features = [];
var subnetwork_rows = [];
var current_subnetwork_field = null;
var hier_tier_name = '';
var hier_tier_rank;
var feature_tier_rank;
var feature_tier_name;
var features_subnetworks;
if (IsEmpty(subnetwork_table) == true) {
return "Subnetwork table not found";
}
if (IsEmpty(device_table) == true) {
return "Device table not found";
}
if (IsEmpty(jo_table) == true) {
return "Junction Object table not found";
}
var results = [];
for(var i in subnetwork_name_fields){
controller_guid = [];
controller_features = [];
subnetwork_rows = [];
current_subnetwork_field = subnetwork_name_fields[i];
if (Count(subnetwork_name_fields) == Count(subnetwork_tier_names))
{
hier_tier_name = subnetwork_tier_names[i];
hier_tier_rank = subnetwork_tier_ranks[i];
}
else
{
hier_tier_name = '';
hier_tier_rank = -1;
}
features_subnetworks = Distinct(Split($feature[current_subnetwork_field], '::'));
for (var i in features_subnetworks) {
get_parents(features_subnetworks[i]);
}
// Call Get Parents to get parent Subnetworks
Push(results, create_result());
}
//return text(debug_info);
return Concatenate(results, '\n');
... View more
07-12-2024
04:45 AM
|
0
|
2
|
235
|
POST
|
Can you review the ArcGIS Server Logs and see if they provide any more details? You might need to set the to debug mode first. You can use the https://esri.github.io/Utility-Data-Management-Support-Tools/docs/3.3/ExtractFileLogs.html or the https://esri.github.io/Utility-Data-Management-Support-Tools/docs/3.3/ExtractRESTLogs.html to parse the logs and make them easier to search.
... View more
07-11-2024
12:45 PM
|
0
|
3
|
402
|
POST
|
Technically, all classes are datasets. Glad it is working now
... View more
07-10-2024
04:11 AM
|
1
|
0
|
293
|
POST
|
That is the FeatureDataset, not the Utility Network.
... View more
07-10-2024
03:27 AM
|
1
|
2
|
303
|
POST
|
I updated the post to include a new toolbox for 3.3 that resolves the issue. Can you test it out?
... View more
07-09-2024
08:59 AM
|
0
|
1
|
204
|
Title | Kudos | Posted |
---|---|---|
1 | 4 weeks ago | |
1 | 10-28-2023 02:26 AM | |
1 | 09-14-2024 06:46 AM | |
1 | 09-17-2024 05:31 AM | |
1 | 09-03-2024 06:49 AM |
Online Status |
Offline
|
Date Last Visited |
yesterday
|