Fuente: WebMining
En este artículo revisaremos cómo integrar Google Maps a nuestro proyecto de Qlikview para visualizar nuestra información directamente en un mapa dinámico. Gracias a la combinación de la tecnología AJAX y una API Key de Google, la visualización geográfica de los datos contenidos en un documento QlikView es una tarea fácil y muy efectiva. Ejemplos de aplicación de lo anterior son:
En este artículo revisaremos cómo integrar Google Maps a nuestro proyecto de Qlikview para visualizar nuestra información directamente en un mapa dinámico. Gracias a la combinación de la tecnología AJAX y una API Key de Google, la visualización geográfica de los datos contenidos en un documento QlikView es una tarea fácil y muy efectiva. Ejemplos de aplicación de lo anterior son:
- Visualización geográfica de información de propiedades para el sector Inmobiliario.
- Geolocalización de clientes, ventas, productos o servicios y cómo de distrubuyen geográficamente para el sector Retail o Banca.
- Puntos de interés turístico, hoteles, restoranes y otros para el sector Turismo.
- Visualización de ubicación de contribuyentes para el sector Gobierno.
- Cualquier otra variable que se te ocurra y que se pueda localizar geográficamente!…
¿ Cómo crear una API Key para Google Maps v3 ?
Lo primero es que necesitarás una cuenta de Gmail, luego vas ahttps://code.google.com/apis/console/ y una vez adentro creas una nueva API > “Create a new API Project”, luego vas a “API Access” > “Create Client ID”. Entonces selecciona Google Maps v3 de la lista de APIs disponibles y copias la key que aparece en “Simple API Access”…y ya la tienes!
Ejemplo de Integración
Para propósitos de demostración de la integración de Google Maps en Qlikview, hemos desarrollado el siguiente ejemplo:
Supongamos que tenemos la información de la población (cantidad de habitantes) de las principales ciudades de Chile y queremos desplegarla en un mapa. Tenemos entonces los siguientes datos (para cada ciudad hemos buscado las coordenadas de latitud y longitud en GMaps):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| 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 |
Manos a la obra
Partimos nuestro proyecto de GMap en Qlikview, vamos a Archivo >> Editor de Script (o con la tecla abreviada CTRL+E) e ingresamos el siguiente código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| 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 = 7; //valor máximo = 17 // Variables requeridas para calcular mapa 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= '=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'; 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 ] (delimiter is ','); |
El código anterior permite cargar las variables e instrucciones y los datos para generar el mapa. El resultado sería algo así como muestra la siguiente figura:
Grabamos y luego vamos a Archivo >> Ejecutar Script (o con la tecla abreviada CTRL+R) y cargamos los datos…
Agregaremos 3 objetos ahora:
- Un objeto Cuadro de Lista, apuntando a la variable maptype, que define el tipo de mapa (satelital, calles, híbrido, etc.)
- Un objeto Gráfico, con tipo de gráfico Tabla Simple, donde seleccionaremos las variables ciudad ypoblacion.
- Un objeto Gráfico, con tipo de gráfico Gráfico de Dispersión, donde irá nuestro mapa.
Vamos entonces a las propiedades del objeto Gráfico de Dispersión, y seleccionamos la dimensión ciudad, como muestra la figura:
Luego en la opción Expresiones añadimos las siguientes 4 expresiones:
- longitude
- latitude
- poblacion
- ciudad
Las dos últimas expresiones tiene como definición la misma variable. Las expresiones longitude y latitudetienen las siguientes definiciones:
- longitude
- Definición: =avg( round (256*pow(2,($(var_zoom)-1)))+( longitude *((256*pow(2,$(var_zoom)))/360)) )
- Color de fondo: =argb(180,round(550*poblacion/max(total poblacion)),0,80)
- latitude
- Definición: =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())))))
Estas definiciones se deben ingresar en la casilla Definición como muestra la siguiente figura:
Por su parte, para darle formato a la escalas de los ejes X e Y, también debemos definir expresiones. Esto lo hacemos en la opción Ejes, como muestra la siguiente figura, donde ingresamos cada una de las definiciones descritas a continuación:
- 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)
Finalmente, y no menos importante, en la opción Colores, debemos ingresar el código que hace que Google Maps muestre el mapa. Esto lo hacemos en la sección Formato de Marco, donde dice Imagen Dinámica, ingresamos la siguiente expresión :
Imagen Dinámica:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| = 'http://maps.google.com/maps/api/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 & '&sensor=false' |
El Resultado
El resultado de todos los pasos anteriores se muestra en la siguiente figura, donde podemos ver la población de las distintas ciudades de Chile dispuestas geográficamente en un mapa dinámico:
Notar que el tamaño y gradiente de color de la burbúja que aparece en el mapa indica el tamaño de la población de la ciudad. Esto se logra con las definiciones que hicimos anteriormente para latitude y longitude. También podemos hacer clic en el cuadro de la ciudad, o en la burbúja del mismo mapa, y se nos despliega la ciudad en cuestión. Por su parte, el Cuadro de Lista Tipo Mapa permite cambiar la vista a un mapa satelital, de calles o híbrido, como mencionamos anteriormente:
Bueno, con este ejemplo demostramos la potencialidad de Qlikview para desplegar nuestros datos usando Google Maps de una manera profesional.
No hay comentarios:
Publicar un comentario