Written on 22 May 2011, 10:49pm
Tagged with: fusion tables, google maps, php, sql
Google Fusion Tables is a modern data management and publishing web application that makes it easy to host, manage, collaborate on, visualize, and publish data tables online.
So as far as an user is concerned, a Fusion Table is a virtual table stored in the cloud, on which he can perform the regular CRUD operations. Here comes the nice part: the language on which you can perform these operations is SQL-like. The API is designed so that you can use URLs like
http://www.google.com/fusiontables/api/query?sql=select+*+from+1234567
The output of this request is a CSV text, with the contents of the selected table.
Let’s assume that you have a Fusion table where you store some physical addresses for some items. Below is a very simple PHP script which reads the contents of the fusion table, parses it, extracts the address, then performs a geocoding request using the geocoding API, parses the JSON object and outputs the latitude and longitude of the given address.
<?php
//run sql query to get data from fusion table
$url = 'http://www.google.com/fusiontables/api/query?sql=select+*+from+822057';
$lines = file($url);
$i = 0;
foreach ($lines as $line_num => $line)
{
//parse csv line
$csv = str_getcsv($line);
//extract the address
$address = $csv[7];
if($address)
{
//we need to geocode the address to get the latitude and longitude
$url_address = urlencode ($address);
$geocode_url = "http://maps.google.com/maps/api/geocode/json?address=$url_address&sensor=false";
$geocode = file_get_contents($geocode_url);
$output = json_decode($geocode);
$latitude = $output->results[0]->geometry->location->lat;
$longitude = $output->results[0]->geometry->location->lng;
//sleep for a second
sleep(1);
//do something nice with all this data
}
}
?>