Upload
anchua
View
9
Download
0
Embed Size (px)
DESCRIPTION
GoogleMaps for QlikView
Citation preview
Google map in QlikView Jedini potreban podatak u tablici je ime grada, nije potrebno unaprijed znati longitude i latitude.
1. skripte U skripti se ime grada sprema u varijablu koja se zatim koristi u linku GoogleMaps-a. Također Qlik
dohvaća longitude i latitude grada i sprema kao 2 atributa koja kasnije koristi za prikaz.
CustomerTable:
LOAD Quantity,
Customer,
City
FROM
C:\Users\Ana-Marija\Desktop\GoogleMaps Qlik\Customer_info.xls
(biff, embedded labels, table is [Sheet1$]);
let noRows = NoOfRows('CustomerTable')-1;
for i=0 to $(noRows)
let a = peek('Customer',$(i),'CustomerTable');
let b = peek('City',$(i),'CustomerTable');
let c = peek('Quantity',$(i),'CustomerTable');
GeocodeResponse:
LOAD
status,
'$(a)' as CustomerName,
'$(b)' as CustomerCity,
'$(c)' as CustomerQuantity,
([result/geometry/location/lat]) as latitude,
([result/geometry/location/lng]) as longitude
FROM
[http://maps.googleapis.com/maps/api/geocode/xml?address=$(b)&sensor=false]
(XmlSimple, Table is [GeocodeResponse]);
next i;
For petlja prolazi kroz sve redove tablice s gradovima i povlaci duljinu i širinu za pojedino mjesto.
Zatim se definira skripta za Google Maps.
// Google Maps Key
gmap_key = '';
max_zoom_level = 14;
def_zoom_level = 7;
def_map_size = 400;
// Variables required for calculating map
var_pi180 = '=pi()/180';
var_lat_offset = '0';
var_mc2 = '=256*pow(2,$(var_zoom))';
var_mc1 = '=256*pow(2,($(var_zoom)-1))';
var_mid_lat = '=median(latitude)';
var_mid_long = '=median(longitude)';
var_zoom = '=if(max(aggr(if(max(round(256*pow(2,(_zoom_level-
1)))+(Longitude*((256*pow(2,_zoom_level))/360)))-min(round(256*pow(2,(_zoom_level-
1)))+(Longitude*((256*pow(2,_zoom_level))/360)))<def_map_size AND
max((256*pow(2,(_zoom_level-1)))+((0.5*log((1+(sin((latitude)*pi()/180)))/(1-
(sin((latitude)*pi()/180)))))*((-256*pow(2,_zoom_level))/(2*pi()))))-
min((256*pow(2,(_zoom_level-1)))+((0.5*log((1+(sin((latitude)*pi()/180)))/(1-
(sin((latitude)*pi()/180)))))*((-
256*pow(2,_zoom_level))/(2*pi()))))<def_map_size,_zoom_level,null()),_zoom_level))>
def_zoom_level,max(aggr(if(max(round(256*pow(2,(_zoom_level-
1)))+(longitude*((256*pow(2,_zoom_level))/360)))-min(round(256*pow(2,(_zoom_level-
1)))+(longitude*((256*pow(2,_zoom_level))/360)))<def_map_size AND
max((256*pow(2,(_zoom_level-1)))+((0.5*log((1+(sin((latitude)*pi()/180)))/(1-
(sin((latitude)*pi()/180)))))*((-256*pow(2,_zoom_level))/(2*pi()))))-
min((256*pow(2,(_zoom_level-1)))+((0.5*log((1+(sin((latitude)*pi()/180)))/(1-
(sin((latitude)*pi()/180)))))*((-
256*pow(2,_zoom_level))/(2*pi()))))<def_map_size,_zoom_level,null()),_zoom_level)),
def_zoom_level)';
var_maptype =
'=if(isnull(only(maptype)),fieldvalue('&chr(39)&'maptype'&chr(39)&',4),maptype)';
// Calculate best zoom level
set HidePrefix = '_';
_zoom_level:
LOAD RecNo() as _zoom_level AutoGenerate(max_zoom_level);
maptype:
LOAD * INLINE [
Maptype
roadmap
mobile
satellite
terrain
hybrid
];
Može se također koristiti i različit prikaz mape koje nudi Google.
2. Frontend Properties > New Chart – Grid Chart
Potrebne dimenzije su longitude i latitude.
Uvodimo novi Expression Quantity čija je definicija CustomerQuantity.
U tab-u Sort označiti samo opciju Text A -> Z.
U Style tab-u označiti željeni stil.
U Presentation tab-u označiti kao na slici.
Max Bubble Size 6, Bubble Scaling – Radius.
U Colors tab-u je bitno za pozadinu postaviti sliku opcijom Dynamic Image: ='http://maps.googleapis.com/maps/api/staticmap?center=' &var_mid_lat &','
&var_mid_long&' &zoom=$(var_zoom)'&' &maptype='&var_maptype&'
&size='&def_map_size&'x'&def_map_size&' &sensor=false'
Zadnji korak je u Caption Tab-u postaviti naslov i širinu i visinu grafa, kao na slici.
3. Promjena Zoom levela Ukoliko se želi približiti locirani grad, odnosno ulica, u skripti se može promijeniti definirani Zoom
level.
U primjeru se vidi koliko se precizno može prikazati adresa npr.: Strojarska 20, Zagreb.