实施方法
主要采用C# Chart控件的使用总一文中的方式三:用类似chart1.Series[0].Points.DataBindXY(iXAxis,fTargetOT);中的DataBindXY(X,Y)来绑定数据。
首先获取固定的各类用地类型的面积,并返回数组
private int[] GetTypeOfLandUse()
{
int[] LandArea=new int[8];
string[] LandUse = new string[8] { "2000", "3000", "4000", "5000", "6000", "7000", "8000", "9000" };
string sqlfilter;
IFeatureClass pFeatureClass=currentLayer.FeatureClass;
int i = 0;
foreach(string landID in LandUse )
{
IFeatureCursor pFeatureCursor;
IQueryFilter pFilter = new QueryFilterClass();
sqlfilter = "FID_1=" + landID;
pFilter.WhereClause = sqlfilter ;
pFeatureCursor = pFeatureClass.Search(pFilter, false);
IFeature pFeature = pFeatureCursor.NextFeature();
double searchedArea = 0;
while (pFeature != null)
{
IArea area = pFeature.Shape as IArea;
searchedArea += (double)area.Area;
pFeature = pFeatureCursor.NextFeature();
}
LandArea[i]=Convert.ToInt32(searchedArea);
i+=1;
}
//返回各用地类型数组
return LandArea;
}
向chart中添加数据
private void AddDataToChart()
{
chart1.Series.Clear();
chart1.Titles.Add("土地利用类型面积统计");
//List<string[]> Xdata_LandUse = new List<string[]>();
string[] Landuse = new string[8]{ "2000", "3000", "4000", "5000", "6000", "7000", "8000", "9000" };
// Xdata_LandUse.Add (Landuse);
int[] LanduseID_area=GetTypeOfLandUse();
// List<int[]> Ydata_area = new List<int[]>();
//Ydata_area.Add(LanduseID_area);
chart1.Series.Add("土地利用");
chart1.Series[0].Points.DataBindXY(Landuse, LanduseID_area);
}
自己先忘了添加chart1.Series.Add("土地利用");这一句,老是报错索引超限,添加之后问题解决,展示一下效果:
7000无数据,样式设置都是默认的,后期再慢慢调整优化了。