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

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

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



sabato 30 luglio 2011

Add-in: come ti personalizzo ArcGIS Desktop

ArcGIS 10 ha introdotto diverse novità per personalizzare ed estendere più facilmente le applicazioni Desktop ArcGIS, introducendo il nuovo modello add-in desktop. Il nuovo modello fornisce un framework, su base dichiarativa, per creare personalizzazioni pacchettizzate in un singolo file compresso. Una delle caratteristiche principali è che gli add-ins sono facilmente condivisibili tra utenti perché non richiedono installazione o registrazione di componenti COM. Gli add-ins sono aggiunti al sistema semplicemente copiandoli in una ben determinata cartella e rimossi cancellandoli dalla cartella stessa. Inoltre, indicando una cartella di rete, è possibile condividerli per una intera organizzazione centralizzando l’installazione.
Gli add-ins possono essere scritti utilizzando .NET o Java con XML. L’XML descrive la personalizzazione mentre le classi .NET o Java forniscono il comportamento personalizzato.
Installando l’SDK ArcObjects, vengono inclusi Wizard per la creazione di Add-Ins integrati direttamente nell’ambiente di sviluppo installato nel sistema (Microsoft Visual Studio - inclusa la versione libera Express - ed Eclipse), agevolando così lo sviluppo.


Come avrete già sentito, la personalizzazione che utilizza VBA, dalla versione 10, è stata deprecata anche se è ancora possibile usarla richiedendo un file di licenza per l’estensione VBA. Ma rimangono comunque, in funzione dello scopo o della specifica soluzione da costruire, altre opzioni che potrebbero essere ancora più indicate rispetto agli add-ins.

Python
Molte aree di applicazione in ArcGIS sono accessibili attraverso un semplificato utilizzo delle API Python facendo in modo che i più comuni task possano essere creati facilmente. Inoltre gli script di Python sono facilmente condivisibili e possono essere creati senza un ambiente di sviluppo esterno. Sebbene siano presenti moltissimi moduli di dominio pubblico, Python non è adatto per qualsiasi task di programmazione. Anche se si sta migliorando, non tutte le aree di applicazione in ArcGIS sono state ancora coperte. Inoltre gli ambienti di sviluppo per le modifiche ed il debugging non sono ancora così sofisticati e facili da usare come ambienti tipo Microsoft Visual Studio. Infine non è possibile ascoltare e rispondere ad eventi ArcGIS, implementare interfacce COM o comunicare con molti punti dell’estensibilità COM.
Dalla versione 10.1 sarà possibile creare Add-ins anche mediante Python.

Estensibilità COM classica
Il framework add-in non supporta ogni punto di estensibilità definita da ArcGIS. Ad esempio non è possibile creare un renderer, un workspace o una feature personalizzati come add-in.
Se la tua soluzione include tipi di componenti che non sono supportati dal framework add-in, dovrai utilizzare l’approccio di estensibilità COM classica.
Inoltre, dal momento che gli add-ins non necessitano di operazioni di registrazione, non utilizzare soluzioni basate su add-ins che si basano su dipendenze esterne tipo librerie, assembly o servizi che richiedono la registrazione od un intervento di un amministratore.

Tipi di Add-in
Le applicazioni ArcGIS desktop supportano un prefissato insieme di tipi di add-in, includendo i più popolari tipi utilizzati nel modello di estensibilità basato su COM introdotto nelle precedenti versioni. I seguenti tipi di add-in sono supportati dalla versione 10:
  • Button e tool
  • Combo box
  • Menu e context menu
  • Multi-items
  • Toolbars
  • Tool palette
  • Dockable windows
  • Application extension
  • Editor extension
Gestione degli add-ins
Gli add-ins possono essere distribuiti in diversi modi: da repository basati su web, e-mail o da file system o rete. Puoi installare un add-in semplicemente facendo un doppio click sul file di add-in da Esplora risorse.  Quando si fa il doppio click, ESRI fornisce una Utility di installazione Add-In che valida l’add-in e lo copia nell’appropriata cartella ben definita. All’utente viene data la possibilità di vedere l’autore, la descrizione, la versione e informazioni sulla firma digitale dell’add-in prima di procedere all’installazione. Questa utility assicura che il file sia copiato nella cartella appropriata, gestione dei conflitti di nomi e garanzia che le versioni esistenti dei file add-in non siano sovrascritte da una versione precedente. Inoltre l’utility lavora direttamente con file allegati alle e-mail o da link da pagine web. Qui sotto possiamo vedere come si presenta l’add-in gestito dall’utility dopo il doppio click ma prima dell’installazione:


Per firmare l'Add-in utilizzare l'utility ESRISignAddIn.exe che trovate nella cartella C:\Programmi\File comuni\ArcGIS\bin.
Gli Add-ins possono anche essere installati utilizzando il pulsante Add from file della finestra di dialogo Customize disponibile in tutte le applicazioni ArcGIS Desktop.


E’ possibile accedere alla finestra di dialogo mediante il menu Customize. Gli add-ins installati, utilizzando le opzioni doppio click o ‘Add from file’, sono classificati come add-in locali. Gli add-in locali risiedono in una speciale e ben definita cartella per utente della macchina locale.
Nonostante i file add-in possano essere copiati manualmente nelle cartelle ben definite senza utilizzare l’utility ESRI Add-In, occorre prestare particolare attenzione per evitare conflitti di nomi, sovrascrivere versioni e così via. Questo approccio è tipicamente utilizzato quando si condividono add-in nella rete.

Come i componenti COM classici, tipi di add-in individuali sono accessibili mediante finestra di dialogo Customize. Ad esempio, un button definito in un add-in non si comporta differentemente da un command COM, entrambi sono elencati sotto la loro specifica categoria nella linguetta Commands. Da questa posizione, possono essere trascinati in una toolbar o in un menu.

Le applicazioni ArcGIS Desktop forniscono una finestra di dialogo per la gestione degli Add-In (Add-In Manager). Nella linguetta Add-Ins di questa finestra di dialogo vengono fornite informazioni di dettaglio per ogni add-in correntemente disponibile perché venga eseguito nell’applicazione corrente. Ad esempio, Add-in costruiti per ArcGlobe non appariranno in ArcMap. Ecco come si presenta la linguetta Add-Ins dell’Add-In Manager:




Mentre la linguetta Options lascia all’utente la possibilità di aggiungere cartelle personalizzate per gli add-in.
Il framework add-in in aggiunta cercherà gli add-ins in queste cartelle personalizzate ogni volta che l’applicazione è inizializzata. Questa opzione è particolarmente utile in scenari ove una posizione centralizzata della rete sia utilizzata per condividere add-ins in una organizzazione.
Gli Add-ins possono essere aggiunti, cancellati ed aggiornati in queste posizioni senza fare interventi sulle macchine client. Gli aggiornamenti saranno automaticamente trasmessi sui client quando le applicazioni sono reinizializzate. La linguetta Options può anche essere utilizzata per disabilitare tutte le funzionalità degli add-in.
Ecco come si presenta la linguetta Options:


Dall’Add-In Manager, gli utenti possono anche scegliere di disinstallare un particolare add-in. Disinstallando un add-in, il file add-in selezionato verrà spostato nel Cestino dove così si potrà ripristinare, se necessario, successivamente.
Il pulsante ‘Delete this Add-In’ è soltanto abilitato per add-ins locali. Per disinstallare un add-in da una cartella personalizzata, occorre semplicemente eliminarlo dalla condivisione o eliminare la cartella personalizzata utilizzando il pulsante ‘Remove Folder’ (in quest’ultimo caso non vedrò più tutti gli add-in contenuti in esso).

Anatomia del file Add-in

Un add-in è composto da numerose parti che includono metadati nella forma di file XML che descrive l’add-in stesso così come le sue personalizzazioni, le immagini e altri tipi di dati semplici ad uso delle personalizzazioni e codice compilato. Per mettere insieme tutti questi file relazionati, gli add-ins sono pacchettizzati come archivio compresso con l’estensione del file esriAddIn (ad esempio MyAddIn.esriAddIn).
Gli add-ins utilizzano tecniche di programmazione sia dichiarativa che imperativa. Il file XML accennato sopra è la porzione dichiarativa e descrive tutti gli aspetti statici dell’add-in, includendo caption, tooltips, help, immagini e dettagli del layout iniziale. La porzione imperativa, o attiva, è il classico modello di programmazione basato su istruzioni che può essere, come abbiamo già detto, un linguaggio .NET o Java.

Ad esempio, possiamo cambiare l’etichetta e l’immagine di un button senza ricompilare il codice; alcune personalizzazioni, come toolbars, tool palettes e menu sono completamente dichiarative;  non sono porzioni attive.

La distinzione tra aspetti dichiarativi e di programmazione incrementa la flessibilità, riduce e semplifica lo sviluppo per gli sviluppatori, ed in generale rende più facili lo sviluppo e la manutenibilità della soluzione.

Il seguente esempio di XML mostra un add-in dove è dichiarata una toolbar con un button in essa:

<ESRI.Configuration
  xmlns="http://schemas.esri.com/Desktop/AddIns"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Name>
    Acme Custom Mapping Extension
  </Name>
  <AddInID>{6fa0df73-57ab-491e-a73d-e58ce07af414}</AddInID>
  <Description>Custom mapping toolbar.</Description>
  <Version>1.0</Version>
  <Image>Images\Acme.png</Image>
  <Author>John Locke</Author>
  <Company>Acme</Company>
  <Date>5/28/2009</Date>
  <Targets>
    <Target name="Desktop" version="10.0"/>
  </Targets>
  <AddIn language="CLR" library="Acme.dll" namespace="Acme">
    <ArcMap>
      <Commands>
        <Button
          id="Acme_ToggleDockWinBtn"
          class="ToggleDockWinBtn"
          caption="OpenDockWin"
          category="Acme Tools"
          image="Images\ToggleDockWinBtn.png"
          tip="Toggle dockable window."
          message="Open dockable window.">
          <Help heading="Toggle">Turns the ACME dockable window on and off.</Help>
        </Button>
      </Commands>
      <Toolbars>
        <Toolbar id="Acme_Toolbar" caption="Acme Toolbar">
          <Items>
            <Button refID="Acme_ToggleDockWinBtn"/>
          </Items>
        </Toolbar>
      </Toolbars>
    </ArcMap>
  </AddIn>
</ESRI.Configuration>

Il seguente esempio di codice mostra la porzione attiva di un button. Tutti gli ArcObjects, così come la ricchezza dell’ambiente di programmazione, sono direttamente disponibili agli sviluppatori.

 public class ToggleDockWndBtn : Button
 {
        public ToggleDockWndBtn() { }
 
        protected override void OnClick()
        {
            //Get dockable window.
            UID dockWinID = new UIDClass();
            dockWinID.Value = @"ESRI_SelectionSample_SelCountDockWin";
            s_dockWindow = ArcMap.DockableWindowManager.GetDockableWindow(dockWinID);
        }
 }


Creare gli add-ins

Gli add-ins sono creati utilizzando un IDE come Visual Studio (incluso l’Express) per .NET e Eclipse per Java e semplici wizard e template sono forniti con l’SDK ArcObjects per generare automaticamente progetti add-in con incluso XML e file di classi.
In aggiunta, quando questi progetti sono creati, essi automaticamente generano un file add-in pronto per essere copiato in cartelle ben definite degli add-in. La maggior parte dell’XML è compilato tramite il wizard; comunque, se necessario, può essere direttamente modificato. Lo schema associato al file XML permette facili modifiche provvedendo all’IntelliSense e alla validazione al volo. Per maggiori dettagli su come creare gli add-in vedere qui. 


Come esercizio ho creato un add-in per visualizzare le immagini di Street View di Google cliccando direttamente sulla mappa (dataframe attivo) in ArcMap. Qui potete scaricare la soluzione mentre qui potete vedere il video per come installarlo.

Da notare che in questo add-in è gestita anche la trasformazione di datum a WGS84 (input richiesto da Street View di Google) rispetto al sistema di coordinate che è impostato nel dataframe attivo. Pertanto per dataframe con sistemi di coordinate basati su datum WGS84 non occorre impostare nulla, mentre per sistemi di coordinate non basati su datum WGS84 (esempio Monte Mario) occorre impostare nel dataframe (linguetta Coordinate System - pulsante ‘Transformations…’) la trasformazione da utilizzare per passare a WGS84: l’add-in utilizzerà quella indicata in Transformations nelle proprietà del datafame.
Se il dataframe  non ha impostato il sistema di coordinate, le coordinate della mappa verranno considerate come coordinate geografiche WGS84 (scelta fatta per evitare messaggi all’utente) .