Google Maps in QlikView

在看了一篇Google Map 和 QlikView10 整合的文章,决定自己实践一下熟悉一下这个流程。由于原文是西班牙语,所以没有逐句翻译,只是明白大体流程后,将我自己做的流程写下来,流程如下:

 

1. 打开QlikView 10(下载地址) 通过 File->Edit Script将以下代码贴到原有代码的下方。点击File—>Reload,加载数据。

SET DecimalSep='.';

// Google Maps en QlikView
// Google Maps Key. Obten la tuya en http://code.google.com/apis/maps/signup.html
gmap_key = 'xx';
max_zoom_level = 4; //valor máximo = 17

// Variables requeridas para calcular mapa
var_pi180=      '=pi()/180';
var_lat_offset= '0';

var_mid_lat=    '=min(latitude)+(1+var_lat_offset)*((max(latitude)-min(latitude))/2)';
var_mid_long=   '=min(longitude)+(max(longitude)-min(longitude))/2';
var_zoom=       '=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)) ) <map_size_x 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()))))<map_size_y,_zoom_level,1),_zoom_level))';
var_maptype=    '=if(isnull(only(maptype)),fieldvalue( '&chr(39&'maptype'&chr(39)&', 1 ),maptype)';
map_size_x=         '350';
map_size_y=     '350';
var_mc2=        '=256*pow(2,$(var_zoom))';
var_mc1=        '=256*pow(2,($(var_zoom)-1))';
SET HidePrefix='_' ;

// Campo Requerido para calcular el mejor nivel de zoom
_zoom_level:
Load RecNo( ) as _zoom_level autogenerate(max_zoom_level);

maptype:
LOAD * INLINE [
maptype
roadmap
mobile
satellite
terrain
hybrid
];

Data:
LOAD * INLINE [
ciudad,poblacion,latitude,longitude
Arica,189692,-32.7648852,-71.1963079
Iquique,286105,-20.2440725,-70.1385651
Antofagasta,547933,-23.6239214,-70.4016127
Copiapó,272402,-27.3753215,-70.3285281
La Serena,6773,-29.9069352,-71.2470754
Valparaíso,1682005,-33.0504619,-71.6164515
Santiago,6607805,-33.4253598,-70.5664659
Rancagua,84912,-34.1620308,-70.7410124
Talca,975244,-35.4227130,-71.6565138
Concepción,1982649,-36.8148146,-73.0292574
Temuco,937259,-38.7270296,-72.5989468
Valdivia,373712,-39.8274322,-73.2512409
Puerto Montt,794529,-41.4543039,-72.9925047
Coihaique,100417,-45.5637560,-72.0646866
Punta Arenas,156502,-53.1478563,-70.9066254
];

 

 

 

2.在QlikView的Main Sheet 面板中右键 新建一个Chart 选择Scatter Chart。然后点击完成,这时这个Chart 还什么数据都没有,所以在Chart右键 属性切换到Dimension面板上,插入一个Dimension——-Ciudad,完成后点击应用。

 

Google Maps in QlikView_第1张图片

 

3.切换到Expressions的设置面板,先勾选上左下角的Advanced Mode,切换到如下图的编辑模式。

要添加四个Expressions。分别如下:

  1. longitude

    • Definition: =avg( round (256*pow(2,($(var_zoom)-1)))+( longitude  *((256*pow(2,$(var_zoom)))/360)) )
    • backgroud color: =argb(180,round(550*poblacion/max(total poblacion)),0,80)
  2. latitude
    • Definition: =avg(((256*pow(2,($(var_zoom)-1)))+((0.5*log((1+(sin((latitude)*pi()/180)))/(1-(sin((latitude)*pi()/180)))))*((-256*pow(2,$(var_zoom)))/(2*pi())))))
  3. poblacion 
    Definition: poblacion
  4. ciudad
    Definition: ciudad

 前两个的定义值填入上述的公式,后面两个就填上两个字段名就好了。完成后点击应用。

 

 

4. 切换到定义Axes的界面,将下面的值填入相应的文本框中。

 

  • Escala Eje X
  • Min Estático: =((256*pow(2,($(var_zoom)-1)))+( var_mid_long *((256*pow(2,$(var_zoom)))/360)) -round(map_size_x/2))
  • Max Estático: =((256*pow(2,($(var_zoom)-1)))+( var_mid_long *((256*pow(2,$(var_zoom)))/360)) + round(map_size_x/2)-15)
  •  

  • Escala Eje Y
  • Min Estático: =((256*pow(2,($(var_zoom)-1)))+((0.5*log((1+(sin(var_mid_lat*pi()/180)))/(1-(sin(var_mid_lat*pi()/180)))))*((-256*pow(2,$(var_zoom)))/(2*pi())))+round(map_size_y/2))
  • Max Estático: =((256*pow(2,($(var_zoom)-1)))+((0.5*log((1+(sin(var_mid_lat*pi()/180)))/(1-(sin(var_mid_lat*pi()/180)))))*((-256*pow(2,$(var_zoom)))/(2*pi())))-round(map_size_y/2)+15)
  •  

    5.最后一步很关键,切换到Colors面板 中面板的左中部有一个Frame Background,选中其中的一个Dynamic Image,填入以下的公式。完成后点击应用,这时就能看到效果了。Qlikview版本不同效果也有些不同。

    ='http://maps.google.com/staticmap?center='&num(var_mid_lat, '##############', '.', ',' )&','&num(var_mid_long, '##############', '.', ',' )&'&zoom=$(var_zoom)'&'&maptype='&var_maptype&'&size='&map_size_x&'x'&map_size_y&'&key='&gmap_key & '.jpg' 

    6.再可以添加些其他Object,最后效果图如下。

    原文地址:http://www.webmining.cl/2011/02/google-maps-en-qlikview/

     

    你可能感兴趣的:(map,Google,QlikView)