Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
UNIVERSITÀ DEGLI STUDI DI TRIESTE                 Facoltà di Ingegneria                      Tesi di Laurea               ...
I – Indice I – Indice .......................................................................................................
Crea tabella di Fusion............................................................................ 17           Aggiungi r...
1 – Introduzione  Questa tesi riguarda l’espansione di un una base dati preesistente, con lafinalità di pubblicarne il con...
2 – Analisi preliminare     Al primo incontro con il committente è stato fornito un modello di sito internetsu            ...
l’Italia) ed ordinati in base alla loro data di pubblicazione. La gestione manuale diqueste pagine, originariamente sempli...
II – Google Fusion Tables API  Fusion Tables rispetto al metodo di interrogazione di Maps, tramite feed ecodice xml apposi...
IV – Google Custom Search API  Il loro uso permette di creare motori di ricerca personalizzati o di raffinarealcune ricerc...
II – Tabelle aggiuntive  Verificate le possibilità e le necessità degli strumenti offerti da Google, è statonecessario pro...
 Etag: il codice univoco della pagina, varia ad ogni modifica    Path: è il percorso della pagina, se diverso da quello ...
 NoteWeb: è il campo in cui vengono memorizzati i link agli articoli dopo           essere stati formattati in HTML      ...
Collega l’entità “pagina” all’entità “sito”, definisce a quale sito appartiene Appartenenza        la pagina              ...
È    stata   poi   fatta   una   valutazione   delle   informazioni   necessarie     allageolocalizzazione delle attività....
Tutti i servizi di Google necessitano di un’identificazione dell’utente a livelloserver, per verificare ad ogni operazione...
Autenticazione Utente  La procedura si occupa di autenticare l’utente ai servizi di Google, l’utentedeve perciò essersi pr...
ma un bug nella gestione delle liste da parte del server di Google non permettel’interpretazione corretta dei link se la l...
creazione delle pagine: l’utilizzo di modelli non permette infatti di personalizzare ilcontenuto della pagina e quindi di ...
Aggiungi righe in tabella di Fusion  La procedura si occupa di aggiungere righe compilate all’interno della tabellaselezio...
Seleziona                                              elemento                                                           ...
metodo i caratteri vengono codificati in maniera univoca e non si verificano errorirelativi a caratteri speciali o lingue ...
Web Content  La procedura si occupa di generare il Web Content dei punti geolocalizzati inprecedenza secondo i criteri ric...
6 – Realizzazione dell’interfaccia  L’interfaccia è stata sviluppata attraverso l’uso delle form di Access 2003;considerat...
o Generare le liste e le mappe separatamente per le diverse pagine     o Generare le liste e le mappe per tutte le pagine ...
automatica. Per semplificare l’inserimento delle coordinate è stato  inserito un pulsante che permette di filtrare i campi...
7 – Tempi di esecuzione ed errori  Nei test effettuati con 493 elementi si è riusciti a generare l’intero sito in 20minuti...
nuovi inserimenti e i link che risultano non attivi. Per una verifica completa delcampione a disposizione il tempo è stato...
8 – Conclusioni  Lo sviluppo dell’applicazione, del sito internet e delle mappe si è concluso conesito    parzialmente   p...
Bibliografia https://code.google.com http://msdn.microsoft.com http://office.microsoft.com/it-it/access-help http://forum....
Ringraziamenti                                 Ringrazio       mia madre per la pazienza ed il supporto finanziario in que...
Upcoming SlideShare
Loading in …5
×

Generazione automatica di siti con mappe geografiche

1,859 views

Published on

Presentazione di tesi - Generazione automatica di siti con mappe geografiche

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

Generazione automatica di siti con mappe geografiche

  1. 1. UNIVERSITÀ DEGLI STUDI DI TRIESTE Facoltà di Ingegneria Tesi di Laurea in Ingegneria InformaticaGENERAZIONE AUTOMATICA DI SITI CON MAPPE GEOGRAFICHELaureando RelatoreMartino Miani Prof. Leonardo Felician Anno accademico 2010-2011
  2. 2. I – Indice I – Indice ............................................................................................................. 2 1 – Introduzione ................................................................................................. 4 2 – Analisi preliminare ........................................................................................ 5 3 – API di Google ................................................................................................ 6 I – Google Maps API ...................................................................................... 6 II – Google Fusion Tables API ........................................................................ 7 III – Google Sites API ..................................................................................... 7 IV – Google Custom Search API ..................................................................... 8 4 – Il codice di test e le tabelle dati aggiuntive ................................................... 8 I –Codice di Test............................................................................................ 8 II – Tabelle aggiuntive ................................................................................... 9 Analisi delle Entità .................................................................................. 9 Analisi delle relazioni ............................................................................ 11 Analisi dei volumi .................................................................................. 12 Creazione delle tabelle ......................................................................... 12 5 – Procedure e funzioni del progetto .............................................................. 14 Autenticazione Utente .......................................................................... 15 Crea una pagina di Sites ........................................................................ 15 Elimina una pagina di Sites ................................................................... 16 Capitolo: I – Indice Modifica una pagina singola di Sites ..................................................... 16 Richieste Batch ..................................................................................... 17 Recupera dati di pagina di Sites ............................................................ 17 2
  3. 3. Crea tabella di Fusion............................................................................ 17 Aggiungi righe in tabella di Fusion ........................................................ 18 Elimina righe da tabella di Fusion ......................................................... 18 Cerca punto geografico ......................................................................... 18 Mostra Nodo Singolo ............................................................................ 19 URL Encode .......................................................................................... 19 Controllo URL........................................................................................ 20 Web Content ........................................................................................ 21 Controllo connessione a Internet .......................................................... 216 – Realizzazione dell’interfaccia ...................................................................... 227 – Tempi di esecuzione ed errori ..................................................................... 258 – Conclusioni ................................................................................................. 27Bibliografia ....................................................................................................... 28Ringraziamenti.................................................................................................. 29 Capitolo: 3
  4. 4. 1 – Introduzione Questa tesi riguarda l’espansione di un una base dati preesistente, con lafinalità di pubblicarne il contenuto su web attraverso la geolocalizzazione e lapubblicazione su un sito internet. L’obbiettivo finale è lo sviluppo di un’interfaccia e del suo codice difunzionamento per la pubblicazione automatica, di dati selezionati, su un sitointernet appositamente costruito in Google Docs e la generazione delle relativemappe geografiche attraverso Google Fusion Tables e Google Maps. Il committente ha fornito la struttura dei dati preesistenti e un’analisi deirequisiti richiesti dall’applicazione da sviluppare. Il progetto è dunque iniziato conlo studio della compatibilità dei requisiti con l’offerta delle API di Google, per poipassare ad un’analisi dei dati già forniti e di quelli richiesti per il funzionamentodell’applicativo per valutare la necessità di introdurre nuove tabelle o nuovi campiall’interno della base dati. Le fasi principali dello sviluppo sono state:  Analisi preliminare della struttura esistente  Studio dell’offerta delle API di Google  Realizzazione del codice di test e delle tabelle dati aggiuntive  Realizzazione del codice finale  Progettazione e sviluppo dell’interfaccia utente  Conclusioni Il progetto è stato sviluppato in Microsoft Access 2003 e codice VBA, secondo Capitolo: 1 – Introduzionevolontà del committente che ha necessità di implementare il lavoro completoall’interno di un suo database già sviluppato in questo ambiente. 4
  5. 5. 2 – Analisi preliminare Al primo incontro con il committente è stato fornito un modello di sito internetsu cui strutturare l’obbiettivo di lavoro:http://sites.google.com/site/hotelpressreview. Il sito è curato dal committente edaggiornato in maniera manuale in base ai dati contenuti nel database personaledel committente. Tale forma di manutenzione era valutata possibile su una molelimitata di elementi ma, essendo cresciuta ed avendo raggiunto le migliaia dielementi, si è ritenuto necessario sviluppare un sistema di aggiornamentoautomatizzato. La struttura già esistente è sviluppata in Access 2003, per questo motivo èstato richiesto di espanderne le funzionalità realizzando l’automatizzazione con ilcodice dell’ambiente già in uso. Del database è stata fornita la struttura dellequery e delle tabelle principali che forniscono tutti i dati di interesse per lapubblicazione su web. I dati da trattare sono diverse tipologie di attività di interesse turistico comealberghi, hotel, ristoranti e musei o di interesse enogastronomico come aziendeagricole, produttori di vino o olio. Di tali attività si ha la necessità di trovare unalocazione precisa sulla mappa geografica in base ad informazioni limitate, comela sola Nazione, o più specifiche come la Regione e la Città. Tale ricerca èeffettuata manualmente su Google Maps e i risultati sono salvati su specifichemappe di “My Maps”. Il servizio offerto da Google permette di salvare anche tutti idettagli relativi all’attività, se presenti, e di aggiungere ulteriori dati, come i link Capitolo: 2 – Analisi preliminareagli articoli di recensione scritti dal committente, ordinati per data dipubblicazione. Uno degli scopi del progetto è riuscire a riprodurre questa serie dioperazioni in modo da rendere automatico il processo, senza però perdere leinformazioni fornite dal servizio di Google Maps. Sul sito internet, oltre alle mappe, sono presenti anche delle pagine di lista incui gli articoli di recensione vengono suddivisi per continente (fatta eccezione per 5
  6. 6. l’Italia) ed ordinati in base alla loro data di pubblicazione. La gestione manuale diqueste pagine, originariamente semplice, si è complicata con l’aumento dellamole di dati. Il committente ha dunque richiesto che anche questa parte venissegestita e generata in maniera automatica in base ai dati forniti.3 – API di Google Per procedere alla creazione del programma ci siamo documentati sull’offertadei servizi Google e sulla loro possibile implementazione. Le API offerte daGoogle permettono un facile sviluppo in ambiente .NET, C# o Java (nonutilizzabili per il nostro scopo) e di accedere al server dei feed che si occupadell’aggiornamento dei servizi attraverso richieste http di tipo “GET” o “POST”contenenti codice XML correttamente strutturato. Quest’ultimo strumento ci hapermesso di utilizzare ed adattare i servizi di Google all’interno del codice VBA diAccess 2003.I – Google Maps API Verificata la tipologia di dati da trattare ci siamo subito occupati di verificarequale fosse il metodo migliore per geolocalizzare gli indirizzi degli elementi. Perfare ciò si è pensato prima di tutto di appoggiarsi a strumenti di uso comune e giàutilizzati dal committente, come “Google My Maps”. Tale strumento si èdimostrato subito particolarmente limitato per quanto riguarda lo scopo diautomatizzazione del processo di pubblicazione dei dati, non permettendo un usodiretto da parte del software, in quanto vincolato dal necessario interventodell’utente attraverso l’interfaccia web. La scelta è dunque ricaduta sulle API di Capitolo: 3 – API di GoogleGoogle Maps. Tali API erano però in fase di abbandono da parte di Google che proponeval’uso delle nuove Fusion Tables e dunque non sono state studiate ed utilizzateoltre la versione di test iniziale. 6
  7. 7. II – Google Fusion Tables API Fusion Tables rispetto al metodo di interrogazione di Maps, tramite feed ecodice xml appositamente creato, introduce la possibilità di fare delle richiesteSQL direttamente ai server che gestiscono i dati delle mappe; in tal modopossono facilmente essere generate mappe attraverso query geografiche. Lerichieste http non sono più solo xml, ma vi è un cospicuo utilizzo di codice SQLche permette di interagire direttamente con le tabelle. Le possibilità offerte daFusion Tables non si limitano unicamente alla creazione di mappepersonalizzate, ma permettono anche di creare query spaziali di vario generecome:  Heatmaps che forniscono informazioni geografiche riguardo alla densità di una determinata ricerca  Traffic Layer che possono fornire informazioni costantemente aggiornate sul traffico in una determinata zona (già in uso nelle grandi città come Roma o Milano)  Bicycling layers che forniscono informazioni ai ciclisti, come piste ciclabili presenti in una zona o percorsi consigliati adatti ai ciclistiIII – Google Sites API Le API di Google Sites offrono tutto un parco di strumenti adito alla gestionedelle pagine di un sito ospitato sulla piattaforma: creazione, modifica,eliminazione e condivisione di elementi, pagine e sito stesso; il tutto attraversorichieste http sul sito di feed di Google Site. La gestione attraverso le API non èperò completa e perfettamente funzionante, vi sono infatti ancora numerosi bug e Capitolo: 3 – API di Googlemancanze che obbligano l’utente a dover gestire alcuni parametri in manieramanuale attraverso la WebUI di Google. Questo non impedisce al nostro softwaredi generare e gestire le pagine, ma ha creato diverse complicazioni durante lafase di sviluppo e la necessità di alcuni workaround per risolvere le difficoltàsenza dover chiedere l’intervento dell’utente. 7
  8. 8. IV – Google Custom Search API Il loro uso permette di creare motori di ricerca personalizzati o di raffinarealcune ricerche in maniera specifica. Nel nostro progetto queste API non sonostate usate in maniera attiva in quanto presentano limitazioni notevoli per gliutenti non paganti, ma hanno permesso di affinare l’uso della ricerca sul motorestandard di Google. Le API infatti presentano un elenco ben definito dei parametriutilizzabili nelle query del motore per ottenere dati specifici. Tali parametri hannopermesso di limitare le ricerche degli indirizzi e ottenere tutte le informazionipossibili sull’attività trovata, in modo tale da poter fornire le stesse informazioninella visualizzazione delle nostre mappe.4 – Il codice di test e le tabelle dati aggiuntiveI –Codice di Test All’inizio della scrittura del codice ci siamo occupati di verificare i limiti delleAPI, per capire quanto si può fare e quanto si può estrapolare e salvare inmaniera utile sul nostro database. Per questo motivo è stata creata un interfaccia Capitolo: 4 – Il codice di test e le tabelle dati aggiuntivedi test, con pulsanti limitati all’esecuzione di un comando specifico delle API,definito con una procedura in un modulo di VBA, che ha permesso di testare:  Autenticazione dell’utente  Creazione di una pagina di Sites  Eliminazione di una pagina di Sites  Modifica di una pagina singola di Sites.  Più modifiche in batch delle pagine di Sites  Recupero dati pagina  Creazione di una Tabella di Fusion  Aggiunta di righe nelle tabelle di Fusion.  Eliminazione di righe nelle tabelle di Fusion  Cercare un punto geografico 8
  9. 9. II – Tabelle aggiuntive Verificate le possibilità e le necessità degli strumenti offerti da Google, è statonecessario progettare delle tabelle che permettessero la memorizzazione dellenuove informazioni.Analisi delle Entità Rispetto alla base dati fornita dal committente sono state individuate alcunenuove entità, i loro attributi ed i campi possibili identificatori primari: Utente  ID_utente: è il codice univoco che identifica l’utente all’interno del database  Utente: è il nome descrittivo dell’utente  Mail: è lo username di accesso dell’utente per i servizi Google  Password: è la password relativa allo username Sito  ID_sito: è il codice univoco che identifica il sito  OrigineDati: è il percorso al database dei dati Capitolo: 4 – Il codice di test e le tabelle dati aggiuntive  TitoloSito: è la titolazione del sito  Dominio: è il dominio univoco del sito, permette di definire un dominio esterno a quello predefinito di Google Sites  Sitename: è il nome del sito, la parte finale dell’URL, nome univoco sul web  ultimaGen: è la data di ultima generazione completa del sito Pagina  ID_pagina: è il codice univoco che identifica la pagina  ID_sito: è il codice che collega una pagina ad un sito  NomePagina: definisce il nome della pagina così come comparirà nel path 9
  10. 10.  Etag: il codice univoco della pagina, varia ad ogni modifica  Path: è il percorso della pagina, se diverso da quello di root  Titolo: definisce il titolo della pagina, così come deve comparire nell’intestazione web  PossoEliminare?: definisce la possibilità o meno di eliminare la pagina al fine di rigenerarlaAttività:  ID: è il codice univoco dell’elemento  Nome: è il nome dell’elemento  Città: è la città in cui si trova l’elemento  Regione/Country: è la località in cui si trova l’elemento  TipoIndirizzo: caratterizza il tipo di attività  Provincia: solo per la tabella Italy, è sempre relativo all’indirizzo  Nazione: la nazione dell’elementoLocazione Geografica:  ID: è il codice univoco dell’attività, permette il collegamento alle tabelle Capitolo: 4 – Il codice di test e le tabelle dati aggiuntive originali.  Nome: è il nome della locazione da trovare, così come definita dall’utente  Googlename: è il nome della locazione riscontrato dalla ricerca su Google, utile per un confronto  Indirizzo: è l’indirizzo della locazione fornito per effettuare la ricerca  Gindirizzo: è l’indirizzo riscontrato a seguito della ricerca su Google  Info: è il campo che raccoglie i dati informativi ottenuti dalla ricerca su Google  Point: le coordinate geografiche del punto in termini KML  CoordENZ: le coordinate geografiche non codificate, definite come Est, Nord e altitudine Z 10
  11. 11.  NoteWeb: è il campo in cui vengono memorizzati i link agli articoli dopo essere stati formattati in HTML  Icon: è il valore che descrive l’icona da usare sulla mappa Google Apps  ID_GApps: è il codice univoco che identifica un’applicazione  GdataType: è il testo “user friendly” che definisce l’applicazione  GdataCode: è il testo che definisce l’applicazione nelle richieste di autenticazione  GdataToken: è il codice univoco di identificazione dell’applicazione sui server Google  GdataFeedSite: è il path del server di autenticazione dell’applicazione Fusion Table:  NomeTabella: definisce il nome della tabella in termini umani  Table_ID: è il codice univoco della tabella fornito da Google Icona:  TipoIndirizzo: definisce il tipo di attività dell’elemento Capitolo: 4 – Il codice di test e le tabelle dati aggiuntive  CodiceIcona: è il codice Fusion Table dell’iconaAnalisi delle relazioni Successivamente sono state studiate le relazioni e le cardinalità presenti tra leentità riconosciute. Si possono osservare delle tabelle contenenti le descrizionidelle relazioni e dei ragionamenti che hanno portato all’identificazione dellecardinalità: Relazione Cardinalità Collega l’entità “utente” con l’entità “sito”; definisce l’utente autorizzato ad operare sul sito. Autorizzazione Molti a molti: ogni utente può avere l’autorizzazione alla modifica di uno o più siti che possono essere condivisi tra più utenti differenti. 11
  12. 12. Collega l’entità “pagina” all’entità “sito”, definisce a quale sito appartiene Appartenenza la pagina Uno a molti: più pagine possono appartenere ad un solo sito Collega le attività localizzate alle attività originali Localizza Uno a uno: ogni attività ha la sua localizzazione univoca Collega l’entità localizzata all’entità “icona” che la rappresenta sulla mappa Rappresenta Uno a molti: un’icona può rappresentare più attività dello stesso genereAnalisi dei volumi Per le entità sono stati valutati i volumi, in modo da avere dei valoricaratterizzanti delle quantità dei dati da trattare. Concetto Tipo Volume Utente E 1 Capitolo: 4 – Il codice di test e le tabelle dati aggiuntive Sito E 1 Pagina E 16 Locazione Geografica E 5000 Google Apps E 20 Fusion Table E 8 Icone E 200Creazione delle tabelle Sono state dunque create quattro tabelle fondamentali per mantenere i datirelativi all’utente, al sito internet da aggiornare e alle pagine di cui è composto,con una struttura tale da permettere un eventuale sviluppo futuro. 12
  13. 13. È stata poi fatta una valutazione delle informazioni necessarie allageolocalizzazione delle attività. Tale valutazione ha portato, per non influire sullastruttura originale del database, alla creazione di tabelle dedicate allamemorizzazione delle informazioni geografiche. Queste ultime, contraddistintedalla nomenclatura “geo_”, contengono l’ID ed il nome del punto localizzato (inmodo da poter essere collegate alle tabelle originali), oltre a campi specifici cheriguardano la localizzazione geografica, i dati ottenuti dalla ricerca tramite GoogleMaps e il WebContent. Le tabelle “geo_” forniscono i dati da importare su FusionTables per formare le mappe del sito. Capitolo: 4 – Il codice di test e le tabelle dati aggiuntive Il codice icona utilizzato nelle tabelle “geo_” viene estratto dalla tabella“tbl_icone” che associa il tipo di attività (es. Hotel, Ristorante, Museo) ad unospecifico codice di Fusion Tables, in modo tale da generare un’icona differenteper ogni tipologia e differenziarle nel caso in cui si trovino nella stessa mappa. 13
  14. 14. Tutti i servizi di Google necessitano di un’identificazione dell’utente a livelloserver, per verificare ad ogni operazione l’autorizzazione, e richiedono l’utilizzo diun token che contiene il codice univoco della sessione. Tale codice vienegenerato per ogni servizio; al fine di memorizzare i token di tutti i servizi utilizzatiè stata creata la tabella “tbl_GoogleApps” nella quale sono memorizzati i nomi deiservizi, i siti di feed per l’autenticazione, il codice dell’applicazione ed il tokendella sessione. Per finire sono state previste 3 tabelle, caratterizzate dal termine Log, nellequali vengono registrati gli errori durante le diverse procedure. “GeoLogError” èutilizzata per segnalare tutti i punti di cui non viene trovata la locazionegeografica; in “LinkLog” sono memorizzati i link che risultano non attivi; mentre in“BatchLog” sono segnalati eventuali errori nella procedura di creazione delle listee dunque di elementi mancanti nelle pagine. Tutte le tabelle di tipo “Log” vengonoazzerate ad ogni nuovo utilizzo dell’applicazione, così da garantire la presenza Capitolo: 5 – Procedure e funzioni del progettodegli errori dell’ultima sessione evitando la sovrapposizione con i dati delleprecedenti generazioni.5 – Procedure e funzioni del progetto Una volta testate le procedure e costituite le tabelle aggiuntive si è passati allafase di affinamento del progetto. Le procedure sono state dunque pulite dai datifissi (di test) e modificate in modo da poter utilizzare dati in ingresso e gestire letabelle a seconda del caso e poter essere accorpate e richiamate per i diversiscopi. 14
  15. 15. Autenticazione Utente La procedura si occupa di autenticare l’utente ai servizi di Google, l’utentedeve perciò essersi preventivamente registrato alla piattaforma Google. Viene effettuata una richiesta http di tipo POST al server di autenticazione diGoogle https://www.google.com/accounts/ClientLogin, nella quale è specificato ilnome utente (mail), la password, il servizio a cui ci si vuole autenticare el’applicazione che si vuole autenticare. In caso di autenticazione positiva il serverrestituisce il codice di autenticazione del servizio “Auth” che viene memorizzatonel database per poter essere utilizzato durante tutte le successive richieste alservizio. In caso di autorizzazione respinta è fornito un messaggio di errore chedescrive il tipo di errore verificatosi di modo che l’utente possa procedere allasoluzione del problema. In tutte le procedure dei servizi Google è utilizzato il token di autenticazione Capitolo: 5 – Procedure e funzioni del progettospecifico del servizio, viene cioè inserito negli header della richiesta http.Crea una pagina di Sites La procedura si occupa di generare e trasmettere il codice xml corretto alservizio feed di Google Sites, attraverso una richiesta http di tipo POST. Crea ilcodice xml inserendo i dettagli specifici della pagina come Titolo e path relativo,infine completa gli header richiesti ed invia il tutto al sito di feed di Google Site.Nella sua versione di test si occupava di generare anche le colonne della lista, 15
  16. 16. ma un bug nella gestione delle liste da parte del server di Google non permettel’interpretazione corretta dei link se la lista viene creata con la pagina. Si èdunque scelto di creare la pagina secondo un modello, adeguatamente preparatoe memorizzato tra i modelli di Sites; in questo modo il bug non si verifica e non ènecessario l’intervento dell’utente nella fase di generazione. La procedura sioccupa anche di memorizzare i campi Entry_ID ed Etag univoci della pagina perpoter essere utilizzati nelle fasi di modifica ed eliminazione, tali campi sonorestituiti dal server in caso di risposta positiva alla creazione della pagina.Elimina una pagina di Sites Al contrario della precedente, si occupa di cancellare una pagina specifica del Capitolo: 5 – Procedure e funzioni del progettosito, sempre attraverso una richiesta http. In questo caso però viene fatta unarichiesta DELETE che specifica il path della pagina e il suo Entry_ID univoco,inoltre negli header viene specificato l’Etag per essere sicuri che non siacancellata una versione diversa della pagina.Modifica una pagina singola di Sites La procedura si occupa di modificare la pagina selezionata in manieraadeguata attraverso una richiesta di tipo PUT. Viene generato il codice xmlrelativo alla pagina con i dati specifici, come la titolazione delle colonne della listaed i link alla mappa. Questa procedura si è rivelata un passo necessario nellagenerazione delle pagine di lista a seguito del workaround istituito nel sistema di 16
  17. 17. creazione delle pagine: l’utilizzo di modelli non permette infatti di personalizzare ilcontenuto della pagina e quindi di inserire il link alla mappa relativa.Richieste Batch La procedura si occupa di generare codice xml che permette l’esecuzione dipiù operazioni in una sola richiesta al servizio di feed. Google Sites offre unsistema di richieste multiple che dovrebbe permettere di migliorarel’ottimizzazione del codice in favore di velocità e occupazione di rete, tale servizioè la richiesta batch. Questo metodo è stato scelto per caricare più rapidamente lepagine di lista, inserendo più righe contemporaneamente all’interno di ognipagina. Allo stato attuale del progetto il sistema genera un solo elemento per ognirichiesta in quanto il server non gestisce correttamente tutte le operazionisuccessive alla prima. È stato comunque scelto di mantenere questo metodo diaggiornamento perché in caso di risoluzione del problema, da parte di Google,sarebbe facilmente aumentabile il numero di elementi generati.Recupera dati di pagina di Sites Si occupa di recuperare l’Entry_ID e l’Etag della pagina in base al nome. Laprocedura permette di recuperare tutti i dettagli prima della rigenerazione, così daavere le informazioni aggiornate anche a seguito di eventuali interventi manuali.È infatti prassi di Google modificare l’Etag ad ogni modifica della pagina, in modo Capitolo: 5 – Procedure e funzioni del progettoda tenere traccia delle diverse versioni della stessa e prevenire modificheaccidentali.Crea tabella di Fusion Permette la creazione di una tabella all’interno di Fusion Tables. Questaprocedura è stata utilizzata nei moduli di test, ma non è utilizzata nel codicefinale. Le API di Fusion permettono tramite codice SQL di creare e specificareogni dettaglio della nuova tabella, ciò ha portato molti meno problemi diinterpretazione da parte dei server di Google e quindi una maggior facilità disviluppo. 17
  18. 18. Aggiungi righe in tabella di Fusion La procedura si occupa di aggiungere righe compilate all’interno della tabellaselezionata. Inserisce nelle tabelle di mappa tutti i dati relativi ai punti geograficitrovati con la geolocalizzazione: nome, informazioni di Google, link agli articoli direcensione, coordinate geografiche. Essendoci un limite di 500 richieste SQL perogni richiesta http, la procedura si occupa anche di dividere le richieste in gruppidi dimensione corretta in modo da non generare errore sui server.Elimina righe da tabella di Fusion Inizialmente concepita come Elimina tabella, ci si è poi convertiti al semplicesvuotamento della stessa prima di inserire i nuovi dati. La procedura fa unarichiesta SQL di tipo DELETE che porta all’eliminazione di tutti i dati, ma nondelle definizioni della visualizzazione della mappa.Cerca punto geografico È la procedura che si occupa di geolocalizzare tutte le attività del database inbase al nome, la nazione e il tipo di attività del dato. Attraverso una richiesta httpdi tipo POST all’indirizzo specifico delle ricerche geografiche di Google e con iparametri corretti, selezionati tra quelli messi a disposizione da Google CustomSearch, la procedura ottiene in risposta un file KML con tutti i dettagli del punto Capitolo: 5 – Procedure e funzioni del progettolocalizzato. Procede dunque ad analizzare il file in cerca dei dati rilevanti ed utilialla costruzione della nuova mappa e li salva nel database. 18
  19. 19. Seleziona elemento SI È già stato geolocalizzato? NO Ricerca tramite Google Map Search Segnala nel Log Trovato con la NO per impostazione ricerca? manuale SI Salva i dati di Google Finiti gli NO elementi? SI Esci dalla ricercaMostra Nodo Singolo È la funzione che si occupa di fare l’analisi del file KML, ricerca il nodo richiestoall’interno del file e restituisce il valore desiderato. Nella sua versione originale Capitolo: 5 – Procedure e funzioni del progettoera previsto l’uso di xPath come linguaggio di analisi del documento, talefunzione è però mal implementata all’interno di Access2003, perciò è stato usatoXSLT per raggiungere i nodi, seppur non altrettanto funzionale.URL Encode 1 La funzione si occupa di convertire le stringhe di testo in codice urlencode, inmodo da poter trasmettere il codice SQL attraverso le richieste http. Con questo 1 La funzione è stata copiata da un sito internet specializzato. L’indirizzo è specificato nel codice 19
  20. 20. metodo i caratteri vengono codificati in maniera univoca e non si verificano errorirelativi a caratteri speciali o lingue particolari.Controllo URL La sua funzione è quella di verificare che i link agli articoli di recensione sianofunzionanti, in modo da inserire solo informazioni valide ed aggiornate all’internodel sito. La procedura, attraverso la funzione “IsLink”, effettua una richiesta http ditipo HEAD che le permette di verificare rapidamente se la pagina richiesta esiste,in caso di risposta affermativa, il link è marcato come valido, altrimenti èsegnalato sul log per permettere un controllo manuale. Seleziona elemento SI NO È marcato Controlla tutti? come valido? SI NO SI È link valido? NO Capitolo: 5 – Procedure e funzioni del progetto Segnala sul Log e Marca come marca come linkvalido = SI linkvalido = NO Ho terminato NO gli elementi? SI Esci dalla routine . 20
  21. 21. Web Content La procedura si occupa di generare il Web Content dei punti geolocalizzati inprecedenza secondo i criteri richiesti dal committente. Alla tabella con i link èapplicato un filtro, in modo da ottenere solo gli elementi relativi al puntoconsiderato ed ordinarli per data dal più recente al più vecchio; così vienegenerato il codice HTML per ogni link e salvato nell’ordine corretto all’interno delcampo NoteWeb della tabella che andrà a formare la mappa. Capitolo: 5 – Procedure e funzioni del progettoControllo connessione a Internet2 Rapida funzione che controlla la connessione ad internet. Essendo l’interoprogetto strettamente legato alla connessione ad internet, è fondamentale saperese questa è attiva. 2 La funzione è stata copiata da un sito internet specializzato. L’indirizzo è specificato nel codice 21
  22. 22. 6 – Realizzazione dell’interfaccia L’interfaccia è stata sviluppata attraverso l’uso delle form di Access 2003;considerate le necessità del committente sono state sviluppate 4 form chepermettono la gestione di tutte le necessità:  Home, che introduce l’utente all’applicazione e permette la definizione dei parametri fondamentali per l’autenticazione, l’uso del database e l’aggiornamento del sito. Capitolo: 6 – Realizzazione dell’interfaccia  Controllo utente, la “stanza dei bottoni” che offre l’accesso a tutte le funzioni del progetto. Da questa interfaccia è possibile: o Effettuare il controllo dei link che andranno poi a formare il Web Content e visualizzare eventuali errori avvenuti durante il controllo, è possibile inoltre selezionare se fare il controllo su tutti i link o solo su quelli non ancora validi, attraverso l’uso di una combo box; o Localizzare i punti geografici non ancora individuati, attraverso la ricerca automatica su Google Maps e la visualizzazione di un report nel quale sono segnalati gli elementi non trovati; o Aprire il form di verifica dei dati localizzati; 22
  23. 23. o Generare le liste e le mappe separatamente per le diverse pagine o Generare le liste e le mappe per tutte le pagine del sito o Visualizzare il report della generazione o Controllare, grazie ai valori di congruenza, l’entità dei dati trattati e possibili errori nelle pagine di lista Capitolo: 6 – Realizzazione dell’interfaccia Verifica dati, permette di controllare tutti i dati geolocalizzati per modificare eventuali errori nella ricerca o inserire le coordinate geografiche dei punti che non sono stati trovati attraverso la procedura 23
  24. 24. automatica. Per semplificare l’inserimento delle coordinate è stato inserito un pulsante che permette di filtrare i campi e visualizzare i soli campi non localizzati. Operazioni, fornisce costantemente l’attività del programma durante le Capitolo: 6 – Realizzazione dell’interfaccia operazioni attraverso una linea di controllo e lo status attuale dell’operazione. 24
  25. 25. 7 – Tempi di esecuzione ed errori Nei test effettuati con 493 elementi si è riusciti a generare l’intero sito in 20minuti, esclusa localizzazione dei dati e controllo dei link, utilizzando una lineaADSL da 320 kbit/s in upload; una connessione di rete più veloce permetterebbetempi ancora migliori. I vantaggi per l’utente, in termine di tempo, sonosicuramente positivi rispetto all’applicazione manuale delle modifiche sul sito. Tempo medio di generazione (in minuti) stimato in base al volume di elementi 250 200 150 tempo 100 50 0 500 1000 2500 5000 La geolocalizzazione ha generalmente tempi contenuti essendo effettuata solosui nuovi elementi e non sull’intero database. Per i punti che vengono trovati iltempo medio di elaborazione è di 1 al secondo, nel caso dei non trovati il temposcende a 3 al secondo. Il tasso di errore sul campione testato è stato del 8,3% Capitolo: 7 – Tempi di esecuzione ed erroricon 43 elementi non localizzati, di cui 34 facenti parte del campione Food &Beverage che presenta molti elementi mancanti anche con la ricerca manuale;filtrando questi dati il tasso di localizzazioni mancate scende al 2,8%, cioè 9elementi su 321. Al fine di posizionare anche questi elementi è prevista unaprocedura di immissione manuale delle coordinate a seguito di una ricerca delpunto desiderato, in tal modo i punti verranno localizzati e non si ripresenterannocome mancanti alla ricerca successiva. Il controllo dei link può essere critico dal punto di vista dei tempi se effettuatosu tutti gli elementi, perciò è stata introdotta la possibilità di controllare solo i 25
  26. 26. nuovi inserimenti e i link che risultano non attivi. Per una verifica completa delcampione a disposizione il tempo è stato di 8 minuti con una velocità media dipoco inferiore ad 1 link al secondo. Purtroppo non sono stati trovati metodi piùrapidi per il controllo dei link, ma è stato rilevato un solo falso positivo (linksegnalato erroneamente come inattivo) sull’intero campione di 493 link con untasso di errore dello 0,2%. Capitolo: 7 – Tempi di esecuzione ed errori 26
  27. 27. 8 – Conclusioni Lo sviluppo dell’applicazione, del sito internet e delle mappe si è concluso conesito parzialmente positivo. Il vantaggio principale ottenuto dall’utilizzodell’applicativo è la possibilità di aggiornare completamente le liste e le mappedel sito di Google Site senza l’intervento manuale dell’utente sulle pagine. Il lavoro svolto può essere quantificato principalmente in:  Progettazione e creazione di 11 tabelle  4 form di gestione dell’applicazione  1500 righe di codice non autogenerato in VBA  3 report  Progettazione ad hoc di 4 pagine di Google Sites  Progettazione di 2 pagine di modello di Google Sites che sono di base per la generazione di 22 pagine del sito. Il lavoro di progettazione e sviluppo è stato complicato da repentine modifichedei servizi Google che hanno comportato la necessità di cambiare alcune partidel programma in corso d’opera. La struttura delle tabelle non è statacompromessa da tali variazioni che hanno colpito solo alcune parti del codice, ilche ci ha dato conferma della buona progettazione della base dati. Una modificadell’ultima ora al codice KML, generato dalle pagine di Google Maps, non hapermesso la corretta generazione dei Balloon contenenti le informazioni diGoogle e la parziale conclusione del progetto. Una soluzione a questo problemapotrebbe essere l’uso di un altro ambiente di sviluppo che supporticompletamente le API di Google. Capitolo: 8 – Conclusioni 27
  28. 28. Bibliografia https://code.google.com http://msdn.microsoft.com http://office.microsoft.com/it-it/access-help http://forum.masterdrive.it http://www.freevbcode.com http://stackoverflow.com Capitolo: Bibliografia 28
  29. 29. Ringraziamenti Ringrazio mia madre per la pazienza ed il supporto finanziario in questi lunghi anni di università, Ester per avermi sopportato ed incitato a completare questo percorso, tutti gli amici che mi hanno fatto compagnia in questi splendidi anni. Ora odio Google, i suoi strumenti di morte (fatti male) e il suo forum di supporto generalmente poco collaborativo, eccezion fatta per Kathryn del forum di Fusion Tables Capitolo: Ringraziamenti 29

×