统计了一下历年的资料,洛阳地区的日平均气温最低的时间出现在1月10号前后,大约为–3度,最高的时间出现在6月25号前后,大约为30度。
可以用以下公式来计算:
6月25号之前: Τ = 17*sin(π(d-92)/165) + 14 (i)
6月25号之后: Τ = 17*cos(π(d-175)/200) + 14 (ii)
其中π代表圆周率 可取3.14 ,d代表一年中的第几天,如5月1号是一年中的第121天,代入公式 (i)可计算出日平均温度大概为23度。
以上分析的是一年中温度的平均升高或降低情况,虽然每年的5月1号日平均温度会不同,但平均来说是23度。
2010年10月26日星期二
2010年10月25日星期一
Micaps 资料复制工具
软件说明:
1. 此软件可按照日期(如2010年9月至10月)或者要素(如云图、地面图、高空图等)将Micaps资料复制到另一个文件夹,并且保持资料的目录结构不变,例如之前在high目录下的资料复制后依然在high目录下。
2. 左上方选择Micaps资料所在目录,右上方选择需要复制到的目录
3. 此软件无需安装,直接运行即可
4. 软件可跨平台,需要Linux下面的软件请联系我
软件截图

点此下载
2010年10月21日星期四
递归删除目录下的VC临时文件
从网上找来的bat命令:
将以上命令复制到文本文件中,重命名为clear.bat,放到需要清除的目录下。然后在命令行下运行即可。
大家可根据需要增加或删除命令。比如需要删除所有该目录及子目录下的exe文件,可增加一条语句del *.exe /q /s
其中del命令的作用是删除文件 /q 选项指定为安静模式,删除时不需要确认,/s 选项指定递归删除,删除该目录及所有子目录下的exe文件。
rem命令指定该行是注释行
rd命令作用为删除目录
@echo off
@echo SDK开发包瘦身批处理
del *.pch /q /s
del *.obj /q /s
del *.ilk /q /s
del *.exp /q /s
del *.pdb /q /s
del *.idb /q /s
del *.ncb /q /s
del *.opt /q /s
rem 删除浏览信息文件
del *.sbr /q /s
rem Build Log文件
rem del *.plg /q /s
rem del *.aps /q /s
rem 删除临时文件
rem del *.tmp /q /s
rem 删除项目中存在的超大cache文件
del *cache.dat /q /s
rd *debug* /q /s
rd *release* /q /s
@echo 瘦身完成,请使用windows查找方法删除debug和release目录!
@pause
将以上命令复制到文本文件中,重命名为clear.bat,放到需要清除的目录下。然后在命令行下运行即可。
大家可根据需要增加或删除命令。比如需要删除所有该目录及子目录下的exe文件,可增加一条语句del *.exe /q /s
其中del命令的作用是删除文件 /q 选项指定为安静模式,删除时不需要确认,/s 选项指定递归删除,删除该目录及所有子目录下的exe文件。
rem命令指定该行是注释行
rd命令作用为删除目录
2010年10月13日星期三
欧洲格点预报显示软件
软件说明:
1. 此软件可以图形和表格方式显示Micaps资料中的欧洲7天格点预报
2. 直接运行软件,编辑软件目录下的 .ini 文件配置EC资料所在的路径 如 file_path=w:/ecmwf/
3. 此软件无需安装,直接运行即可
4. 软件可跨平台,需要Linux下面的软件请联系我
软件截图:

点此下载 欧洲预报格点显示
使用wxWidgets时发现的一些bug及解决方案
Ubuntu中
wxDC类
bug 1. 使用SetLogicalOrigin时必须确保坐标轴为默认方向(SetAxisOrientation(true,false)),使用后可更改为需要的方向(SetAxisOrientation(true,true));
解决方案:查看wxGTK源代码文件dc.cpp可看到如下代码:
bug 2. 使用SetUserScale函数设置放大倍数时画笔(wxPen)的宽度随之放大,但在xp系统下画笔宽度不变。也就是说如果设置SetUserScale(1,1000),则画笔宽度可能变为1000像素,导致无法成功绘制图像。
解决方案:从源代码文件dc.cpp中我们可以看到SetUserScale函数的定义:
XP中
wxDateTime
bug 1. wxDateTime::Format 函数不支持中文字符的格式化。
解决方案:暂时可以使用wxString::Format函数替代。
wxDC类
bug 1. 使用SetLogicalOrigin时必须确保坐标轴为默认方向(SetAxisOrientation(true,false)),使用后可更改为需要的方向(SetAxisOrientation(true,true));
解决方案:查看wxGTK源代码文件dc.cpp可看到如下代码:
void wxDC::SetLogicalOrigin( wxCoord x, wxCoord y )
{
m_logicalOriginX = x * m_signX; // is this still correct ?
m_logicalOriginY = y * m_signY;
ComputeScaleAndOrigin();
}
作者也察觉到了这里可能有问题,标注了// is this still correct ?
将上面代码修改如下即可:
void wxDC::SetLogicalOrigin( wxCoord x, wxCoord y )
{
m_logicalOriginX = x ;
m_logicalOriginY = y ;
ComputeScaleAndOrigin();
}
bug 2. 使用SetUserScale函数设置放大倍数时画笔(wxPen)的宽度随之放大,但在xp系统下画笔宽度不变。也就是说如果设置SetUserScale(1,1000),则画笔宽度可能变为1000像素,导致无法成功绘制图像。
解决方案:从源代码文件dc.cpp中我们可以看到SetUserScale函数的定义:
void wxDC::SetUserScale( double x, double y )
{
// allow negative ? -> no
m_userScaleX = x;
m_userScaleY = y;
ComputeScaleAndOrigin();
}
在源代码文件dcclient.cpp中我们可以看到wxWindowDC::ComputeScaleAndOrigin()函数的定义:
void wxWindowDC::ComputeScaleAndOrigin()
{
const wxRealPoint origScale(m_scaleX, m_scaleY);
wxDC::ComputeScaleAndOrigin();
// if scale has changed call SetPen to recalulate the line width
if ( wxRealPoint(m_scaleX, m_scaleY) != origScale && m_pen.Ok() )
{
// this is a bit artificial, but we need to force wxDC to think the pen
// has changed
wxPen pen = m_pen;
m_pen = wxNullPen;
SetPen( pen );
}
}
进一步我们可以找到函数 wxWindowDC::SetPen 的定义
void wxWindowDC::SetPen( const wxPen &pen )
{
wxCHECK_RET( Ok(), wxT(“invalid window dc”) );
if (m_pen == pen) return;
m_pen = pen;
if (!m_pen.Ok()) return;
if (!m_window) return;
gint width = m_pen.GetWidth();
if (width <= 0)
{
// CMB: if width is non-zero scale it with the dc
width = 1;
}
else
{
// X doesn’t allow different width in x and y and so we take
// the average
double w = 0.5 +
( fabs((double) XLOG2DEVREL(width)) +
fabs((double) YLOG2DEVREL(width)) ) / 2.0;
width = (int)w; //注意,这个宽度是最终绘制的宽度
if ( !width )
{
// width can’t be 0 or an internal GTK error occurs inside
// gdk_gc_set_dashes() below
width = 1;
}
}
//…… 中间的代码省略
gdk_gc_set_line_attributes( m_penGC, width, lineStyle, capStyle, joinStyle );
m_pen.GetColour().CalcPixel( m_cmap );
gdk_gc_set_foreground( m_penGC, m_pen.GetColour().GetColor() );
}
综合以上代码分析我们可以看到:当我们调用函数SetUserScale 放大绘制的图形时,wxGTK同时放大了绘制线条的宽度。
解决办法是删除 width = (int)w; 这行代码。
修改源代码后,重新编译wxGTK即可。
XP中
wxDateTime
bug 1. wxDateTime::Format 函数不支持中文字符的格式化。
解决方案:暂时可以使用wxString::Format函数替代。
订阅:
博文 (Atom)