Using Qlik GeoAnalytics for Qlik Sense
This user guide explains how to use some of the unique features in GeoAnalytics. 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. Custom symbols and rotation are also 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.
- Geodata Layer - 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 an operation and then provides fields for operation parameters and data sources to apply the operation at. Example of operations are:
- Within - returns a table with relations between geometries in one dataset to geometries that contains them in another dataset.
- Closest - returns a table with relations between geometries in one dataset to the closest geometry in another dataset.
- Dissolve - creates custom areas based on smaller areas.
- Cluster - calculates clusters from a point dataset.
- Binning - aggregates points in a rectangular or hexagonal grid.
Drill-down hierarchies can be visualized in two ways. If the data in the different levels is of same kind (for example, if 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 hexagons. 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 select the "Select Data" button.
In the wizard you can choose between Rectangular and Hexagonal bins and the size of the bins. The size is specified in degrees, where one degree is approximately 100000 m. Good width-height-ratios varies depending on latitude. The default value is appropriate around latitude +-48 deg. If you want near square bins, for areas around +-60 deg use width-height-ratio 2 and near the equator 1.
Choose a Loaded Table as the dataset type and fill in the name of the table you want to apply binning to. Enter the necessary fields for the data. If you have not loaded the data choose another type.
Binning is often combined with techniques for displaying different aggregated data in different scales such as Drill-down or Zooming and panning in large point datasets.
Zooming and panning in large point datasets
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 behavior is that data for that area is loaded, while in drill-down 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.
In the Data Load Editor, create a Qlik GeoAnalytics Connector and open the wizard. Choose the SpatialIndex operation to be applied on your data. The default operation parameters are good enough in most cases.
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 Binning - visualize large point datasets) 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 come in both an English and a local version. Layers ending in Eng contain English text, and the others contain 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 are 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 Appearance>Info Bubble.
To build more customized behavior, 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 of 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, Qlik doesn't log any of the location data. All Qlik logs is meta data (i.e. 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 the map layers, that data is retrieved by the Qlik server in order to serve it to the user. As above, Qlik doesn't log any of the data in the GeoJSON file or what is used to do the lookup in the GeoJSON file. Qlik only logs 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 Qlik logs those transactions.
To put it simply, when using the Location Service or when using 'Load via Server' Qlik logs that transactions have been made but not any of the data/information related to said transactions. In other words Qlik doesn'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 transferred to the server. However, the server does not log any of the data. All that is logged is metadata (i.e. Qlik logs 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 transferred.
In order for GeoAnalytics to retrieve map data, you need to be able to establish a connection with both of the following servers on port 443 (HTTPS):
maps.qlikcloud.com (required for location lookups and background map)
ibasemaps-api.arcgis.com (required for Satellite base map)
For more information, refer to the Map service connection requirements on Ports used by user web browser.
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 its length unit.
Then use a GeoData Layer to display your background map. See the reference documentation for 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.