Esempio n. 1
0
 /// <summary>
 ///  平均值统计(分行政区域或其他):
 ///  =行政区划内各像元值相加/行政区划像素个数
 /// </summary>
 /// <param name="rasterFilename"></param>
 /// <param name="templateName"></param>
 /// <param name="func"></param>
 /// <param name="progressTracker"></param>
 /// <returns>
 /// SortedDictionary<string, double[3]>
 /// key:各矢量名字
 /// value:double[0],满足条件的像元和,double[1],满足条件的像元个数,double[2],当前矢量面的像元个数。
 /// </returns>
 public static SortedDictionary <string, double[]> SumAndCountByVector <T>(string rasterFile, string templateName, Func <T, bool> func, Action <int, string> progressTracker)
 {
     if (templateName.Contains("vector"))
     {
         string[] split           = templateName.Split(':');
         string   key             = split[0];
         string   shpFilename     = split[1];
         string   shpFieldName    = split[2];
         RasterStatByVector <T> v = new RasterStatByVector <T>(progressTracker);
         return(v.SumAndCountByVector(rasterFile, shpFilename, shpFieldName, func));
     }
     else
     {
         throw new NotSupportedException("暂未实现除基于矢量面的分段面积百分比统计");
     }
 }