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

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

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



mercoledì 4 novembre 2026

ArcGIS Utility Network — Network Topology, Dirty Areas & Validation Engine

NicoGIS Tech Weekly · Utility Network Engineering Series · Capitolo 2

ArcGIS Utility Network — Network Topology, Dirty Areas & Validation Engine

Dall'editing delle feature all'indice topologico: come ArcGIS Utility Network mantiene la coerenza del grafo, perché nascono le dirty areas, come funziona la validazione e quali invarianti deve garantire un'architettura enterprise.

4 novembre 2026 · Livello: Senior GIS Engineer / Software Architect · ArcGIS Pro, ArcGIS Enterprise, ArcPy, REST, C#

Continuità con il Capitolo 1. Dopo aver introdotto domain network, tiers, asset groups/types, terminal configurations, associations e branch versioning, passiamo al cuore operativo: la network topology. Non è la geometria delle feature e non è una semplice tabella di adiacenza: è la rappresentazione di connettività utilizzata dal motore per le analisi di rete.

1. Due rappresentazioni dello stesso mondo: feature space e topology space

Una Utility Network mantiene una distinzione essenziale fra feature space (feature, attributi, geometrie, associazioni) e network topology space (indice topologico usato per la connettività e il tracing). Le modifiche alle feature non implicano che ogni parte dell'indice venga immediatamente ricostruita. Questo disaccoppiamento rende possibile l'editing operativo, ma introduce una finestra di incoerenza controllata.

          EDITING / FEATURE SPACE                   TOPOLOGY SPACE
    +--------------------------------+       +---------------------------+
    | Devices / Junctions / Lines    |       | Connectivity index        |
    | Junction & Edge Objects        |       | Terminal connectivity     |
    | Associations / attributes      | ----> | Traversable relationships |
    +--------------------------------+       +---------------------------+
                  |                                      ^
                  v                                      |
          Dirty-area markers -------------------- Validate
          (delta / possible errors)             (evaluate & update)
Schema concettuale: non rappresenta il formato fisico interno proprietario dell'indice Esri.

Una linea che tocca geometricamente un device non è automaticamente attraversabile. Contano anche le regole di connessione, il gruppo/tipo di asset, i terminali, la presenza di associazioni esplicite e gli attributi che controllano la traversabilità. Una geometria apparentemente corretta può quindi produrre un errore di topologia.

2. Network topology: enable, disable e lifecycle

La topologia deve essere abilitata per poter eseguire correttamente le operazioni che dipendono dall'indice. L'operazione iniziale di Enable Network Topology costruisce la rappresentazione topologica e valuta gli elementi della rete; nelle successive sessioni di editing, la sincronizzazione avviene mediante validazione delle aree modificate.

OperazioneSignificatoUso corretto
Enable Network TopologyAbilita/costruisce la topologia e verifica la reteAttivazione dopo configurazione e caricamento
Disable Network TopologyDisabilita l'indice per operazioni di configurazione che lo richiedonoManutenzione amministrativa pianificata
Validate Network TopologyRivaluta gli elementi marcati come dirty nell'area richiestaFlusso operativo ordinario dopo modifiche
Rebuild Network TopologyRicostruzione/repair dell'indice nell'ambito supportatoRecupero da inconsistenze o failure, non routine

Una regola pratica: Validate non equivale a Rebuild. La validazione incrementale è progettata per il lavoro ordinario; il rebuild è una misura di riparazione, potenzialmente più onerosa. In geodatabase enterprise, i requisiti di versione e servizio vanno verificati prima di usare i comandi amministrativi.

3. Dirty areas: invalidazione incrementale dell'indice

Una dirty area indica che una porzione della topologia potrebbe non rappresentare più lo stato corrente delle feature. Può essere generata da editing geometrico, variazioni di attributi rilevanti per la rete o modifiche alle associazioni. Non è sinonimo di errore: dirty significa «da rivalutare», mentre error significa «violazione rilevata».

Si consideri un sezionatore elettrico spostato o riconfigurato. L'editing aggiorna la feature; l'indice topologico può ancora rappresentare lo stato precedente. La dirty area delimita la regione che necessita di validazione prima di affidarsi ai risultati del tracing.

Implicazione per outage management. Una traccia che attraversa un'area dirty può fallire oppure non riflettere gli ultimi edit. In un sistema operativo critico non si dovrebbe disabilitare silenziosamente la verifica di consistenza soltanto per ottenere una risposta.

3.1 Dirty non significa necessariamente errore

  1. L'operatore modifica un attributo di connettività.
  2. La modifica viene salvata nella versione di lavoro.
  3. La rete marca la regione interessata come dirty.
  4. La validazione valuta regole, geometria, terminali e relazioni.
  5. Se l'elemento è valido, l'indice viene aggiornato e la dirty area può essere eliminata; se è invalido, rimane un errore da correggere.

3.2 Errori persistenti e correzione

Le violazioni possono derivare da asset type incompatibili, connessioni non ammesse, terminali non corretti, geometrie non valide o associazioni incoerenti. La correzione richiede un intervento sui dati oppure, quando il modello di rete è sbagliato, sulla configurazione e sulle regole. Ripetere Validate senza correggere la causa non risolve un errore strutturale.

4. Il motore di validazione: modello concettuale e confini documentati

Esri espone la validazione attraverso ArcGIS Pro, geoprocessing e REST. Il dettaglio degli algoritmi e del formato fisico dell'indice topologico non è un contratto pubblico da cui dedurre strutture interne. È invece possibile descrivere il comportamento osservabile:

Requested validation extent
          |
          v
Identify intersecting dirty areas
          |
          v
Read affected network features / associations
          |
          v
Evaluate connectivity constraints and rules
          |
          +---- Invalid ----> Error feature / persistent dirty condition
          |
          +---- Valid ------> Update topology index / clear resolved dirty
          |
          v
Return status + discovered dirty subnetworks (where applicable)

La validazione può interessare soltanto un sottoinsieme delle dirty areas presenti nella rete. Il risultato di una chiamata non deve quindi essere interpretato come certificazione della consistenza dell'intera utility network. Inoltre, l'operazione REST può restituire discoveredSubnetworks: subnetworks marcate come dirty durante la validazione, da gestire nel successivo workflow di manutenzione delle subnetworks.

5. Validazione sincrona e asincrona

ArcGIS Pro distingue il comando Validate sulla ribbon, che usa elaborazione sincrona, dal geoprocessing tool Validate Network Topology, che in un'enterprise geodatabase utilizza elaborazione asincrona attraverso il servizio UtilityNetworkTools nella cartella System. Il servizio dedicato dispone di timeout appropriati per operazioni più lunghe.

ScenarioApproccioMotivo
Piccola area dopo editValidate su current extentFeedback immediato all'operatore
Molte dirty areasGeoprocessing asincronoDurata maggiore e gestione job
Riparazione indiceRebuild supportato e pianificatoNon confondere repair con validazione incrementale
Automazione serverREST + job tracking / orchestrazioneRetry controllati e audit

La dimensione geografica dell'extent non è un buon proxy universale del costo: una piccola area densamente connessa può contenere più elementi e associazioni di un'area molto grande. Il costo dipende dalla densità di feature, dal numero di dirty areas, dalle associazioni e dalla complessità della rete.

6. Workflow enterprise con branch versioning

In un'enterprise geodatabase branch-versioned, ogni workflow deve esplicitare quale versione viene modificata e validata. Non è sufficiente conoscere l'URL del feature service: le operazioni devono mantenere coerenti il contesto di versione, la sessione di editing e il successivo processo di reconcile/post.

DEFAULT
   |
   +--> Create named branch version
                |
                v
           Edit features
                |
                v
           Dirty areas
                |
                v
         Validate topology
                |
        +-------+-------+
        |               |
      Errors         No errors
        |               |
   Correct edits         v
        +----------> Reconcile / resolve conflicts
                            |
                            v
                           Post
                            |
                            v
                     Validate/verify target state
                     and subnetwork maintenance
Workflow logico: reconcile, post e validazione hanno prerequisiti e comportamenti dipendenti dalla versione e dal modello di servizio.

Una validazione effettuata in una named version non sostituisce automaticamente la verifica dello stato di DEFAULT dopo il post. Inoltre, la coerenza della network topology e lo stato aggiornato delle subnetworks sono due concetti distinti: un indice valido non implica necessariamente che tutte le subnetworks siano già state aggiornate.

7. REST API: validateNetworkTopology

La Utility Network Server REST API espone l'operazione POST /UtilityNetworkServer/validateNetworkTopology. Richiede i privilegi e le licenze appropriati (fra cui l'estensione ArcGIS Advanced Editing secondo la documentazione corrente), una topologia abilitata e un contesto di versione coerente. Sono supportate modalità sincrona e asincrona.

POST https://gis.example.org/server/rest/services/Utilities/Electric/FeatureServer/UtilityNetworkServer/validateNetworkTopology
Content-Type: application/x-www-form-urlencoded

f=json&token=REDACTED&gdbVersion=USER.QA_VERSION&validateArea={...}

Esempio schematico: i parametri obbligatori e la serializzazione della geometria dipendono dalla versione REST e dall'operazione scelta. Prima dell'esecuzione consultare lo schema ufficiale, inclusi sessionId, async e gli eventuali parametri di esecuzione richiesti. Non inserire token in log, query string o repository.

7.1 Contratto applicativo robusto

Un client di automazione dovrebbe registrare correlationId, versione, extent, orario, stato del job, errori e subnetworks scoperte. In caso di timeout di rete non è sicuro assumere che l'operazione server sia fallita: prima di ripetere un comando occorre recuperare lo stato del job, se disponibile.

8. Laboratorio ArcPy — ispezione e validazione di un'area

Il seguente esempio illustra il pattern di validazione in ArcGIS Pro con un Utility Network layer già configurato. La sintassi del geoprocessing tool va verificata contro la versione ArcGIS Pro in uso; l'esempio è intenzionalmente minimale per non introdurre parametri opzionali dipendenti dal rilascio.

import arcpy
from datetime import datetime, timezone

# Percorso di un layer Utility Network nel progetto ArcGIS Pro.
# In enterprise, utilizzare una connessione/servizio supportato.
un_layer = r"C:\GIS\Project\ElectricUtilityNetwork"

started = datetime.now(timezone.utc)
try:
    # L'extent può essere specificato tramite il parametro dedicato
    # del tool, a seconda della release e del contesto di esecuzione.
    result = arcpy.un.ValidateNetworkTopology(un_layer)
    print(result.getMessages())
except arcpy.ExecuteError:
    print(arcpy.GetMessages(2))
    raise
finally:
    elapsed = (datetime.now(timezone.utc) - started).total_seconds()
    print(f"Elapsed seconds: {elapsed:.2f}")

In laboratorio, eseguire prima una modifica controllata su una named version e verificare che compaia una dirty area. Validare, quindi osservare separatamente la scomparsa della dirty area e l'eventuale comparsa di errori. Per un test di errore, introdurre una connessione non consentita dalle regole della rete e ripetere la validazione.

Prerequisito importante. Il codice non crea un'utility network di prova e non bypassa licenze, servizi o privilegi. Il percorso del layer e i parametri vanno adattati alla propria installazione. Usare un dataset di test, non DEFAULT di produzione.

9. Laboratorio C# — ArcGIS Maps SDK for .NET: stato, dirty areas e validazione

Per applicazioni desktop .NET, Esri documenta un sample completo che carica la UtilityNetwork, crea una branch version, mostra il DirtyAreaTable, modifica feature, applica gli edit e avvia un job di validazione. Il pattern centrale è il seguente:

using Esri.ArcGISRuntime.Geometry;
using Esri.ArcGISRuntime.UtilityNetworks;

// utilityNetwork deve essere già caricato e associato
// a un servizio che supporta le capability richieste.
var state = await utilityNetwork.GetStateAsync();

Console.WriteLine($"Topology enabled: {state.IsNetworkTopologyEnabled}");
Console.WriteLine($"Dirty areas: {state.HasDirtyAreas}");
Console.WriteLine($"Errors: {state.HasErrors}");

if (!state.IsNetworkTopologyEnabled)
    throw new InvalidOperationException("Topology not enabled");

if (!utilityNetwork.Definition.Capabilities.SupportsValidateNetworkTopology)
    throw new NotSupportedException("Validation not supported");

Envelope extent = currentMapExtent; // Extent ricavato dalla vista
var job = utilityNetwork.ValidateNetworkTopology(extent);
var result = await job.GetResultAsync();

Console.WriteLine($"Remaining dirty areas: {result.HasDirtyAreas}");
Console.WriteLine($"New errors: {result.HasErrors}");

Il codice è un frammento integrabile, non un'applicazione standalone: utilityNetwork e currentMapExtent devono essere inizializzati dall'app. Inoltre, result.HasErrors descrive gli errori segnalati dal risultato della validazione, mentre GetStateAsync() fornisce lo stato della rete. Le due informazioni non sono intercambiabili.

10. Trace consistency: correttezza prima della disponibilità

Esri documenta che i trace dipendono dall'indice topologico e possono produrre errori o risultati non aggiornati quando attraversano aree dirty. Le API consentono di controllare la verifica della consistenza tramite la configurazione del trace. La decisione deve dipendere dal rischio applicativo:

ApplicazionePolitica suggeritaRischio accettabile
Outage management / manovre reteRichiedere consistenza e validazioneMolto basso
Analisi di impatto su infrastrutture criticheBloccare o segnalare dirty areaBasso
Ispezione e inventario non operativoPossibile tolleranza, con avviso esplicitoDipende dal caso d'uso
Analisi esplorativaConsentire risultati provvisori etichettatiPiù alto, se dichiarato

Disabilitare la validazione di consistenza può essere una scelta applicativa legittima per alcune attività, ma non corregge l'indice e non elimina l'incertezza del risultato.

11. Performance engineering: cosa misurare davvero

Un benchmark di validazione dovrebbe controllare almeno quattro dimensioni: densità delle feature, quantità di dirty areas, tipo di edit e versione della geodatabase. Il semplice tempo medio di esecuzione non è sufficiente.

MetricaDefinizioneInterpretazione
Validation duration P50/P95/P99Durata per jobDistribuzione della latenza operativa
Dirty area backlogAree non validate per versioneAccumulo di debito topologico
Validation error rateJob con errori / job totaliQualità dati e configurazione
Dirty-to-clean lead timeTempo fra edit e topologia aggiornataFreshness del grafo
Trace rejection rateTrace rifiutati per inconsistenzaImpatto sull'operatività
Discovered subnetworksSubnetworks marcate dirtyCarico della manutenzione successiva

11.1 Il problema del batch size

Un extent molto ampio riduce il numero di richieste ma può aumentare la durata e la contesa; extent piccoli producono job più gestibili, ma possono aumentare overhead e frammentazione del lavoro. Non esiste una dimensione ottimale universale. La scelta va misurata su dataset reali, distinguendo i tempi server dai tempi di rete e di attesa del job.

11.2 SQL Server e branch versioning

In un deployment enterprise, le prestazioni dipendono anche da statistiche, indici, dimensioni delle tabelle, I/O, concorrenza e query generate dal geodatabase. È però scorretto dedurre che ogni rallentamento della validazione sia causato da SQL Server: il costo può risiedere nella valutazione topologica, nella complessità delle associazioni o nei servizi GIS. Utilizzare osservabilità coordinata fra ArcGIS Server e database.

12. Error taxonomy e troubleshooting

Gli errori di utility network non dovrebbero essere gestiti come una singola categoria. Conviene classificarli per causa:

  • Geometry: posizionamenti e intersezioni non coerenti con la connettività prevista.
  • Asset classification: asset group/type incompatibili con le regole.
  • Terminals: assegnazioni e percorsi terminali non consentiti.
  • Associations: connectivity, containment o structural attachment incoerenti.
  • Configuration: regole o definizioni di rete incomplete rispetto ai dati.
  • Operational: versioni, sessioni, privilegi, servizi e job non corretti.

Gli ID ufficiali degli errori devono essere recuperati dalla documentazione Esri relativa alla propria utility network version. Non usare una tabella di ID copiata da un'altra release come contratto universale.

13. Runbook di validazione per un ambiente enterprise

  1. Verificare la versione ArcGIS Pro/Enterprise, la utility network version, le licenze e la presenza dei servizi richiesti.
  2. Individuare la named version e acquisire l'extent effettivo dell'operazione.
  3. Registrare numero e distribuzione delle dirty areas prima dell'intervento.
  4. Eseguire validazione sincrona su area piccola o job asincrono per workload estesi.
  5. Distinguere failure del job da errori topologici rilevati correttamente dal job.
  6. Classificare e correggere gli errori persistenti; non ripetere indiscriminatamente il job.
  7. Verificare la riduzione del backlog dirty e lo stato delle subnetworks interessate.
  8. Eseguire reconcile/post secondo il workflow di versioning adottato, quindi controllare lo stato di destinazione.
  9. Registrare durata, versione, extent, operatore e risultato per audit e capacity planning.

14. Failure modes e anti-pattern

Anti-patternConseguenzaAlternativa
Validare sempre l'intera rete dopo ogni editCarico e latenza non necessariValidazione incrementale per area e workflow
Ignorare dirty areas nei trace criticiRisultati non affidabiliConsistency check e blocco controllato
Usare Rebuild come routineOperazioni più costose e rischio operativoRebuild soltanto per repair documentato
Trattare gli errori come semplici dirty areasBacklog che non si risolveRoot cause su dati e regole
Non registrare la branch versionDiagnostica non riproducibileCorrelation ID + versione + extent
Confondere topology clean e subnetwork updatedStato analitico incompletoWorkflow esplicito per le subnetworks

15. Esperimento riproducibile: protocollo di benchmark

Per confrontare due configurazioni senza produrre conclusioni fuorvianti, utilizzare un dataset di test ripristinabile e ripetere almeno tre classi di editing:

  1. Attribute-only: modificare attributi rilevanti per la connettività di un campione di device.
  2. Geometry edits: spostare punti e modificare segmenti entro un'area controllata.
  3. Association edits: modificare associazioni consentite e, separatamente, introdurre casi di errore previsti.

Per ogni classe, misurare numero di feature modificate, dirty areas prodotte, durata P50/P95, errori, discovered subnetworks e latenza del trace successivo. Ripristinare lo stesso stato iniziale prima di ogni serie; evitare di confrontare run eseguiti su versioni con backlog diverso.

16. Decisioni architetturali

Il progetto di una Utility Network enterprise deve formalizzare almeno quattro decisioni:

  • Freshness SLA: entro quanto tempo un edit deve essere riflesso nell'indice topologico?
  • Trace policy: quali applicazioni possono tollerare dirty areas e con quale messaggio all'utente?
  • Validation ownership: operatore GIS, processo schedulato o workflow transazionale applicativo?
  • Error remediation: chi corregge i dati, chi modifica le regole e come viene verificata la risoluzione?

Queste decisioni non sono dettagli implementativi: determinano la correttezza dei risultati di analisi, la qualità del servizio e la possibilità di eseguire audit.

17. Conclusioni

La network topology è il confine fra il mondo modificabile delle feature e il mondo analitico della connettività. Le dirty areas rendono esplicita la possibile incoerenza; la validazione è il processo controllato che riallinea i due mondi. Gli errori persistenti rappresentano invece violazioni del modello e richiedono correzioni reali.

Una Utility Network affidabile non è semplicemente una rete senza errori visibili sulla mappa. È un sistema nel quale editing, validazione, versioning, tracing e manutenzione delle subnetworks hanno contratti operativi verificabili e metriche osservabili.

Fonti primarie e documentazione

  1. Esri ArcGIS Pro — Validate a network topology
  2. Esri ArcGIS Pro — Validate Network Topology (geoprocessing)
  3. Esri ArcGIS Pro — Errors in a utility network
  4. Esri REST — validateNetworkTopology
  5. Esri Maps SDK for .NET — Validate utility network topology sample
  6. Esri Maps SDK for .NET — Trace configuration and dirty areas

Nota metodologica: i diagrammi del motore sono modelli concettuali e non descrizioni del formato interno proprietario Esri. I frammenti di codice mostrano pattern da integrare in un ambiente ArcGIS correttamente configurato. Prima dell'esecuzione in produzione verificare firme API, permessi e compatibilità della release effettivamente installata.

Utility NetworkArcGIS EnterpriseTopology ValidationBranch VersioningC# / ArcPy

Nessun commento: