Query spaziali su Google Fusion Tables

E’ stata da poco rilasciata una nuova funzionalità per l’utilizzo delle Google Fusion Tables. L’ottimo servizio di gestione dei dati by Google da questo momento supporta anche le query spaziali!
Diverse sono le possibilità, tra cui determinare i punti di interesse che si trovano all’interno di una determinata area (rettangolare o circolare) oppure determinare il numero di elementi desiderati che si trovano nelle vicinanze di una particolare coppia di coordinate.

Stavolta la mia scelta è quella di non apportare particolari modifiche al codice riportato da Google e di farvi vedere solo uno degli esempi.
Mi sono limitato dunque a prendere dei dati già presenti in Internet (più precisamente l’indirizzo degli uffici postali presenti nella Provincia di Rimini) e li ho caricati in una Google Fusion Table, registrata all’indirizzo http://tables.googlelabs.com/DataSource?dsrcid=305567 . Il caso che vi propongo è quello di selezionare gli “n” uffici postali più vicini a un determinato punto della mappa.

Quello che è davvero interessante è che, per implementare la selezione all’interno del codice javascript, viene utilizzata una notazione “SQL-like” e quindi di facile comprensione

query: “SELECT indirizzo FROM ” + tableid + ” ORDER BY ST_DISTANCE(indirizzo, LATLNG(44.03, 12.56)) LIMIT 5″

tableid è la variabile che contiene il nome della Fusion Table, per il resto si tratta di una semplice query SQL dove i parametri sono il punto da cui calcolare le distanze (44.03, 12.56) e LIMIT, cioè il numero di punti da considerare (nel nostro caso 5)

Il codice finale è questo:

<!DOCTYPE html>

<html>
<head>
<meta name=”viewport” content=”initial-scale=1.0, user-scalable=no” />
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″/>

<style>
#map_canvas { height: 300px; width:600px; }
</style>

<script type=”text/javascript” src=”http://maps.google.com/maps/api/js?sensor=false”&gt;
<script type=”text/javascript”>

// definisce la tabella di Google Fusion da caricare

var tableid = 305567;

function initialize() {

map = new google.maps.Map(document.getElementById(‘map_canvas’), {
center: new google.maps.LatLng(44.03, 12.56),
zoom: 10,
disableDefaultUI: true,
navigationControl: true,
navigationControlOptions: {style: google.maps.NavigationControlStyle.MEDIUM},
mapTypeId: google.maps.MapTypeId.ROADMAP  });

//definisce il layer da visualizzare: la query e’ di tipo ‘Simil SQL’ e seleziona i 5 indirizzi (parametro LIMIT) più vicini al punto con coordinate 44.03 12.56
layer = new google.maps.FusionTablesLayer(tableid, {
query: “SELECT indirizzo FROM ” + tableid + ” ORDER BY ST_DISTANCE(indirizzo, LATLNG(44.03, 12.56)) LIMIT 5”  }
);
layer.setMap(map);

}
</script>
</head>
<  body onload=”initialize()”>
<div id=”map_canvas”>

</body>
</html>

mentre il risultato lo potete trovare qui.

Inutile dire che le potenzialità sono infinite. Potremmo infatti gestire come variabili sia il punto da cui calcolare le distanze (magari prendendola da un dispositivo mobile una volta impostato il parametro sensor a yes), sia il numero di markers da considerare (attraverso un FORM dal quale ricavare in input detto parametro).

Nella documentazione ufficiale Google Fusion Tables potete trovare gli altri esempi, fate qualche esperimento e… buon divertimento.

Linkografia

@ Search your geo data using spatial queries from Fusion Tables!
@ Google Fusion Table API

Annunci

2 Responses to “Query spaziali su Google Fusion Tables”


  1. 1 nico 1 marzo 2011 alle 2:09 pm

    grazie molto interessante
    ultimamente io utilizzavo le funzioni di mappa che ci sono nei gadget di google spreadsheet. ho notato però una lentezza oltre i 50 punti…in questo caso che limiti ci sono ?

    saresti in grado di fare un esempio con una query di tipo alfanumerico ?

    es. inserisco la sezione elettorale ed esce dove è il seggio
    oppure inserisco una via e mi dice dove è il seggio

    grazie
    nico

  2. 2 gabriele 28 dicembre 2015 alle 6:15 pm

    Ciao Nico, volevo chiederti come fare a gestire come variabili il punto da cui calcolare le distanze e prendere come variabili la mia posizione attuale. Grazie mille


Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...




Creative Commons License
Questo/a opera è pubblicato sotto una Licenza Creative Commons.

Addthis

AddThis Social Bookmark Button

Flickr Photos


%d blogger hanno fatto clic su Mi Piace per questo: