爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4223|回复: 2

用wContour绘制的色斑图,色斑跟站点数值不符的问题

[复制链接]
发表于 2014-5-28 18:50:43 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 julywolf 于 2014-5-28 19:14 编辑

SEVP_HUBEI_PSLWIF_IFLIFE_IZW_201405281837290.png
SEVP_HUBEI_PSLWIF_IFLIFE_IZW_201405281837691.png


王老师,做了一个小的系统,里面有一部分生成色斑图的功能是利用wContour 1.4版本实现的,发现生成色斑图之后,站点数值与色斑绘制的结果不符合,调试了一天没找到问题所在,麻烦帮忙看看,附上部分代码。
  1. private void GetData()
  2.         {
  3.             List<double[]> DiscreteData = new List<double[]>();
  4.             double lon = 0;
  5.             double lat = 0;
  6.             double index = 0;
  7.             int i = 0;
  8.             stationName=new string[dt.Rows.Count];
  9.             for (i = 0; i < dt.Rows.Count; i++)
  10.             {
  11.                 string get = "select CountyName,Longitude,Latitude from StationInfo  where StationNo='" + dt.Rows[i][0].ToString() + "'";
  12.                 sql s = new sql(Compute.conDatabase);
  13.                 DataTable jwd = s.ExeSQLdt(get);
  14.                 stationName[i]=jwd.Rows[0][0].ToString();
  15.                 lon = Convert.ToDouble(jwd.Rows[0][1]);
  16.                 lat = Convert.ToDouble(jwd.Rows[0][2]);
  17.                 index = Convert.ToDouble(dt.Rows[i][1].ToString());
  18.                 DiscreteData.Add(new double[] { lon, lat, index });
  19.             }
  20.             m_DiscreteData = new double[3, DiscreteData.Count];
  21.             for (i = 0; i < DiscreteData.Count; i++)
  22.             {

  23.                 m_DiscreteData[0, i] = DiscreteData[i][0];
  24.                 m_DiscreteData[1, i] = DiscreteData[i][1];
  25.                 m_DiscreteData[2, i] = DiscreteData[i][2];
  26.             }            
  27.         }</double[]></double[]>
复制代码
  1. private void TracingContourLines(string index)
  2.         {
  3. //分层
  4.             int nc = 0;
  5.             double[] ind = new double[dt.Rows.Count];
  6.             for (int i = 0; i < dt.Rows.Count; i++)
  7.             {
  8.                 ind[i] = Convert.ToDouble(dt.Rows[i][1].ToString());
  9.             }
  10.             //Array.Sort(ind);
  11.             //利用反射动态获取对应指数内指数分级的值
  12.             //index的命名空间的全名可以通过以下方法获得System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace;
  13.             string sindex = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + index;
  14.             Type tp = Type.GetType(sindex);  //需要带上index名字空间
  15.             FieldInfo f = tp.GetField("spaceInfo");
  16.             m_CValues = (double[])f.GetValue(null);
  17.             nc = m_CValues.Length;
  18.             //颜色
  19.             m_Colors = CreateColors(m_StartColor, m_EndColor, nc + 1);
  20.             double XDelt = 0;
  21.             double YDelt = 0;
  22.             XDelt = m_X[1] - m_X[0];
  23.             YDelt = m_Y[1] - m_Y[0];
  24.             m_ContourLines = Contour.CreateContourLines(m_GridData, m_X, m_Y, nc + 1, m_CValues, XDelt, YDelt);
  25. }
复制代码




密码修改失败请联系微信:mofangbao
发表于 2014-5-28 21:22:27 | 显示全部楼层
这个主要调插值部分的代码吧
密码修改失败请联系微信:mofangbao
发表于 2014-6-2 01:29:05 | 显示全部楼层
这个图做的不错啊
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表