- 积分
- 2729
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-10-7
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
背景:楼主想画这样的图,沿非平行于经纬线的任意直线(我已知道直线的起始点经纬度) 物理量随时间的变化图。如下所示,横坐标为经度和纬度,纵坐标为时间。楼主找了一份GS,可是对里面的有些算法实在是想不通,大家一起来看看解答一下!
GS如下:
'open e:\osci\Q1\jijie.ctl'
'set lon 60 140'
'set lat 0 50' 问题:这里的经纬度是我直线起始点的经纬度吗?
'set t 60'
*'define windspd=sqrt(u*u+v*v)'
'd ji'
******以上是为了更好的确定经纬位置以及缩放比例********
say 'click a'
'q bpos'
x0=subwrd(result,3)
y0=subwrd(result,4)
*****以上是鼠标点击窗口确定剖线起始位置a(x0,y0)*******
say 'click b'
'q bpos'
x1=subwrd(result,3)
y1=subwrd(result,4)
******以上是鼠标点击窗口确定剖线终点位置b(x1,y1)******
'draw line 'x0' 'y0' 'x1' 'y1'' *在图形窗口中画出剖线*
'q xy2w 'x0' 'y0'' *将页面坐标(x0,y0)转换为对应的经纬坐标(lon0,lat0)*
lon0=subwrd(result,3)
lat0=subwrd(result,6)
'q xy2w 'x1' 'y1''*将页面坐标(x1,y1)转换为对应的经纬坐标(lon1,lat1)*
lon1=subwrd(result,3)
lat1=subwrd(result,6)
lx=(lon1-lon0)*112 *112是单位经度对应的实际距离(112km)*
ly=(lat1-lat0)*223 *223是单位纬度对应的实际距离(223km)* 重点问题:简单算一下 一个经度对应的实际距离也应该是周长除以360个经度=111KM啊?为什么一个纬度对应的实际距离成了223呢?不应该也是111吗?况且这个距离随纬度的不同而不同,高纬地区一个经度对应的实际距离只有赤道上的一半。这里直线的距离求法太粗糙了吧?
'd sqrt('lx'*'lx'+'ly'*'ly')'
l=subwrd(result,4) *l是a,b两点的实际距离*
*decimal=l/55.8
decimal=l/50 *50是直线上相邻各点间的距离(水平分辨率)给出的值略大于模式水平分辨率为宜* 问题:为什么是除以50KM呢?和我资料的分辨率有关吗?2.5分辨率的也能除以50吗?
decimal_part=substr(decimal,3,20)
n=decimal-decimal_part *这个确定decimal成为一个正数****
inclat=(lat1-lat0)/n *inclat是相邻各等距点见的纬度增量*
inclon=(lon1-lon0)/n
****以下使计算a,b上个等分点所在经纬度******
i=1
while(i<=n)
lon.i=lon0+(i-1)*inclon
lat.i=lat0+(i-1)*inclat
i=i+1
endwhile
'set fwrite e:\osci\Q1\poumian.grd'
'set gxout fwrite'
nt=1
while(nt<=153)
i=1
'set t 'nt''
while(i<=n)
'set lon 'lon.i''
'set lat 'lat.i''
'd ji'
i=i+1
endwhile
nt=nt+1
endwhile
'disable fwrite'
fname = 'e:\osci\Q1\poumian.ctl'
rc=write(fname,'dset e:\osci\Q1\poumian.grd')
rc=write(fname,'undef -999.000')
rc=write(fname,'title Time Mask')
rc=write(fname,'xdef 'n' linear 'lon.1' 'lon.3' 'lon.5' 'lon.7' 'lon.9' 'lon.13' 'lon.16' 2.5')
rc=write(fname,'xdef 'n' linear 'lat.1' 'lat.3' 'lat.5' 'lat.7' 'lat.9' 'lat.13' 'lat.16' 2.5')
rc=write(fname,'ydef 1 linear 0 2.5') 问题:第一次接触XDEF既表示LAT又表示LON,既然把直线等分成了n份,那后面 'lon.1' 'lon.3' 'lon.5' 'lon.7' 'lon.9' 'lon.13' 'lon.16' 2.5'是什么意思,2.5表示什么?为什么不把所有等分点的lat lon都列出来?只列出第1 3 5 7 9 13 16呢?
rc=write(fname,'zdef 1 levels 1000')
rc=write(fname,'tdef 153 linear 01may2007 1dy')
rc=write(fname,'vars 1')
rc=write(fname,'pou 0 99 Time Mask')
rc=write(fname,'endvars')
rc=close(fname)
;
尽管有注释,楼主还是有疑问:问题为红色标注。
|
-
|