Qlik GeoAnalytics - User Guide

Qlik GeoAnalytics - User Guide

Version: April 2018 (5.11.1), Date: 2018-03-27



This user guide explains how to use some of the unique features in GeoAnalytics. The guide applies both to GeoAnalytics for Qlik Sense and QlikView except in a few cases where that is pointed out in the text. More detailed information is available in the documentation of the properties for each product. Another source of information are the examples and guides. Often it is efficient to use one of the examples as a starting point.

GeoAnalytics consists of two parts; the extensions that provides the visualization and a connector that provide load time operations. Both parts are installed at the same time but you can choose which to use.



The overall principle for GeoAnalytics is that the map and the various layers are separated in different components. The map and the data from Qlik displays on the GeoAnalytics map component but the dimensions and measures are connected to the layer components. The layer components automatically connect to the map component and display the data on it. If there are multiple maps on the page you need to specify which one the layer belongs to (Layer Options->Map ID).

The Map component is responsible for the background map and the layer components for application data on top of the map. There are several different layer components for different kinds of visualizations:

Bubble Layer - symbols on points which can be colored and scaled by measures, also custom symbols and rotation is supported

Line Layer - displays lines either from a start point to an end point or from geometries with breakpoints. Measures can control color and line width. Optionally lines can have arrows and be curved.

Area Layer - shows areas in colors controlled by measures

Heatmap Layer - displays point density with a color scale. Each point contributes to the intensity within a certain influence radius with a value that can come from a measure.

GeodataLayer - visualizes background map data, either from a tile service or from a file, such as GeoJSON. The URL is an expression that is evaluated at each selection and data is reloaded when the URL changes. This way it can connect to external data services with dynamic data.


Locations of data can in GeoAnalytics be represented in several different ways. Locations are used for putting data on the map but also for analysis done at load time with the GeoAnalytics connector.

Location IDs are names of features that can be used instead of actual coordinates. These are sometimes called geokeys. They are typically names or codes of countries, regions, postal codes, airport codes etc. They are looked up in the GeoAnalytics Location Service, alternatively a geographic file (GeoJSON or GML) can be used for the mapping.

Geometries, Sense style, are strings of coordinates within brackets. For instance "[12, 57.7]" is a point, "[[12, 57.7], [121, 57.6]]" is a line etc. Note that longitude comes first in this format.

Latitude and Longitude values can be used directly in Bubble Layer and Line Layer.

Use settings under Location Options in each layer to control how locations are interpreted.

Load time operations with GeoAnalytics

GeoAnalytics comes with a connector. It provides several geographic operations that can be applied at load time. It also loads several types of geographic and non geographic data sources that the operations can be applied to. One type of data source is tables that are already loaded in Qlik. That way operations can be applied to loaded data.

The connector has a wizard that lets you choose operation and then provides fields for operation parameters and data sources to apply the operation at. Example of operations are:



Drill down hierarchies can be visualized in 2 ways. If the data in the different levels is of same kind (like all are areas) and should be visualized in the same way, a single layer can be used.

Use the drill-down as dimension and add measures as usual. The dimension can be a location id, geometry or just an id. When selecting a single object (in the map or outside the map) the next level will be displayed automatically.

If you want to display different drill-down levels differently you can restrict a layer to be displayed in just some levels. Write the levels you want the layer to be displayed, separated with commas, in Layer Options->Restrict Drill Down. The drill-down must be the dimension. Then add other layers that are restricted to other drill-down levels.

Binning - visualize large point datasets

Binning is a technique to cluster point data in regularly shaped areas such as rectangles or hexagon. The purpose can be to get a less cluttered aggregated view of the data or increase performance. Binning is often configured so that different binning is displayed in different scales and the actual data may be displayed when zooming in.

Binning in GeoAnalytics is available in the GeoAnalytics connector. In Qlik Sense, open the Data Load Editor and create a new connector "Qlik GeoAnalytics Connector" and then press the "Select Data" button. In Qlikview edit the script and chose to connect to the IdevioGeoAnalyticsConnector in the Data-tab. Then chose to "Select Data" to enter the wizard.

In the wizard you can chose between Rectangular and Hexagonal bins and the size of the bins. The size is specified in degrees, one degree is approximately 100000 m. Good width-height-ratios varies depending on latitude. The default value is appropriate around latitude +-48 deg. For areas around +-60 deg use width-height-ratio 2 and near the equator 1. That is if you want near square bins.

Chose a Loaded Table as the dataset type and fill in the name of the table you want to apply binning to. Enter the neccesary fields for the data. If you have not loaded the data chose another type.

Binning is often combined with techniques for displaying different aggregated data in different scales such as drill-down or select visible, see more in respective section.

Zooming and panning in large point datasets

Note, this only applies to GeoAnalytics for Qlik Sense.

Usually when browsing in large datasets a drill-down technique is applied. However, this is not optimal for map presentations. When you have zoomed in and pan to the side the natural behaviour is that data for that areas is loaded, not as in drill down that nothing is displayed until you remove your selection and drill-down in a new area. The new feature called 'select visible' in GeoAnalytics makes this natural browsing of data possible. You can freely browse around in millions of points and the visualization automatically displays aggregated data when zoomed out and all the details when you are at more detailed scales.

To create an app that behaves in this way two things needs to be done. First, in the Data Load Editor create a Qlik GeoAnalytics Connector and open the wizard. Chose the SpatialIndex operation to be applied on your data. The default operation parameters are good enough in most cases.

Second, in the Map Settings, check 'Auto Select Visible'.

Now the map selects points based on what is visible in the map. To make this effective, you should add layers that are active in different resolution ranges. Display aggregated information (such as binned data, see section for Binning) when zoomed out and details when zoomed in. Control the resolution ranges where the layers are visible with 'In Resolution Limit' and 'Out Resolution Limit' in 'Layer Settings' for each layer. To determine good resolutions to use when switching layers, turn on debug information that displays current resolution in Map Settings->Debug->Show Debug Info.

To prevent Qlik from generating data for inactive layers when zoomed out, which can take a lot of time and memory for large datasets, you can check 'Disable when Inactive' in 'Layer Options' for each layer that presents detailed data. Note that you must save your app with a not too large selection, i.e. zoomed in, to prevent a large slow selection when the app is started. It is a technical limitation in Qlik that the layer can not be disabled at the initial selection.

Tuning the base map

The first choice is to select which base map to use. This is done in the map settings at: Map Settings->Base Map

With the default and plain base maps you can select which layers should be visible by bringing up the layer control by checking: Interaction and Controls->Show Layer Control

When the layer control is visible on the map you can choose which layers that should be displayed.

Some layers comes in both an English and a local version. Layers ending in Eng contains English text and the others text in the local language. For instance, there is both a Borders and a BordersEng layer. Make sure only one of them is checked.

The visibility state of each layer is saved with the app so you can hide it when you are satisfied with the tuning.

Localization of labels in base map

See Tuning the base map.

Labels and Pop-Ups

All layers that have measures can display labels next to the object. Labels can be any expression and for Bubble Layer the placement is configurable, see settings under Appearance->Label. Note that labels a single line texts without formatting codes.

Info bubbles are by default shown when hovering or clicking on an object. The default text contains the dimensions and measures. It can however be configured to display any html and is produced by an expression that composes the html string. The settings for the Info Bubble are found at Apperance->Info Bubble.

To build more customized behaviour links and buttons can be used in the Info Bubbles. This is one place where a Qlik app can be integrated with other systems. A click at a button could for instance bring up another system displaying information about the selected feature.


What data is transferred to the server from the map extension?

This applies to users using GeoAnalytics servers hosted in cloud, not users with own server installations.

When using the Location Service the Location IDs are sent to our servers for lookup. However we don't log any of the location data. All we log is meta data (i.e. we log that a lookup has been made but not what was looked up).

Also when using the 'Load via Server' option to load files (GeoJSON for example) in any of our layers that data is retrieved by our server in order to serve it to the user. Same thing here though, we don't log any of the data in the GeoJSON file or what is used to do the lookup in the GeoJSON file. We only log that a transaction has been made.

The extensions don't send any user information except for the license key in order to verify that the user has a valid license and we log those transactions of course.

To put it simply, when using the Location Service or when using 'Load via Server' we log that transactions have been made but not any of the data/information related to said transactions. In other words we don't log any user sensitive information.

What data is transferred to the server from the GeoAnalytics connector?

Using the standard connector, all datasets involved and all operation parameters are transfered to the server. However the server does not log any of the data. All that is logged is meta data (i.e. we log that an operation has been made but not the data).

When using GeoAnalytics Plus, data is sent to the server in fewer cases. Only data for lookup operations (standard areas and points, addresses, IP-lookups) and routing operations is sent to the server. All other operations take place locally and no data is transfered.


Coordinate systems

If you have lots of coordinates in another coordinate system than WGS-84 it might be efficient to run GeoAnalytics in another coordinate system. You then need to provide a background map in that coordinate system, either a tile service or a simple vector file.

To specify that you are using a non standard coordinate system, switch the base map in Map Settings to either 'Empty (undefined meters)' or 'Empty (WGS-84)', depending on if your coordinate system uses meters or degrees as length unit.

Then use a GeoData Layer to display your background map. See the reference documentation how you add an external tile service or a vector file like GeoJSON.

Now layers will expect coordinates to be in the same coordinate system as your background map. Note that the location service currently is limited to WGS-84.