4. #sqlsatTorino
#sqlsat400May 23, 2015
Speaker
Speaker
§
Analista/Programmatore presso Banco Popolare
§
In servizio presso Sistema Informativo Risorse Umane, ufficio che si occupa della
gestione di tutte le procedure aziendali legate alle risorse umane (anagrafiche,
assenze/presenze, paghe, formazione ecc.)
§
MCTS “SQL Server 2008 Developer”.
§
Competenze e principali e ambiti di attività: SQL Server,
Oracle, Data Warehouse, Reporting, BI, Analysis
Services, C#.
5. #sqlsatTorino
#sqlsat400May 23, 2015
Agenda
Geocoding e rappresentazione dei dati su mappe
geografiche
I servizi di geocoding di Google e Bing: chiavi pubbliche e
licenze private
Archiviare i dati: i tipi di dati geografici in SQL Server
Dagli indirizzi alle coordinate spaziali: Integration Services,
funzioni CLR
Rappresentazione ed utilizzo dei dati: Reporting Services
Conclusioni
6. #sqlsatTorino
#sqlsat400May 23, 2015
Cosa è il geocoding
Con il termine “geocoding” si indica il processo attraverso il
quale, partendo da un indirizzo si ottengono delle
coordinate geografiche.
Es: l’indirizzo via Agostino da Montefeltro 2, 10134
Torino TO
se geocodificato restituisce: 45.050185 N, 7.669781 E
I dati così ottenuti, possono essere memorizzati in una
base dati ed utilizzati per calcoli, rappresentazioni, analisi
ecc.
7. #sqlsatTorino
#sqlsat400May 23, 2015
I servizi di geocoding: Google Maps
Google Maps fornisce uno dei più diffusi strumenti di
conversione in dati geografici attraverso una serie di API
standard.
Ci sono due tipologie di servizi: gratis ed a pagamento.
§
Google Maps free API (v3) :
2500 richieste in 24 ore.
5 richieste al secondo.
§
Google Maps API for Work:
100.000 richieste in 24 ore.
10 richieste al secondo.
Fonte: https://developers.google.com/maps/documentation/geocoding/
8. #sqlsatTorino
#sqlsat400May 23, 2015
I servizi di geocoding: Bing Maps
In alternativa a Google, Microsoft offre lo stesso tipo di
funzionalità attraverso Bing Maps, un API che può compiere
operazioni come geocodifica di un indirizzo, creazione di un
percorso, creazione di una mappa, ecc.
Microsoft distingue tra transazioni fatturabili e non fatturabili
(billable):
Per esempio, per una applicazione free che rientra nella
categoria non fatturabile, il limite massimo è di 125.000
transazioni per anno.
Fonte: https://www.microsoft.com/maps/product/terms.html
9. #sqlsatTorino
#sqlsat400May 23, 2015
Geocoding API Request Format
Una richiesta di geocodifica deve avere un formato
standard.
Google Free API:
https://maps.googleapis.com/maps/api/geocode/output?parameters&key=API_KEY
https://maps.googleapis.com/maps/api/geocode/ → parte fissa
output → formato di output restituito: json o xml
parameters → parametri della chiamata: address o components
Key → chiave per API fornita da Google.
10. #sqlsatTorino
#sqlsat400May 23, 2015
Geocoding API Request Format
Bing Free API:
http://dev.virtualearth.net/REST/v1/Locations?
countryRegion=countryRegion&adminDistrict=adminDistrict&locality=locality&pos
talCode=postalCode&addressLine=addressLine&userLocation=userLocation&user
Ip=userIp&usermapView=usermapView&includeNeighborhood=includeNeighborho
od&maxResults=maxResults&key=BingMapsKey
http://dev.virtualearth.net/REST/v1/Locations → parte fissa
(o)utput → formato di output restituito: json (default) o xml
parameters → parametri della chiamata.
BingMapsKey → chiave per API fornita da Bing.
11. #sqlsatTorino
#sqlsat400May 23, 2015
API Request free
Esempio richiesta con free API:
https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=xxxxxxxxxxxxxxxxxxx
parte fissa output indirizzo Google key
12. #sqlsatTorino
#sqlsat400May 23, 2015
Per utilizzare i servizi di geocodifica (anche quelli gratuiti) è
necessario ottenere una License Key.
Per Google consultare:
https://developers.google.com/maps/documentation/geocoding/#api_key
E' necessario un account google.
API Request free
14. #sqlsatTorino
#sqlsat400May 23, 2015
API Request for Works
La licenza Business, richiede un client-id (fornito da Google
al momento della sottoscrizione) ed una signature key
(generata dinamicamente ad ogni chiamata).
Esempio di richiesta:
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA
&client=gme-YOUR_CLIENT_ID&signature=YOUR_URL_SIGNATURE
Fonte: https://developers.google.com/maps/documentation/business/webservices/auth
15. #sqlsatTorino
#sqlsat400May 23, 2015
API Request Results
Indipendentemente dal tipo di richiesta, il risultato è un oggetto
JSON o XML, che contiene i dati di latitudine e longitudine
dell'indirizzo inserito:
18. #sqlsatTorino
#sqlsat400May 23, 2015
Dagli indirizzi alle coordinate
Gli strumenti di SQL Server per la trasformazione e l’analisi
dei dati
SQL Server
(uffici postali)
Integration
Services
(data flow e script C#)
Database Geocoding Data visualization
Reporting services
(mappe)
22. #sqlsatTorino
#sqlsat400May 23, 2015
Tipi di dati spaziali in SQL Server:
§
geometry: rappresentazione planare a due dimensioni di
coordinate di tipo x e y.
§
geography: rappresentazione ellissoidale tridimensionale
di coordinate di tipo geografico; latitudine e longitudine.
Data conversion
Database
23. #sqlsatTorino
#sqlsat400May 23, 2015
geography
I dati di latitudine e longitudine vengono convertiti nel tipo di
dato geography di SQL Server, che può venire utilizzato
per calcoli, analisi, rappresentazioni grafiche, ecc.
DECLARE @point geography;
SET @point = geography::STPointFromText('POINT(' + CAST(7.669781
AS VARCHAR(20)) + ' ' + CAST(45.050185 AS VARCHAR(20)) + ')',4326);
SELECT @point;
Database
24. #sqlsatTorino
#sqlsat400May 23, 2015
DEMO
Demo 2
Dagli indirizzi alle coordinate.
Dati spaziali e modalità di calcolo.
Funzioni e sp per interrogare i servizi remoti.
Elaborazione dei dati con un SSIS
29. #sqlsatTorino
#sqlsat400May 23, 2015
Resources
§
Google Geocoding API:
https://developers.google.com/maps/documentation/geocoding/
§
Google API for Work:
https://developers.google.com/maps/documentation/business/webservices/auth
§
Geocoding Using SSIS:
http://social.technet.microsoft.com/wiki/contents/articles/23214.geocoding-using-ssis.aspx
§
Geocode Addresses in T-SQL:
http://www.sqlservercentral.com/articles/geocode/70061/