-----------------------------------

Acquista i software ArcGIS tramite Studio A&T srl, rivenditore autorizzato dei prodotti Esri.

I migliori software GIS, il miglior supporto tecnico!

I migliori software GIS, il miglior supporto tecnico!
Azienda operante nel settore GIS dal 2001, specializzata nell’utilizzo della tecnologia ArcGIS e aderente ai programmi Esri Italia Business Network ed Esri Partner Network

-----------------------------------



giovedì 29 ottobre 2026

ArcGIS Utility Network — Part 1: Architecture, Data Model, Network Versions & Enterprise Engineering

NicoGIS Tech Weekly · Engineering Deep Dive · 29 ottobre 2026 · Serie ArcGIS Utility Network, parte 1 di 8

ArcGIS Utility Network — Part 1: Architecture, Data Model, Network Versions & Enterprise Engineering

Dal modello topologico al controller dataset, dai terminal alle associazioni non spaziali, dal branch versioning alle reti telecom: una lettura ingegneristica dell'Utility Network come piattaforma per sistemi infrastrutturali complessi.

1. Perché Utility Network è un cambio di paradigma

Una rete tecnica non coincide con un insieme di geometrie. Due conduttori possono intersecarsi in planimetria senza essere elettricamente connessi; due oggetti possono essere collegati senza condividere coordinate; un dispositivo può avere terminal multipli e consentire il passaggio della risorsa solo lungo determinati percorsi interni. Per rappresentare queste condizioni occorre distinguere almeno tre livelli: geometria, connettività e traversabilità.

ArcGIS Utility Network (UN) è un geodatabase controller dataset che coordina feature class, tabelle di oggetti non spaziali, associazioni, regole, attributi di rete e un indice topologico. La rete viene interrogata tramite strumenti di tracing e servizi che applicano una semantica più ricca del semplice test di intersezione geometrica.

Il grafo astratto può essere espresso come G = (V, E, A, T, R), dove V sono junction e device, E sono linee e edge object, A sono associazioni, T sono terminal e percorsi interni e R rappresenta regole e vincoli. Questa è una formalizzazione concettuale dell'autore, non lo schema fisico interno pubblicato da Esri.

Geodatabase / Feature Dataset │ ├── Utility Network [controller dataset] │ ├── Structure Network [condivisa] │ │ ├── Structure Junction / Line / Boundary │ │ └── Structure Junction Object / Edge Object │ ├── Domain Network A [es. Electric] │ │ ├── Device / Junction / Line / Assembly / SubnetLine │ │ └── Junction Object / Edge Object │ ├── Domain Network B [es. Telecom] │ ├── Network Rules / Attributes / Terminal Configurations │ ├── Associations [system maintained] │ └── Network Topology [indice e stato di validazione] └── Service Territory [limite geografico operativo]

La conseguenza architetturale è importante: un modello UN deve essere progettato partendo dalla semantica del sistema fisico e dalle operazioni richieste, non semplicemente convertendo shapefile e relationship class.

2. Structure Network e Domain Networks

2.1 Structure Network: il supporto fisico

Ogni Utility Network contiene una Structure Network condivisa. Rappresenta le strutture che sostengono, ospitano o proteggono le risorse: pali, cavidotti, pozzetti, armadi e strutture equivalenti. Non bisogna confondere l'appartenenza a una struttura con il passaggio effettivo di una risorsa: un cavo contenuto in un condotto e un apparato fissato a un palo sono relazioni diverse dalla connettività funzionale.

2.2 Traditional Domain Network

Le domain network tradizionali rappresentano la distribuzione di una risorsa: energia, acqua, gas o sistemi analoghi. Sono organizzate in tiers e subnetworks, con controller di tipo source o sink. La definizione di tier può essere partitioned o hierarchical, in funzione del modo in cui vengono organizzate le subnetworks.

2.3 Telecom Domain Network: perché non è soltanto una nuova feature class

La documentazione ArcGIS Pro 3.6 distingue le traditional domain networks dalle telecom domain networks. Queste ultime affrontano la cardinalità elevata tipica delle reti telecom e introducono un modello più adatto a raggruppamenti, codifiche cromatiche e circuit modeling. Il supporto richiede Utility Network Version 8 o successiva: l'errore documentato 003946 è esplicito su questo prerequisito.

La differenza concettuale è profonda. Nelle telecom occorre distinguere risorse fisiche (fibra, cavo, connettore), connettività logica, assegnazioni e circuiti. Una singola tratta fisica può ospitare molti elementi con identità e cicli di vita diversi. Una progettazione basata solo su feature lineari rischia di esplodere in cardinalità e produrre query e manutenzioni ingestibili.

3. Asset Group, Asset Type e regole di rete

Le classi della domain network definiscono famiglie strutturali di oggetti. La classificazione funzionale viene ulteriormente specializzata mediante Asset Group (implementato come subtype) e Asset Type (codificato tramite domini di valori). Per esempio, la classe Device può contenere gruppi di trasformatori, interruttori e regolatori; ciascun gruppo può avere tipologie specifiche.

Questa classificazione guida configurazioni dei terminal, attributi, regole e comportamenti di tracing. Non è soltanto una tassonomia descrittiva. La scelta della granularità ha costi: troppi asset type aumentano la complessità di governance; troppo pochi impediscono di rappresentare correttamente vincoli reali.

Una buona regola di progettazione è introdurre una distinzione di asset type quando cambia almeno una delle seguenti dimensioni: connettività ammessa, configurazione dei terminal, semantica di rete, attributi tecnici obbligatori o comportamento operativo.

4. Il modello topologico: geometry ≠ connectivity ≠ traversability

La geometria indica dove si trova un oggetto; la connettività indica con chi è connesso; la traversabilità indica se e in quale direzione un'analisi può attraversarlo. Un dispositivo con terminal multipli può essere geometricamente coincidente con una linea e tuttavia non consentire un percorso di attraversamento per lo stato operativo corrente.

La Network Topology è un indice gestito dal sistema che supporta tracing e network diagrams. Dopo modifiche rilevanti, le dirty areas indicano porzioni per cui l'indice non è allineato ai dati modificati. La validazione ricostruisce le informazioni interessate e può individuare errori di rete. Dirty area non significa automaticamente dato errato: significa che la topologia deve essere rivalidata.

Per un ambiente enterprise il ciclo operativo è:

Edit features / associations ↓ Dirty areas created ↓ Validate network topology ↓ Rules / connectivity checks ↙ ↘ Errors Validated index ↓ Trace / Diagram / Subnetwork

La seconda puntata della serie approfondirà le categorie di errori, la validazione incrementale, le strategie di partizionamento geografico e l'interazione con il branch versioning.

5. Associations: connettività senza coincidenza spaziale

Le associazioni sono relazioni native della Utility Network, conservate in strutture interne mantenute dal sistema. Non sono equivalenti a una relationship class generica e non vanno manipolate direttamente mediante SQL.

AssociationSemanticaEsempioConseguenza
ConnectivityConnessione funzionale non necessariamente coincidentePorta di apparato ↔ fibraPuò influenzare il grafo attraversabile
ContainmentUn oggetto è contenuto in un altroGiunzione ↔ armadioGerarchia di contenimento e rappresentazione
Structural attachmentUn asset è sostenuto da una strutturaCavo ↔ paloRelazione strutturale, non passaggio della risorsa

Le associazioni sono soggette a regole. Prima di creare containment o structural attachment occorre definire i ruoli appropriati. In un progetto reale la matrice delle associazioni ammesse è un deliverable architetturale da versionare e sottoporre a review, non una configurazione improvvisata durante il data loading.

6. Terminal e percorsi interni dei device

I terminal consentono di rappresentare device nei quali il flusso attraversa punti di ingresso e uscita differenti. Una terminal configuration definisce terminal e percorsi interni consentiti. Per esempio, un apparato a tre terminal non deve essere modellato automaticamente come una junction in cui ogni ingresso è connesso a ogni uscita.

La traversabilità dipende dalla combinazione di connettività, configurazione dei terminal, stato operativo, network attributes e parametri di trace. La correttezza dei risultati di tracing richiede che queste componenti siano coerenti: non basta disegnare correttamente la geometria.

7. Tiers, subnetworks e controllers

Una tier definisce una classe di subnetworks che condividono proprietà e vincoli. Una subnetwork è una porzione topologicamente definita della rete, associata a uno o più controller. I controller identificano punti di origine o destinazione coerenti con il modello source-based o sink-based.

Nella distribuzione elettrica, per esempio, la separazione fra livelli di tensione può corrispondere a tier distinte. Nelle reti idriche si possono modellare zone e livelli gerarchici. Non esiste una mappatura universale fra tier e categoria cartografica: la progettazione deve partire dalle operazioni di tracing, dalla gestione delle subnetworks e dalle regole del dominio.

La gestione delle subnetworks introduce processi specifici di update e validazione. È un errore considerare il nome della subnetwork come un semplice campo descrittivo aggiornabile senza conseguenze.

8. Network attributes: pesi, condizioni e filtri

I network attributes forniscono informazioni utilizzabili dal tracing, come stati, valori e proprietà aggregate o confrontabili. Possono derivare da attributi delle feature attraverso assegnazioni configurate. Il tracing può utilizzare condizioni e barriere basate su questi valori, consentendo analisi che riflettono lo stato operativo della rete.

È utile distinguere attributi di business (inventario, proprietà, codici gestionali) da attributi che partecipano direttamente al comportamento della rete. Non ogni colonna della feature class deve diventare un network attribute: il costo della configurazione e della manutenzione deve essere giustificato dal caso d'uso.

9. Enterprise architecture: servizi, geodatabase e responsabilità

ArcGIS Pro / Web Client / API Consumer │ ArcGIS Enterprise │ ┌────────────┼───────────────┐ │ │ │ Feature Utility Network Diagram Service Network Service │ Service │ └────────────┼───────────────┘ │ Version Management (when enabled) │ Enterprise Geodatabase (branch versioned) │ Utility Network Controller Dataset

Le capability non sono intercambiabili. Il Feature Service espone query e modifiche alle feature; il Utility Network Service fornisce operazioni come trace, validazione e gestione delle subnetworks; il Network Diagram Service gestisce diagrammi; il Version Management Service supporta i workflow di branch versioning quando abilitato.

La pubblicazione richiede dati registrati, prerequisiti di ownership e configurazione coerente del servizio. È consigliabile assegnare ID stabili ai layer prima della pubblicazione: un overwrite che modifica gli ID può rompere i client che li referenziano direttamente.

Licenze: i requisiti sono cambiati nel tempo. La documentazione Enterprise 11.4 indica l'estensione ArcGIS Advanced Editing per creazione, pubblicazione ed editing, mentre la consultazione e il tracing hanno requisiti differenti. Verificare sempre la release effettivamente installata e il modello di licensing applicabile.

10. Branch versioning: isolamento delle modifiche e consistenza

Nel deployment enterprise basato su servizi, il feature dataset della Utility Network deve essere registrato come branch versioned prima della pubblicazione. L'editing può avvenire sulla default version oppure su named versions quando la capability Version Management è disponibile e configurata.

Il branch versioning non è un sostituto della topologia: risolve un problema diverso, quello dell'isolamento e dell'integrazione delle modifiche concorrenti. Reconcile/post, conflitti e validazione topologica devono essere trattati come fasi distinte della pipeline di qualità. Un edit che non produce un conflitto di versione può comunque violare una regola di rete.

La progettazione delle versioni dovrebbe considerare confini dei cantieri, durata delle sessioni, dimensione dei change set e responsabilità di approvazione. Le versioni a vita indefinita aumentano il rischio operativo di divergenza.

11. Versioning: tre numeri da non confondere

ArcGIS Pro version indica la release del client e dell'SDK. ArcGIS Enterprise version indica la release della piattaforma server. Utility Network Version indica la versione dello schema del dataset. Un upgrade di ArcGIS Pro non implica automaticamente un upgrade dello schema Utility Network.

Utility Network VersionArcGIS Pro minimoArcGIS Enterprise minimoNota
42.610.8.1Compatibilità storica
52.710.9Schema successivo
63.011.0Aggiornamenti interni per Pro 3.0 e diagrammi
73.311.3Supporto 64-bit Object IDs e nuove capacità
8Verificare la matrice ufficiale della release corrente prima del deploymentPrerequisito per Telecom Domain Network

La tabella 4–7 è tratta dalla matrice ufficiale ArcGIS Pro 3.5; la presenza di UN 8 è documentata nelle guide ArcGIS Pro 3.6. La combinazione esatta di client e server per creare, aggiornare e consumare UN 8 va verificata sulla matrice aggiornata della versione effettivamente distribuita. Non va inferita dalla sola presenza della funzione nell'interfaccia.

L'upgrade del dataset è un'operazione amministrativa distinta dall'aggiornamento software. Può richiedere prerequisiti di geodatabase, esclusività di accesso, gestione della topologia e operazioni successive all'upgrade. Occorrono backup, ambiente di prova, inventario dei client e test di regressione.

12. SDK C#: introspezione del modello, non accesso diretto alle tabelle di sistema

L'ArcGIS Pro SDK espone ArcGIS.Core.Data.UtilityNetwork. L'API è orientata alle operazioni sui dati e all'ispezione del modello; la modifica dello schema (domain networks, regole e configurazioni) deve essere eseguita mediante geoprocessing. Molte operazioni SDK devono essere chiamate sul Main CIM Thread attraverso QueuedTask.Run. Gli oggetti geodatabase vanno rilasciati con Dispose/using.

Il seguente frammento è uno scheletro di ispezione per un add-in ArcGIS Pro con riferimenti SDK correttamente configurati; il nome del dataset deve essere recuperato dalla connessione utilizzata, perché può differire fra workspace enterprise e feature service.

using ArcGIS.Core.Data;
using ArcGIS.Core.Data.UtilityNetwork;
using ArcGIS.Desktop.Framework.Threading.Tasks;

// 'geodatabase' è un oggetto Geodatabase già aperto.
// Il nome va risolto nel workspace effettivamente utilizzato.
await QueuedTask.Run(() =>
{
    using UtilityNetwork un =
        geodatabase.OpenDataset<UtilityNetwork>(
            "NomeUtilityNetwork");

    UtilityNetworkDefinition definition = un.GetDefinition();
    string schemaVersion = definition.GetSchemaVersion();

    foreach (DomainNetwork domain in definition.GetDomainNetworks())
    {
        System.Diagnostics.Debug.WriteLine(
            $"{domain.Name} - structure: {domain.IsStructureNetwork}");
    }

    System.Diagnostics.Debug.WriteLine(
        $"Utility Network schema: {schemaVersion}");
});

Nota di verifica: le firme e le proprietà devono essere ricontrollate contro l'API Reference della specifica versione dell'SDK usata per compilare; questo snippet illustra il percorso di accesso a UtilityNetworkDefinition e non costituisce un progetto add-in completo. In produzione conviene trattare la configurazione letta come uno snapshot di metadati e non come una fonte modificabile direttamente.

13. Laboratorio ArcPy: inventario della rete senza alterare il dataset

Un primo laboratorio sicuro consiste nell'estrarre le proprietà di una Utility Network e produrre un inventario confrontabile fra ambienti. Il codice seguente usa arcpy.Describe e arcpy.ListDatasets come base esplorativa; i campi disponibili sull'oggetto Describe dipendono dalla release e dal tipo di workspace.

import arcpy
import json
from datetime import datetime, timezone

workspace = r"C:\GIS\Connections\production.sde"
arcpy.env.workspace = workspace

inventory = {
    "collected_utc": datetime.now(timezone.utc).isoformat(),
    "workspace": "enterprise-geodatabase",
    "datasets": []
}

for dataset_name in arcpy.ListDatasets() or []:
    desc = arcpy.Describe(dataset_name)
    inventory["datasets"].append({
        "name": dataset_name,
        "dataType": getattr(desc, "dataType", None),
        "datasetType": getattr(desc, "datasetType", None)
    })

with open("un_inventory.json", "w", encoding="utf-8") as stream:
    json.dump(inventory, stream, indent=2, ensure_ascii=False)

print("Inventario salvato:", len(inventory["datasets"]))

Questo script è volutamente read-only e non promette di identificare automaticamente ogni proprietà interna della Utility Network. La fase successiva consiste nell'usare gli strumenti e le API specifiche della release per esportare regole, domain networks, tier e configurazioni e confrontare gli ambienti con un diff strutturale.

14. Performance engineering: cosa misurare prima di scalare

Una rete con milioni di feature non si ottimizza contando soltanto le righe del database. Occorre misurare cardinalità delle associazioni, numero di oggetti non spaziali, estensione delle dirty areas, dimensione dei trace, costo della validazione, profondità delle gerarchie di containment, carico dei servizi e frequenza delle operazioni concorrenti.

IndicatorePerché contaMetodo di misura
Trace P50/P95/P99Rileva code e outlierTelemetry lato client + log ArcGIS Server
Validazione per areaMisura costo incrementale della topologiaDurata e dirty areas prima/dopo
Associazioni per assetIndividua hotspot di cardinalitàInventario semantico e query supportate
Reconcile/postQuantifica costo della collaborazioneDurata, conflitti e dimensione change set
Timeout e saturazione serviziIndividua colli di bottiglia operativiMetriche server e richieste concorrenti

Le API REST sincrone possono essere esposte a timeout per operazioni lunghe. Alcuni endpoint offrono modalità asincrone che delegano il lavoro al geoprocessing server: non è automaticamente più veloce, ma è più adatto ai job prolungati. Un benchmark corretto separa latenza di rete, tempo di esecuzione server, serializzazione e rendering.

15. Threat model e governance

La Utility Network è un sistema informativo operativo: un risultato di trace errato può influenzare decisioni su interruzioni, isolamento o manutenzione. La sicurezza deve comprendere autenticazione, autorizzazione alle operazioni di editing, protezione delle credenziali del geodatabase, audit, gestione dei privilegi del portal account e controlli sulle modifiche di schema.

Le regole di rete proteggono la coerenza del modello ma non sostituiscono autorizzazioni, revisione delle modifiche e controlli organizzativi. Un utente autorizzato a modificare una feature può comunque introdurre uno stato fisicamente plausibile ma operativamente scorretto. Per i processi critici servono validazione, revisione e tracciabilità della provenienza delle modifiche.

16. Decision record: come scegliere il modello corretto

Prima di implementare una Utility Network, un Architecture Decision Record dovrebbe rispondere a queste domande: quali trace devono essere supportati? Quali asset richiedono terminal? Quali relazioni sono connectivity, containment o attachment? Quali oggetti sono non spaziali? Quali livelli operativi diventano tiers? Qual è la versione minima compatibile con client e server? Come verranno gestite le modifiche concorrenti? Come verranno misurate validazione e performance?

La qualità di queste decisioni pesa più della velocità di importazione iniziale. Una rete modellata in modo improprio può richiedere costose trasformazioni successive di regole, associazioni e dati.

17. Roadmap tecnica della serie

  1. Part 1 — Architecture, Data Model, Network Versions & Enterprise Engineering (questa puntata).
  2. Part 2 — Network Topology: Dirty Areas, Validation, Error Engine & Performance.
  3. Part 3 — Network Rules, Associations & Terminal Engineering.
  4. Part 4 — Subnetworks, Controllers, Update Pipelines & Propagation.
  5. Part 5 — Trace Engine: Upstream, Downstream, Isolation & Named Configurations.
  6. Part 6 — Branch Versioning: Reconcile/Post, Conflict Resolution & Multiuser Editing.
  7. Part 7 — ArcGIS Pro SDK C#, ArcPy & REST: Advanced Developer Laboratory.
  8. Part 8 — Enterprise Architecture: Migration, Operations, Tuning & Automation.

18. Riferimenti ufficiali e approfondimenti

Conclusione. Utility Network è un modello semantico e topologico governato, non una semplice rappresentazione GIS. La sua progettazione richiede la stessa disciplina utilizzata per sistemi transazionali e piattaforme distribuite: contratti di schema, compatibilità, controllo della consistenza, osservabilità, sicurezza e test riproducibili. Nella prossima puntata analizzeremo il motore topologico e la validazione delle dirty areas fino ai failure mode operativi.

Nessun commento: