Estoy tratando de contar las filas por valores únicos para un determinado FeatureClass. Estoy usando DataStatistics para obtener los valores únicos de una columna específica para un determinado FeatureClass.
Este parece ser (muy) lento con grandes shapefiles (> 200k de características) - ¿hay una manera más rápida de determinar valores únicos?
El segundo paso del proceso (mediante QueryFilter en combinación con FeatureClass.FeatureCount()) parece lo suficientemente rápido a pesar de que estaría contento si estoy apuntado a una mejor solución.
public static Dictionary<string, int> CountUniquesStatistic(ITable table, string fldName)
{
Dictionary<string, int> uniqueValuesDictionary = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
DataStatistics dataStatistics = new DataStatistics();
dataStatistics.Field = fldName;
dataStatistics.Cursor = table.Search(null, false);
IEnumerator uniqueValues = dataStatistics.UniqueValues;
while (uniqueValues.MoveNext())
{
object current = uniqueValues.Current;
uniqueValuesDictionary[current.ToString()] = 0;
}
foreach (string key in uniqueValuesDictionary.Keys.ToList())
{
IQueryFilter queryFilter = new QueryFilter();
queryFilter.WhereClause = string.Format("{0} = '{1}'", fldName, key);
uniqueValuesDictionary[key] = table.RowCount(queryFilter);
}
return uniqueValuesDictionary;
}