
Durante una domenica di pioggia, uno di quei giorni uggiosi, una di quelle domeniche in cui nemmeno le “Schedine” ti tirano su il morale, non c’è altro da fare che accendere ArcMap e cominciare a pistolare con comandi nuovi fino al punto di crearsi un nuovo problema.
Così ho fatto domenica scorsa!
Ho cominciato a “cipollare” i geodatabases fino al momento in cui mi sono arenato ponendomi una domanda che condivido con voi.
Il problema che mi sono posto è il seguente:
Che differenza c’è fra il “join e il relate” che si possono trovare cliccando con il destro del mouse su di uno shapefile e le relationship classes attribuibili a una feature class di un geodatabase?
Sono la stessa cosa, una in chiave shape e l’altra in chiave feature class o la seconda mi offre più vantaggi della prima?
Per capire se ci sono differenze ho provato a effettuare prima un relate (1-N) fra uno layer puntuale e una tabella esterna con i 2 metodi sopraccitati, poi ho effettuato il 2 join (1-1) fra una layer lineare e 2 tabelle esterne.
Prima Prova: Collegamento 1-NPer provare a capire un po’ di più ho provato a relazionare l’anagrafe del Comune per il quale lavoro con il punto rappresentante il numero civico. Una relazione 1-N in quanto per ogni numero civico ci stanno N persone.
“Relate” e relationship class 1-N sembrano la stessa cosa, anche se le 2 finestre di identify sono leggermente diverse.

In fase di editing non ho notato alcuna differenza usando lo shape collegato alla tabella anagrafe tramite il relate e utilizzando la feature class collegata con l’anagrafe con una relationship class.
In questo caso, l’unica differenza sembra solo essere una diversa visualizzazione degli attributi alla richiesta di identify.
Seconda Prova: 2 Collegamenti 1-1Ho fatto una seconda prova con uno shapefile lineare rappresentante il grafo delle strade.
A questo shape ho collegato 2 tabelle con 2 relazioni 1-1.
Naturalmente per confrontare il risultato ottenuto con la relationship class, ho importato lo shape del grafo e le due tabelle da relazionare all’interno di un geodatabase.
L’importazione delle tabelle avviene cliccando con il destro del mouse sull’oggetto geodatabase, inoltre può essere fatta un’importazione multipla, ovvero si possono importare le due tabelle da collegare in un colpo solo.

Questa volta, a livello di identify, si vedono differenze maggiori:
con i due join, le 2 tabelle esterne sembrano incorporarsi alla tabella di attributi dello shape, tant’è che trovo anche i campi delle tabelle esterne come valuefield nella scheda symbology delle layer proprieties.

Non c’è una vera e propria fusione delle tabelle, ovvero, non si forma un “tabellone unico”, visto e considerato che i join possono essere spezzati, ma di fatto sembra di gestire un unico oggetto.
In pratica, le due tabelle joinate, vengono “scritte” di seguito alla tabella di attributi dello shape.
Con la feature class relazionata attraverso 2 relationship class entrambe 1-1 alle due tabelle esterne posso scegliere dei value field che fanno parte della sola “tabella di attributi dello shape”, quindi i 3 oggetti sembrano rimasti fisicamente separati, anche se sono joinati.
Questo può essere un limite se volessi tematizzare il grafo secondo i valori di un campo non presente nella tabella di attributi dello shape, ma presente in una tabella joinata.
Anche per quanto riguarda le labels, nel primo caso è possibile inserire labels che sono presenti su un campo della prima o della seconda tabella joinata, mentre nel secondo caso, quello della realtionship class si possono labelizzare solo i campi della “tabella di attributi dello shape”…..questo sembra un limite.
Sono certo che le relationship class, rispetto ai classici join e relate hanno molti vantaggi, altrimenti mamma ESRI non avrebbe inserito questa funzionalità solo per arceditor ed arcinfo e ce l’avrebbe “regalata” in Arcmap.
Se qualcuno di voi conosce qualche vantaggio utilizzando le relationship class rispetto ai join e ai relate è invitato a scriverlo in questo post.
Probabilmente non sono le differenze fondamentali, ma ho trovato solo queste.
Se qualcuno di voi ne vede altre...
Ciao a tutti
Paolo
Etichette: Problemi Irrisolti