10
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-

GoogleMaps for Qlik

  • Upload
    anchua

  • View
    9

  • Download
    0

Embed Size (px)

DESCRIPTION

GoogleMaps for QlikView

Citation preview

Page 1: GoogleMaps for Qlik

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-

Page 2: GoogleMaps for Qlik

(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.

Page 3: GoogleMaps for Qlik

2. Frontend Properties > New Chart – Grid Chart

Potrebne dimenzije su longitude i latitude.

Page 4: GoogleMaps for Qlik

Uvodimo novi Expression Quantity čija je definicija CustomerQuantity.

Page 5: GoogleMaps for Qlik

U tab-u Sort označiti samo opciju Text A -> Z.

Page 6: GoogleMaps for Qlik

U Style tab-u označiti željeni stil.

Page 7: GoogleMaps for Qlik

U Presentation tab-u označiti kao na slici.

Max Bubble Size 6, Bubble Scaling – Radius.

Page 8: GoogleMaps for Qlik

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'

Page 9: GoogleMaps for Qlik

Zadnji korak je u Caption Tab-u postaviti naslov i širinu i visinu grafa, kao na slici.

Page 10: GoogleMaps for Qlik

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.