/* Function to get cluster data. For cubeplan milano purposes */ {Set default params} if iconAggregate="" Then iconAggregate:="Max"; if labelAggregate="" Then labelAggregate:="Sum"; var paramGeoKey:= nodeId + '-' + labelField + '-' + labelAggregate + '-' + sizeField + '-' + sizeAggregate + '-' + colorField + '-' + colorAggregate + '-' + iconField + '-' + iconAggregate; var geoKey := evaluateScript('geoKey of ' & nodeid); if geoKey="" or isnull(geoKey) or findInText('Syntax error',geoKey) or geoKey<>paramGeoKey then cub_removeCluster(nodeid); {Get or generate id for new node} var geoId := evaluateScript('geoTag of ' & nodeid); if geoId="" or isnull(geoid) or findInText('Syntax error',geoid) then cub_clusterize(nodeid, indexId, attributeIndex , latField , lonField , labelField , labelaggregate, sizefield, sizeaggregate, colorField, coloraggregate,iconField, iconAggregate); geoId := evaluateScript('geoTag of ' & nodeid); if geoId<>"" and not isnull(geoid) and not findInText('Syntax error',geoid) then ( evaluateScript("geoKey of " & nodeid & " := " & paramGeoKey & " " ); var geoIds := splitText(geoId,","); var geoNodeId := slice( geoIds, zoomLevel); var clusterResult := HandleFromIdentifier(geoNodeId); var deltaX := Round( zoomtable[Zoom = zoomLevel, geocoords ="Longitude"] ,6); var deltaY := Round( zoomtable[Zoom = zoomLevel, geocoords ="Latitude"] ,6); viewportMinLat := viewportMinLat - deltaY; viewportMaxLat := viewportMaxLat + deltaY; viewportMinLon := viewportMinLon - deltaX; viewportMaxLon := viewportMaxLon + deltaX; index viewportFilter := subset( clusterResult[ clusterResult.aggregators ='AvgLat'] >= viewportMinLat AND clusterResult[ clusterResult.aggregators ='AvgLat'] <= viewportMaxLat AND clusterResult[ clusterResult.aggregators ='AvgLon'] >= viewportMinLon AND clusterResult[ clusterResult.aggregators ='AvgLon'] <= viewportMaxLon); var filteredResult := clusterResult[clusterResult.mapcell = viewportFilter]; filteredResult; );