Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
MarkMV
Contributor III
Contributor III

How to use GeoAnalytics features in QlikView

I am trying to do some detailed mapping in QlikView and I'm wondering if its possible to get a distance or travel radius from a central point? If so, can some one provide in depth details on how I would go about doing that? Again, this is in QlikView not Sense. Thanks in advance!

1 Solution

Accepted Solutions
MarkMV
Contributor III
Contributor III
Author

Patric,

     We were able to resolve the issue. We removed all modules from the Qlik GeoAnalytics Server Administration Console. Once everything was removed, we re-added them as stated in the install document. Whenever we were going through the process of checking all of the check boxes, we noticed that the module “route2” was failing to load due to insufficient memory (with the JVM set to 8GB). Previously, before we removed all of the modules, this module loaded fine and we never saw any issues regarding loading it. So we upped the JVM to 12GB, cycled the service and then the module loaded properly. After completing this the routing was working as intended.


I do have an additional question for you related to this issue. How does the GeoAnalytics Server handle RAM, especially related to the routing calculations? If one reload puts the RAM at 90% then another reload is conducted, does it clear the current data stored in memory in order to handle the new reload? We are trying to plan for the appropriate amount of RAM in order to avoid this issue in the future.

View solution in original post

7 Replies
Patric_Nordstrom
Employee
Employee

Hi Mark,

There are examples for all connector operations here, including routes and travelareas:

Connector and Guides & Examples

The examples are made with Qlik Sense but the essential part, the load script code will work in QlikView too. Just copy over.


We will also soon be posting more connector tutorials here, especially for QV, stay tuned.


Thanks,

Patric

MarkMV
Contributor III
Contributor III
Author

Thanks Patric!

When trying to load the script below I receive the error

"QVX_UNKNOWN_ERROR: Could not connect to route module: Server returned HTTP response code: 400 for URL: http://localhost/ravegeo/route2/travelAreas?format=xml"


Can you tell me what I may be doing wrong here?


[TravelAreas]:

SQL SELECT

[Facility Name], [DriveTimes_TravelArea], [DriveTimes_Origin], [DriveTimes_Cost], [DriveTimes_CostUnit], [DriveTimes_Status] FROM TravelAreas (costValue='10', costField='', costUnit='Miles', transportation='car', dataset='DriveTimes')

DATASOURCE DriveTimes INLINE tableName='Facilities', tableFields='[Facility Name],[Facility Latitude],[Facility Longitude]', geometryType='POINTLATLON', loadDistinct='YES', suffix='', crs='Auto' {[Facility Name] [Facility Latitude] [Facility Longitude]

Facility1 80.22224 -99.33339

Facility2 80.22225 -96.33338

/* Generated by GeoAnalytics for operation TravelAreas ---------------------- */

[Facilities_Distinct_Temp]:

LOAD distinct [Facility Name] AS tmpField_0, [Facility Latitude] AS tmpField_1, [Facility Longitude] AS tmpField_2 resident Facilities;


Let [DriveTimesInlineTable] = '[Facility Name]' & Chr(9) & '[Facility Latitude]' & Chr(9) & '[Facility Longitude]';

Let numRows = NoOfRows('Facilities_Distinct_Temp');

Let chunkSize = 1000;

Let chunks = numRows/chunkSize;

For n = 0 to chunks

Let chunkText = '';

Let chunk = n*chunkSize;

For i = 0 To chunkSize-1

Let row = '';

Let rowNr = chunk+i;

Exit for when rowNr >= numRows;

For Each f In 'tmpField_0', 'tmpField_1', 'tmpField_2'

row = row & Chr(9) & Replace(Replace(Replace(Replace(Replace(Replace(Peek('$(f)', $(rowNr), 'Facilities_Distinct_Temp'), Chr(39), '\u0027'), Chr(34), '\u0022'), Chr(91), '\u005b'), Chr(47), '\u002f'), Chr(42), '\u002a'), Chr(59), '\u003b');

Next

chunkText = chunkText & Chr(10) & Mid('$(row)', 2);

Next

[DriveTimesInlineTable] = [DriveTimesInlineTable] & chunkText;

Next

chunkText=''


DROP tables [Facilities_Distinct_Temp];


[TravelAreas]:

SQL SELECT

[Facility Name], [DriveTimes_TravelArea], [DriveTimes_Origin], [DriveTimes_Cost], [DriveTimes_CostUnit], [DriveTimes_Status] FROM TravelAreas (costValue='10', costField='', costUnit='Miles', transportation='car', dataset='DriveTimes')

DATASOURCE DriveTimes INLINE tableName='Facilities', tableFields='[Facility Name],[Facility Latitude],[Facility Longitude]', geometryType='POINTLATLON', loadDistinct='YES', suffix='', crs='Auto' {$(DriveTimesInlineTable)}

;

[DriveTimesInlineTable] = '';


/* End GeoAnalytics operation TravelAreas ----------------------------------- */

Patric_Nordstrom
Employee
Employee

Hi,

I'm guessing that the QGA server is running on another port than 80.

If so the  GaRouteService.xml must be edited, this is documented in the datapackage manual.


a. Locate GaRouteService.xml found in <Data Package folder>\OSMRouteXXXX.

b. Edit the file and update the moduleUrl to include the port selected during installation above, i.e. moduleUrl=http://localhost:8080/ravegeo/route2/.

For more details, have look at :

Qlik GeoAnalytics Enterprise Server Installation Guide

Thanks,

Patric

MarkMV
Contributor III
Contributor III
Author

We are using the default ports for the server, specifically 443. We also have QGA and QV on separate servers. Would the xml file still need to be modified when using 443?

I tried to run this script again and I noticed the error changed to

"QVX_UNKNOWN_ERROR: Could not connect to route module: Connection refused: connect"

Patric_Nordstrom
Employee
Employee

Hi,

Is there any odd entries in the server log?

C:\ProgramData\Qlik GeoAnalytics Server\server3\logs\main.log

The route module connects internally via http, port 80, is that port open?

Any security settings on the server that blocks connection to localhost from the server?

Do you have the the default port for http, 80?

Thanks,

Patric

MarkMV
Contributor III
Contributor III
Author

Patric,

     We were able to resolve the issue. We removed all modules from the Qlik GeoAnalytics Server Administration Console. Once everything was removed, we re-added them as stated in the install document. Whenever we were going through the process of checking all of the check boxes, we noticed that the module “route2” was failing to load due to insufficient memory (with the JVM set to 8GB). Previously, before we removed all of the modules, this module loaded fine and we never saw any issues regarding loading it. So we upped the JVM to 12GB, cycled the service and then the module loaded properly. After completing this the routing was working as intended.


I do have an additional question for you related to this issue. How does the GeoAnalytics Server handle RAM, especially related to the routing calculations? If one reload puts the RAM at 90% then another reload is conducted, does it clear the current data stored in memory in order to handle the new reload? We are trying to plan for the appropriate amount of RAM in order to avoid this issue in the future.

Patric_Nordstrom
Employee
Employee

Hi Mark,

The memory requirements depend on what data package you will use with the server. For the normal map data package 2GB is enough. While with the enterprise data package you should set it to at least 10GB (preferably 16GB)

as the GeoAnalytics operations and especially the route database requires a lot of memory. (from the server install manual)

At server startup the whole route graph is loaded into memory hence the peak in memory usage, after that it won't consume a lot more of memory, the graph data is reused at sequential calls. I would recommend 16 GB, that should cover all basic setups.

Thanks,

Patric