爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3538|回复: 6

[程序设计] 仰角拼接混合扫描平面问题

[复制链接]
发表于 2015-10-9 21:51:11 | 显示全部楼层 |阅读模式

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

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

x
读出各仰角层的反射率数据之后,需将其拼接成混合扫描平面,多少公里取第一层仰角,多少取第二层,依次类推凭借成混合平面。这个程序我尝试编了几次,总觉得我编写出的不是那么回事,求大神们给点指导
密码修改失败请联系微信:mofangbao
发表于 2015-10-9 21:59:01 | 显示全部楼层
翻一下《多普勒天气雷达与业务应用》那本书,在降到降水估计(QPE)的时候有提到,在没有地物遮挡的情况下,什么范围取哪个仰角
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-10-10 09:25:45 | 显示全部楼层
传说中的谁 发表于 2015-10-9 21:59
翻一下《多普勒天气雷达与业务应用》那本书,在降到降水估计(QPE)的时候有提到,在没有地物遮挡的情况下 ...

那书我看了,但是就是不知道如何编程序
密码修改失败请联系微信:mofangbao
发表于 2016-3-2 10:54:07 | 显示全部楼层
计算每个平面格点对应的仰角、方位角、库数,取对应值即可
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-3-3 09:35:07 | 显示全部楼层
luohui134389 发表于 2016-3-2 10:54
计算每个平面格点对应的仰角、方位角、库数,取对应值即可

感觉好复杂啊,有参考程序不?
密码修改失败请联系微信:mofangbao
发表于 2016-3-7 08:14:51 | 显示全部楼层
//获得强度Z在高度Height上的信息
        CrossPoint *crpoint[25];
        for(int i=0;i<25;i++)//可统计25层
        {
                crpoint[i] = new CrossPoint;
                memset(crpoint[i],0,sizeof(CrossPoint));
        }
        int iPointID=0;
        for(i=LayerNumber-1;i>=0;i--)
        {
                if(RawFilehead->ObservationInfo.LayerInfo[i].ZbinNumber!=0)
                {
                        int BinNumber = RawFilehead->ObservationInfo.LayerInfo[i].ZbinNumber;
                        float BinWidth = float(RawFilehead->ObservationInfo.LayerInfo[i].ZBinWidth/10000.0);//单位km
                        float Angle = float(RawFilehead->ObservationInfo.LayerInfo[i].SwpAngles/100.0);//单位度
                        float SinAngle = (float)sin(Angle*3.1415926/180);
                        for(int j=0;j<BinNumber;j++)
                        {
                                //经过地球曲率的计算  转换成km单位  //第一个格点有距离的
                                float RealHeight = float(RawFilehead->SiteInfo.Height/1000000.0+(float)((j+1)*BinWidth*SinAngle)+(float)((j+1)*BinWidth*(j+1)*BinWidth)/17008.0);
                                if(RealHeight>Height/1000.0)//
                                {
                                        crpoint[iPointID]->cLayer = i;
                                        crpoint[iPointID]->BinWidth = BinWidth;
                                        crpoint[iPointID]->BinNumber = BinNumber;
                                        crpoint[iPointID]->StartBin  = j-1;        //取前一点
                                        crpoint[iPointID]->HLength = float(BinWidth*j*cos(Angle*3.1415926/180));
                                        crpoint[iPointID]->SinAngle = (float)sin(Angle*3.1415926/180);
                                        crpoint[iPointID]->CosAngle = (float)cos(Angle*3.1415926/180);
                                        iPointID++;
                                        break;//已经统计到点了,退出j循环
                                }
                        }
                        if(j==BinNumber)//该层没有相交点,则以下的层都不会有相交点的,以该层的最后一点最为结束
                        {
                                        crpoint[iPointID]->cLayer = i;
                                        crpoint[iPointID]->BinWidth = BinWidth;
                                        crpoint[iPointID]->BinNumber = BinNumber;
                                        crpoint[iPointID]->StartBin  = BinNumber-1;        //
                                        crpoint[iPointID]->HLength = float(BinWidth*BinNumber*cos(Angle*3.1415926/180));
                                        crpoint[iPointID]->SinAngle = (float)sin(Angle*3.1415926/180);
                                        crpoint[iPointID]->CosAngle = (float)cos(Angle*3.1415926/180);
                                        iPointID++;
                                break;//退出i循环
                        }
                }
        }
        if(iPointID<1)//只有一个交点,不好插值,退出       
        {
                for(i=0;i<25;i++)//可统计25层
                {
                        delete crpoint[i];
                }
                return 0;
        }

其实你要做的就是CappI,上面的程序你可以参考
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-3-7 09:35:31 | 显示全部楼层
luohui134389 发表于 2016-3-7 08:14
//获得强度Z在高度Height上的信息
        CrossPoint *crpoint[25];
        for(int i=0;i=0;i--)

好的,非常感谢
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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