private async void OnExecuteStatisticsQueryClicked(object sender, EventArgs e) { // Create definitions for each statistic to calculate StatisticDefinition statDefinitionAvgPop = new StatisticDefinition("POP", StatisticType.Average, ""); StatisticDefinition statDefinitionMinPop = new StatisticDefinition("POP", StatisticType.Minimum, ""); StatisticDefinition statDefinitionMaxPop = new StatisticDefinition("POP", StatisticType.Maximum, ""); StatisticDefinition statDefinitionSumPop = new StatisticDefinition("POP", StatisticType.Sum, ""); StatisticDefinition statDefinitionStdDevPop = new StatisticDefinition("POP", StatisticType.StandardDeviation, ""); StatisticDefinition statDefinitionVarPop = new StatisticDefinition("POP", StatisticType.Variance, ""); // Create a definition for count that includes an alias for the output StatisticDefinition statDefinitionCount = new StatisticDefinition("POP", StatisticType.Count, "CityCount"); // Add the statistics definitions to a list List <StatisticDefinition> statDefinitions = new List <StatisticDefinition> { statDefinitionAvgPop, statDefinitionCount, statDefinitionMinPop, statDefinitionMaxPop, statDefinitionSumPop, statDefinitionStdDevPop, statDefinitionVarPop }; // Create the statistics query parameters, pass in the list of definitions StatisticsQueryParameters statQueryParams = new StatisticsQueryParameters(statDefinitions); // If only using features in the current extent, set up the spatial filter for the statistics query parameters if (_onlyInExtentSwitch.Checked) { // Get the current extent (envelope) from the map view Envelope currentExtent = _myMapView.GetCurrentViewpoint(ViewpointType.BoundingGeometry).TargetGeometry as Envelope; // Set the statistics query parameters geometry with the envelope statQueryParams.Geometry = currentExtent; // Set the spatial relationship to Intersects (which is the default) statQueryParams.SpatialRelationship = SpatialRelationship.Intersects; } // If only evaluating the largest cities (over 5 million in population), set up an attribute filter if (_onlyBigCitiesSwitch.Checked) { // Set a where clause to get the largest cities (could also use "POP_CLASS = '5,000,000 and greater'") statQueryParams.WhereClause = "POP_RANK = 1"; } // Execute the statistical query with these parameters and await the results StatisticsQueryResult statQueryResult = await _worldCitiesTable.QueryStatisticsAsync(statQueryParams); // Display results in a list in a dialog List <KeyValuePair <string, object> > statsList = statQueryResult.First().Statistics.ToList(); ShowStatsList(statsList); }
private async void OnExecuteStatisticsQueryClicked(object sender, EventArgs e) { // Create definitions for each statistic to calculate StatisticDefinition statDefinitionAvgPop = new StatisticDefinition("POP", StatisticType.Average, ""); StatisticDefinition statDefinitionMinPop = new StatisticDefinition("POP", StatisticType.Minimum, ""); StatisticDefinition statDefinitionMaxPop = new StatisticDefinition("POP", StatisticType.Maximum, ""); StatisticDefinition statDefinitionSumPop = new StatisticDefinition("POP", StatisticType.Sum, ""); StatisticDefinition statDefinitionStdDevPop = new StatisticDefinition("POP", StatisticType.StandardDeviation, ""); StatisticDefinition statDefinitionVarPop = new StatisticDefinition("POP", StatisticType.Variance, ""); // Create a definition for count that includes an alias for the output StatisticDefinition statDefinitionCount = new StatisticDefinition("POP", StatisticType.Count, "CityCount"); // Add the statistics definitions to a list List <StatisticDefinition> statDefinitions = new List <StatisticDefinition> { statDefinitionAvgPop, statDefinitionCount, statDefinitionMinPop, statDefinitionMaxPop, statDefinitionSumPop, statDefinitionStdDevPop, statDefinitionVarPop }; // Create the statistics query parameters, pass in the list of definitions StatisticsQueryParameters statQueryParams = new StatisticsQueryParameters(statDefinitions); // If only using features in the current extent, set up the spatial filter for the statistics query parameters if (OnlyInExtentSwitch.IsToggled) { // Get the current extent (envelope) from the map view Envelope currentExtent = MyMapView.GetCurrentViewpoint(ViewpointType.BoundingGeometry).TargetGeometry as Envelope; // Set the statistics query parameters geometry with the envelope statQueryParams.Geometry = currentExtent; // Set the spatial relationship to Intersects (which is the default) statQueryParams.SpatialRelationship = SpatialRelationship.Intersects; } // If only evaluating the largest cities (over 5 million in population), set up an attribute filter if (OnlyBigCitiesSwitch.IsToggled) { // Set a where clause to get the largest cities (could also use "POP_CLASS = '5,000,000 and greater'") statQueryParams.WhereClause = "POP_RANK = 1"; } try { // Execute the statistical query with these parameters and await the results StatisticsQueryResult statQueryResult = await _worldCitiesTable.QueryStatisticsAsync(statQueryParams); // Display results in the list box StatResultsList.ItemsSource = statQueryResult.First().Statistics.Select(m => $"{m.Key}:{m.Value}").ToList(); ResultsGrid.IsVisible = true; } catch (Exception ex) { await Application.Current.MainPage.DisplayAlert("Error", ex.Message, "OK"); } }