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

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ì 31 gennaio 2013

La vita non è bella senza nuvole: i tuoi feature service in cloud

La versione 10.1 di ArcGIS for Server ha migliorato notevolmente il controllo dell'accesso ai dati pubblicati mediante servizi.

L'amministratore del server  ha la possibilità, ora, di registrare cartelle, database e geodatabase, per ArcGIS for Server. La registrazione dei dati aiuta anche il server GIS ad 'aggiustare' i percorsi quando si pubblica tra macchine diverse.
In questo modo un analista GIS ha la possibilità di pubblicare servizi anche tra differenti macchine, senza incorrere in problemi di permessi che potrebbero impedire la pubblicazione.
L'amministratore del server registrerà le cartelle e i database approvati, comunicandoli poi all'analista GIS.

Tra i possibili scenari, troviamo anche quello di pubblicare feature service su macchine remote alle quali, per vari motivi, non è possibile accedere: firewall, differenti piattaforme, gestione "separata" dei dati su web, pubblicatore e server che lavorano ciascuno su un proprio database, ecc...
Lo scenario qui sopra, ad esempio, rappresenta la possibilità di mantenere una copia separata dei dati, si intende in un geodatabase enterprise, per utilizzarlo via web.
In questo caso dobbiamo effettuare una copia dei dati dal geodatabase del pubblicatore a quello del server. Si ribadisce che questo scenario può essere realizzato solo se si dispone di un geodatabase di tipo enterprise.

ArcGIS for Server 10.1 mette però a disposizione una opzione, Create geodata service, per trasferire i dati sul geodabase enterprise del server.
In pratica, quando si registrano i due geodatabase, questa opzione crea automaticamente un servizio geodata che possiamo utilizzare per inviare manualmente una replica dei dati (si intende tra il geodatabase del pubblicatore e quello del server).

Possiamo anche utilizzare il servizio geodata per sincronizzare i geodatabase, assicurandoci così che qualsiasi modifica effettuata sul geodatabase del pubblicatore, sia propagato al geodatabase del server.
Un'opzione molto vantaggioso per distribuzioni in ambienti cloud, dove non è richiesto che qualcuno debba accedere alla macchina per trasferire i dati.

Si tratta di uno scenario indicato anche per pubblicare feature service on-premises e su cloud.
Ad esempio, in questa ipotesi, le modifiche degli editor on-premises possono essere inviate al geodatabase del server, rendendole disponibili agli utenti finali del feature service.
Viceversa, se un web editor effettua modifiche alle feature sul geodatabase del server, le modifiche possono essere sincronizzate con il geodatabase del pubblicatore.

Questo scenario prevede di impostare la replica in modalità two-way, perchè la sincronizzazione dovrà avvenire in entrambe le direzioni (parent-child e child-parent), oltre ad essere ripetuta più volte.

Vediamo ora quali sono i passi da seguire per impostare questo scenario.
Supponiamo di avere, sulla macchina del pubblicatore, un geodatabase enterprise (nome connessione: testegdb.sde) che ospita due feature class (TestPoint e TestPolygon).



Per prima cosa, prepariamo le feature class per la replica.
I dati devono essere registrati come versionati senza l'opzione move edits to base e ogni dataset deve avere una colonna GlobalID (colonna che mantiene l'univocità della riga tra i geodatabase).








Caricando le feature class in ArcMap, possiamo notare come le nostre righe siano rese univoche dal GlobalID, per le operazioni di sincronizzazione da parte della replica.


Una volta predisposto il documento di mappa con ArcMap, pubblichiamo il servizio.




Selezioniamo la connessione remota e assegnamo un nome al servizio.


Tra le Capabilities, selezioniamo Feature Access, opzione necessaria per esporre il servizio come feature service.


Analizzando il documento di mappa prima della pubblicazione, ArcGIS segnala che il feature service richiede un database registrato.
In effetti, abbiamo indicato una connessione remota ad un ArcGIS for Server, ma il sistema necessita anche delle informazioni per sapere "come e dove" replicare i dati nel server remoto.



Per risolvere il problema, apriamo il Data Stores con un doppio click sulla segnalazione dell'Analyze e aggiungiamo i database da registrare.
 
 
Diamo un nome alla registrazione (in questo esempio egdb) ed importiamo la connessione del geodatabase del pubblicatore.



Per quel che riguarda il geodatabase del server remoto, deselezioniamo Same as publisher database connection, perchè non utilizziamo lo stesso geodatabase del pubblicatore.
Selezioniamo, invece, Create geodata service, perchè utilizziamo il servizio di geodata per la replica dei dati sul geodatabase del server ed importiamo la connessione al geodatabase del server.  Connessione che serve al servizio geodata per accedere ai dati sul server remoto, visto che non possiamo accedervi direttamente con la connessione impostata sul server database connection.




Confermate le impostazioni, viene creato il geodata service sul server remoto (il nome è lo stesso della registrazione).




Se analizziamo nuovamente il documento, possiamo verificare che gli errori e gli avvisi relativi alla registrazione dei database sono stati risolti.
Il sistema, ora, ha tutti gli elementi per pubblicare i dati sul server remoto, anche per i servizi futuri che accederanno ai dati presenti nel documento di mappa.



Prima di pubblicare il servizio, creiamo una replica di tipo Two way.
Selezioniamo in ArcMap la toolbar Distributed Geodatabase e clicchiamo su Create Replica



In questo caso replichiamo i dati scegliendo, come geodatabase, il servizio geodata precedentemente creato dalla registrazione dei geodatabase, per ultimo diamo un nome alla replica (in questo esempio MyReplica).


Una volta confermato il passaggio di cui sopra, viene creata la replica tra il geodatabase del pubblicatore e quello sul server remoto.



Siamo ora pronti per pubblicare il nostro feature service e quindi clicchiamo su Publish.
Tutte le precedenti operazioni passano dalla connessione selezionata (in questo esempio myCloud) quando abbiamo selezionato dal menu la voce File -> Share As  -> Service... Pertanto sul server remoto non occorre aprire nessuna porta particolare, visto che passa tutto su http e/o https.




Siamo ora in grado di accedere e visualizzare il feature service.
Possiamo anche servirci di arcgis.com per utilizzare il servizio preventivamente protetto da user e password: impostare in ArcGIS for Server la protezione del servizio mediante ruoli-utenti.
Quando arcgis.com 'vede' che il servizio è protetto, apre una finestra di dialogo per inserire le credenziali di accesso.


Con il pulsante Modifica, inseriamo qualche dato.


In questo esempio inserisco il punto con Id=7 nella feature class puntuale.



...ed ora sincronizziamo le modifiche effettuate su web nel nostro geodatabase.

Da ArcMap possiamo, selezionando Synchronize Changes, sincronizzare dal child al parent.



Una volta sincronizzato, possiamo vedere le modifiche effettuate: nel nostro caso è stato aggiunto un punto su web (punto con Id=7), che è stato propagato nel geodatabase del pubblicatore.
Durante la sincronizzazione, i cambi sono effettuati con operazioni di reconcile e post nella versione replica.
Durante l'operazione di reconcile possono manifestarsi dei conflitti. In questo caso possiamo scegliere quale policy utilizzare per gestirli; possiamo anche scegliere la configurazione per far scattare il conflitto a livello di colonna o adi riga.


Poichè abbiamo impostato una replica two way, possiamo modificare i dati direttamente sul geodatabase del pubblicatore e propagare le modifiche su web.
Ad esempio aggiungiamo il poligono con Id =4...


Sincronizziamo come sopra ma, questa volta, dal parent al child.
Possiamo anche utilizzare l'opzione Both per sincronizzare contemporaneamente in entrambe le direzioni (parent to child e child to parent).


...e constatare la modifica (aggiunta del poligono con i relativi attributi) direttamente su web.