Instead of looping through features, I need a way to calculate the sum area of a polygon featurelayer efficiently. How to use QueryStatisticsAsync to calculate the total area of all graphics in a FeatureLayer?
Hi there,
Thank you for the question!
To efficiently calculate the total area of all polygons in a FeatureLayer without looping through individual features, you can use the QueryStatisticsAsync method. This approach is much faster and cleaner, especially for large datasets.
Here's how you can achieve this:
// Define statistic definition for summing polygon areas var areaStatisticDefinition = new StatisticDefinition("Shape_Area", StatisticType.Sum, "TotalArea"); // Set up statistics query parameters var queryParameters = new StatisticsQueryParameters(new List<StatisticDefinition> { areaStatisticDefinition }); // Execute statistics query asynchronously on your FeatureLayer var statisticsResult = await yourFeatureLayer .FeatureTable .QueryStatisticsAsync(queryParameters); // Retrieve total area result double totalArea = 0; if (statisticsResult.Any()) { totalArea = Convert.ToDouble(statisticsResult.First().Statistics["TotalArea"]); } // Output or use the totalArea as needed Console.WriteLine($"Total Area: {totalArea}");
Let me know if you have any questions or run into issues while implementing this!
is "Shape_Area" a preserve fieldName? there is no Shape_Area in my table.
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.