| 
 
	积分2729贡献 精华在线时间 小时注册时间2015-10-7最后登录1970-1-1 
 | 
 
| 
背景:楼主想画这样的图,沿非平行于经纬线的任意直线(我已知道直线的起始点经纬度) 物理量随时间的变化图。如下所示,横坐标为经度和纬度,纵坐标为时间。楼主找了一份GS,可是对里面的有些算法实在是想不通,大家一起来看看解答一下!
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  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)
 ;
 尽管有注释,楼主还是有疑问:问题为红色标注。
 
 
 | 
 
  |