爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3097|回复: 3

学计算机的现在要画图,怎么把数据库中的数据转成各种文件

[复制链接]

新浪微博达人勋

发表于 2015-11-4 10:17:58 | 显示全部楼层 |阅读模式

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

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

x
     资料站里是有很多工具,不过我需要每天自动生成图,这就需要我自己写一套代码,然后我看王老师的MeteoInfo很强大,这俩天一直在按照教程在学习,附上教程链接http://bbs.06climate.com/forum.php?mod=viewthread&tid=7232&extra=page%3D1,并表示对老师的感谢。   在教程第六讲理有关于将格点数据生成图层的例子,第七讲里有关于将站点数据生成各种图层的介绍
   格点数据例子中用到的是model.ctl和shp文件
   站点数据例子中用到的是12010615.syn 和SYNOP_Stations.csv和 shp文件,按照例子我已实现。


  我现在手里就一些shp文件和一个数据库,里面有站点的数据。
   
   1.我怎么把数据库中的数据转成.ctl格式的格点数据格式的文件,或者.syn和.csv的站点数据格式的文件呢?
   2.能转好以后是不是再对应好shp文件,就可以生成Contour(等值线)、Shaded(等值填充)、Grid_Fill(格点填充)、Grid_Point(格点点图层)这些图了



密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-4 11:17:31 | 显示全部楼层
什么格式不重要,重要的是构建出站点数据StationData类对象,可以直接从数据库中读出相应数据来构建,无需转为其它格式。有了StationData对象之后的事参考教程里的代码。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-4 15:00:36 | 显示全部楼层
MeteoInfo 发表于 2015-11-4 11:17
什么格式不重要,重要的是构建出站点数据StationData类对象,可以直接从数据库中读出相应数据来构建,无需 ...

不太懂啊。。怎么构建啊。。老师,有例子没?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-4 19:15:04 | 显示全部楼层
本帖最后由 MeteoInfo 于 2015-11-4 19:16 编辑
wagaw 发表于 2015-11-4 15:00
不太懂啊。。怎么构建啊。。老师,有例子没?

例子:        
  1. public StationData GetStationData(int timeIdx, int varIdx, int levelIdx)
  2.         {
  3.             StreamReader sr = new StreamReader(this.FileName, System.Text.Encoding.UTF8);
  4.             List<string[]> dataList = new List<string[]>();
  5.             sr.ReadLine();
  6.             string line = sr.ReadLine();
  7.             while (line != null)
  8.             {
  9.                 if (line == String.Empty)
  10.                 {
  11.                     line = sr.ReadLine();
  12.                     continue;
  13.                 }
  14.                 dataList.Add(line.Split(','));
  15.                 line = sr.ReadLine();
  16.             }
  17.             sr.Close();


  18.             StationData stationData = new StationData();
  19.             List<string> stations = new List<string>();
  20.             string stName;
  21.             int i;
  22.             double lon, lat;
  23.             double t;
  24.             t = 0;

  25.             string[] dataArray;
  26.             double[,] DiscreteData = new double[3, dataList.Count];
  27.             double minX, maxX, minY, maxY;
  28.             minX = 0;
  29.             maxX = 0;
  30.             minY = 0;
  31.             maxY = 0;            

  32.             //Get real variable index
  33.             int varIdx1 = FieldList.IndexOf(this.Variables[varIdx].Name);
  34.             String vstr;
  35.             for (i = 0; i < dataList.Count; i++)
  36.             {
  37.                 dataArray = dataList[i];
  38.                 stName = dataArray[0];
  39.                 lon = double.Parse(dataArray[1]);
  40.                 lat = double.Parse(dataArray[2]);
  41.                 vstr = dataArray[varIdx1];
  42.                 if (String.IsNullOrEmpty(vstr))
  43.                     t = stationData.MissingValue;
  44.                 else
  45.                     t = double.Parse(dataArray[varIdx1]);
  46.                 //if (lon < 0)
  47.                 //{
  48.                 //    lon += 360;
  49.                 //}
  50.                 //Initialize data
  51.                 DiscreteData[0, i] = lon;
  52.                 DiscreteData[1, i] = lat;
  53.                 DiscreteData[2, i] = t;
  54.                 stations.Add(stName);

  55.                 if (i == 0)
  56.                 {
  57.                     minX = lon;
  58.                     maxX = minX;
  59.                     minY = lat;
  60.                     maxY = minY;
  61.                 }
  62.                 else
  63.                 {
  64.                     if (minX > lon)
  65.                     {
  66.                         minX = lon;
  67.                     }
  68.                     else if (maxX < lon)
  69.                     {
  70.                         maxX = lon;
  71.                     }
  72.                     if (minY > lat)
  73.                     {
  74.                         minY = lat;
  75.                     }
  76.                     else if (maxY < lat)
  77.                     {
  78.                         maxY = lat;
  79.                     }
  80.                 }
  81.             }
  82.             Extent dataExtent = new Extent();
  83.             dataExtent.minX = minX;
  84.             dataExtent.maxX = maxX;
  85.             dataExtent.minY = minY;
  86.             dataExtent.maxY = maxY;

  87.             stationData.Data = DiscreteData;
  88.             stationData.DataExtent = dataExtent;
  89.             stationData.Stations = stations;

  90.             return stationData;
  91.         }
复制代码



密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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