999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VC++的風玫瑰圖繪制程序設計與實現

2015-01-28 08:14:12況源周小明梁富強
電子設計工程 2015年17期
關鍵詞:風速程序

況源,周小明,梁富強

(四川省宜賓市氣象局 四川 宜賓 644000)

風玫瑰圖能夠直觀地反應某一地區風的狀況,故被廣泛地應用到城市規劃、環境評價、風能資源評估等工作中[1-3]。風玫瑰圖的繪制工作通常要先對基礎風向、風速數據進行統計,計算出16個方位的風頻、平均風速,再借助CAD、Matlab等軟件繪圖,過程工作量大,耗時較長,難度高,出錯率高。所以,編寫一款風玫瑰圖繪制程序,具有工程實際意義。

1 風玫瑰圖

風玫瑰圖是指在極坐標底圖上點繪出的某一地區在某一時段內各風向出現的頻率或各風向的平均風速的統計圖。前者為“風向玫瑰圖”,后者為“風速玫瑰圖”。因圖形似玫瑰花朵故名[4]。風向是風吹來的方向,風向一共分為16個方位,以北在起點,每隔22.5°確定一個方向,分別為北(N)、東北偏北 (NNE)、 東 北 (NE)、 東 北 偏 東 (ENE)、 東 (E)、 東 南 偏 東(ESE)、東南(SE)、東南偏南(SSE)、南(S)、西南偏南(SSW)、西南(SW)、西南偏西(WSW)、西(W)、西北偏西(WNW)、西北(NW)、西北偏北(NNW)。風速是指空氣在單位時間內的流過的距離,單位一般為m/s[5]。

2 總體設計

程序主要功能有:實現對基礎數據的excel方式導入,對基礎數據自動統計,風玫瑰圖繪制,曲線調整,自定義顏色填充和風玫瑰圖導出等功能。程序功能設計圖如圖1所示。

圖1 程序功能設計圖Fig.1 Program function design

3 程序主要功能的實現

3.1 基礎數據導入與處理

程序通過導入excel表格的方式加載基礎數據,程序在加載數據時,從約定的有效數據起始位置(3行2列)開始遍歷數據表,將表中風向、對應風速分別保存到數組pfdata、pvdata中,且風向風速的對應關系要保持不變。主要代碼如下[6]

void CMainFrame::InitExcel(){

/*此處略去Excel服務器和獲取數據Worksheet頁(wht)代碼*/

/*加載數據*/

Range range, usedRange;

usedRange.AttachDispatch(wht.GetUsedRange());

range.AttachDispatch(usedRange.GetRows());

long iRowNum=range.GetCount(); //獲 取 已 經 使 用的行數

range.AttachDispatch(usedRange.GetColumns());long iColNum=range.GetCount();//獲取已經使用的列數CString*pfdata=new CString[(iRowNum-2)*(iColNum-1)/2]; //用于加載風向數據

float*pvdata=new float[(iRowNum-2)*(iColNum-1)/2];//用于加載風速數據

for(intm=3; m<=iRowNum; m++){

for (intn=2; n<=iColNum; n++){//遍歷表中風向、風速數據

range.AttachDispatch(wht.GetCells());

range.AttachDispatch (range.GetItem (COleVariant((long)m),COleVariant((long)n)).pdispVal);

COleVariant vResult=range.GetValue2();

if(vResult.vt==VT_BSTR) {//字 符 串 則 為風向pfdata [((m-3)* (iColNum-1) +n-2)/2]=vResult.bstrVal;}

if(vResult.vt==VT_R8) {//數字則為風速

pvdata[((m-3)*(iColNum-1)+n-3)/2]= (float)vResult.dblVal;}}

}

/*此處略去退出Excel服務器代碼*/

}

數據加載完后,遍歷數組pfdata數組統計出風向再各方位出現的次數,保存在fnum數組中;同時將各方位對應的風速累加到vnum數組中,主要代碼如下。

/*fnum為存放風向在各方位出現的次數的數組,vnum為存放對應風速的累計值的數組,數組元素對應各個方位,依 次 為 N,NNE,NE,ENE,E,ESE,SE,SSE,S,SSW,SW,WSW,W,WNW,NW,NNW,C*/

int fnum[17]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0};

float vnum[17]= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0};

for(int i=0; i<(iRowNum-2)*(iColNum-1)/2; i++){

if(pfdata[i]=="N") {

fnum[0]++;

vnum[0]+=pvdata[i];}

/*此處略去處理其他方位的代碼*/

}

最后用各方位出現次數除以總次數得到該方位的風頻(以百分率表示),用各方位風速值之和除以該方位出現次數得到平均風速。

3.2 繪制風玫瑰圖

風玫瑰圖分為風向玫瑰圖和風速玫瑰圖,繪制風玫瑰圖可以分別繪制在兩張玫瑰圖中,亦可以疊加在同一張風玫瑰圖里面。下面以繪制風向玫瑰圖實現過程為例。風向玫瑰圖的繪制過程,首先要將風按16個方位進行統計,計算出各方位的風向頻率,其計算公式為:gn式中:gn為 n方位的風向頻率,fn為所取資料年代內風在n方位出現的次數,n表示方位,共16個方位。c為所取資料年代內靜風的次數[2]。然后計算為坐標點,連接所有點后,即為基本的風向玫瑰圖。

3.2.1 計算各方位風頻的坐標

風頻在極坐標系上的坐標計算方法如圖2所示,若點A為NE方位在極坐標上的描點,OA長度為風向在NE方位的風頻,角α值如表1所示[8](在 VC++中使用弧度作計算),這樣就能夠算出點 A的坐標(OA×cosα,OA×sinα)。

圖2 風頻在極坐標系上的坐標計算方法Fig.2 Coordinates calculationmethods ofwind frequency on the polar coordinates

此時得到的極坐標還不能直接用于繪圖,因為在Windows應用程序中,繪圖使用GDI坐標系統,在GDI坐標系統中原點(0,0)位于左上角,水平軸的正方形向右,垂直軸的正方向向下[7],所以還需要作處理。處理方法是根據繪圖區域確定 O 點在 GDI坐標系統的坐標 O′(XO′,YO′)(可以取中心點坐標),與已計算出的A點在極坐標系上坐標A(XA,YA)作計算,得到A點在GDI坐標系統的新坐標A′,計算公式為:A′(XA′,YA′)=(XO′+XA,YO′-YA)。 另外,因風玫瑰圖風格多樣,有的將最里同心圓視為原點(0,0),此情況還需把坐標作進一步處理。同理,計算出其它方位點的坐標,保存至CPoint類型的數組fpt中。

表1 各方位在極坐標上的角度和弧度值Tab.1 The parties on the polar angle and radian value

3.2.2 繪制風向玫瑰圖

計算出各方位風頻坐標后,用直線連接16個坐標點后,但通常還需要繪制表示風頻大小的同心圓[9],繪制表示各方位的放射直線,標注方位符號,在中心位置標注靜風頻率(如標注C=19.2,表示靜風頻率為19.2%),注明說明性文本,對曲線填充顏色等。重要代碼如下[10]。

/*連接坐標點*/

CPen pen(PS_SOLID, 2, pMain->m_colorf);

dc.SelectObject(pen);

for(int j=0; j<16; j++){

dc.MoveTo(fpt[j%16]);

dc.LineTo(fpt[(j+1)%16]);}

/*填充曲線*/

CBrush brhf(pMain->m_colorf);

dc.BeginPath();

dc.MoveTo(fpt[0]);

for(int i=0; i<16; i++){

dc.LineTo(fpt[(i+1)%16]);}

dc.EndPath();

rgnf.CreateFromPath(&dc);

dc.FillRgn(&rgnf, &brhf);

4 程序驗證

4.1 準備基礎數據

基礎數據的excel數據表可支持一種或多種格式,本程序支持的其中一種比較典型的格式如表2所示,驗證所用數據為XX縣2010年1月逐日定時風向風速數據。

表2 原始數據格式Tab.2 The form at of the original data

4.2 程序繪制結果

將基本數據導入成功后,自動在程序界面左邊顯示計算出的各方位風頻和平均風速的數值。點擊繪圖功能按鈕可在程序主界面繪制出風玫瑰圖。如圖3所示。

圖3 繪制結果Fig.3 The results of the draw

5 結 論

程序基于VC++實現了對風要素基礎數據的導入、自動統計和繪制風玫瑰圖。運用到實際工作中,有效地提高了工作效率;同時共享到網絡,受到使用者一致好評。但程序也存在一些不足,如數據導入方式和風玫瑰圖風格均較單一,需在今后作改進。

[1]邢婷,鄭有飛,朱勇,等.云南風能資源及其開發利用研究進展[J].氣象與環境科學,2013,36(4):55-61.XING Ting,ZHENG You-fei,ZHU Yong,et al.Wind energy resources and its exploitation and utilization of research progress in yunnan[J].Meteorology and Environmental Science,2013,36(4):55-61.

[2]王新生.淺談風玫瑰圖在城市規劃中的應用[J].武測科技,1994(3):35-38.WANG Xin-sheng.Introduction to the wind rose in the application of the urban planning[J].Wuhan Measurement Technology,1994(3):35-38.

[3]霍煥.風玫瑰圖在大氣污染評價中的應用[J].環境保護,1983(5):17-19.HUO Huan.The wind rose in the application of atmospheric pollution evaluation[J].Environmental Protection,1983(5) :17-19.

[4]佚名.風玫瑰圖[J].吉林交通科技,1995(3):51-52.Anonymous.Thewind rose[J].Jilin Traffic Science and Technology,1995(3):51-52.

[5]曹麗娟,周玲,陳艷麗,等.風玫瑰圖的研究與程序自動成圖設計[J].計算機與現代化,2013(2):134-137,146.CAO Li-juan,ZHOU Ling,CHEN Yan-li,et al.The wind rose the research and application of automatic mapping design[J].Computer&Modern,2013(2):134-137,146.

[6]郝建,張紅瑞,呂延崗.VC++和Excel對象接口的研究與應用[J].石家莊鐵道學院學報:自然科學版,2009,22(4):75-78,81.HAO Jian,ZHANG Hong-rui,LV Yan-gang.Vc++and the research and application of Excel object interface[J].Shijiazhuang Railway Institute:Natural Science Edition,2009,22(4):75-78,81.

[7]陳夕松,邵祥兵.基于Windows GDI的圖形編程[J].微計算機信息,1998(5):50-52.CHEN Xi-song,SHAO Xiang-bing.Based on the Windows GDI graphics programming[J].Microcomputer Information,1998(5):50-52.

[8]李忠.為什么要使用弧度制[J].數學通報,2009,48(11):1-3,7.LIZhong.Why use radian system[J].Mathematics Bulletin,2009,48(11):1-3,7.

[9]王建莊,余秀娟,譚光洪,等.風向玫瑰圖的精確繪制[J].廣東氣象,2010,32(5):48-49.WANG Jian-zhuang,YU Xiu-juan,TAN Guang-hong,et al.The wind rose diagram drawn exactly [J].Guangdong Meteorological,2010,32(5):48-49.

[10]劉銳寧,梁水,李偉明.Visual C++開發實戰1200例[M].北京:清華大學出版社,2013.

猜你喜歡
風速程序
基于Kmeans-VMD-LSTM的短期風速預測
基于最優TS評分和頻率匹配的江蘇近海風速訂正
海洋通報(2020年5期)2021-01-14 09:26:54
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于GARCH的短時風速預測方法
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
考慮風切和塔影效應的風力機風速模型
電測與儀表(2015年8期)2015-04-09 11:50:06
GE在中國發布2.3-116低風速智能風機
主站蜘蛛池模板: 丁香婷婷久久| 国产成人啪视频一区二区三区| 欧美国产另类| 日本久久久久久免费网络| 国产美女无遮挡免费视频网站 | 精品久久高清| 久久精品aⅴ无码中文字幕| 亚洲av无码牛牛影视在线二区| 久久免费视频播放| 国产又粗又猛又爽| 亚洲欧美另类久久久精品播放的| 欧美天天干| 亚洲成网777777国产精品| 亚洲日韩图片专区第1页| 欧美色99| 国内毛片视频| 亚洲综合精品香蕉久久网| 欧美区一区| 欧美中文字幕在线播放| 成人免费午间影院在线观看| 亚洲福利片无码最新在线播放| 尤物亚洲最大AV无码网站| 亚洲床戏一区| 精品伊人久久久久7777人| 日韩精品毛片人妻AV不卡| 婷婷亚洲视频| 国产成人精品在线| 91精品国产一区自在线拍| 精品99在线观看| 欧美日韩亚洲综合在线观看| 免费播放毛片| 9丨情侣偷在线精品国产| 国内熟女少妇一线天| 青青草原国产| 中文字幕永久在线观看| 国产特级毛片aaaaaaa高清| 日韩无码真实干出血视频| 22sihu国产精品视频影视资讯| 四虎成人精品| 97青草最新免费精品视频| 99视频国产精品| 国产成人狂喷潮在线观看2345| 国产成人高清亚洲一区久久| 日韩大片免费观看视频播放| 久久女人网| 91精品国产情侣高潮露脸| 欧美一区日韩一区中文字幕页| 国产精品性| 亚洲免费三区| AV无码国产在线看岛国岛| 欧美怡红院视频一区二区三区| 欧美日本激情| 54pao国产成人免费视频| 日韩美女福利视频| 亚洲欧美成人| 青草91视频免费观看| av免费在线观看美女叉开腿| 日韩欧美在线观看| 最新国产精品鲁鲁免费视频| 日本福利视频网站| 亚洲天天更新| 亚洲中文在线看视频一区| 国产在线高清一级毛片| av在线手机播放| 无码电影在线观看| 国产亚洲男人的天堂在线观看| 亚洲精品麻豆| 久久亚洲精少妇毛片午夜无码| 久久无码av三级| 伊人中文网| 国产精品综合久久久| 成人毛片在线播放| 国产尤物jk自慰制服喷水| 国产日韩欧美中文| 国产经典在线观看一区| 亚洲成人动漫在线观看| 露脸国产精品自产在线播| 国产成人久久综合777777麻豆| 在线亚洲精品自拍| 一级成人a毛片免费播放| 亚洲成a人在线播放www| 中文字幕在线一区二区在线|