| 
 
	积分3625贡献 精华在线时间 小时注册时间2014-10-21最后登录1970-1-1 
 | 
 
| 
附件中给出了3个数据文件,lat.txt是一列纬度值,lon.txt是一列经度值,ext是一列消光值;
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  3列数据一一对应,构成了不同经纬度点的消光分布;
 所以,可以画出消光的等值线图。
 但操作中,会出现绘图失败的问题。
 根据我的实际操作,推测失败原因有2:
 失败原因之一是,x、y、z被认为是1列n行的二维数组时会失败,这个问题只需用transpose()函数进行转置,x等就变成了一个向量。
 失败原因之二是,x,y所代表的位置有重复的,在我的操作中,一两个位置重复也能画,但重复的多了就出问题,这时就需要把每个位置重复的所有ext进行平均,这个帖子就是给出对这样的3组数据的处理方法,可能我的算法比较笨,或许有更简单有效的工具,但基于目前紧张的工作进度,暂时用着。
 附件中的.pro文件给出了对数据的处理方法,最后画出了等值线图。
 
   写完这个案例,我做了一个通用的函数:
 lat_lon_ext(lat,lon,ext)
 返回值是没有重复位置的3列数组
 代码如下:
 function lat_lon_ext,lat,lon,ext
 n=n_elements(ext)
 book=[-123,-123,-123,-123]
 for i=0,n-1 do begin
 p=where(lon eq lon and lat eq lat,count)
 book=[[book],[lat,lon,count,mean(ext[p])]]
 endfor
 book=book[*,1:-1]
 sizebook=size(book)
 book2=[-123,-123,-123,-123]
 for i=0,sizebook[2]-1 do begin
 p=where(book2[0,*] eq book[0,i] and book2[1,*] eq book[1,i],count)
 if(count eq 0)then begin
 book2=[[book2],[book[*,i]]]
 endif
 if(count eq 1)then begin
 continue
 endif
 if(count gt 1 or count lt 0)then begin
 warning=DIALOG_MESSAGE('wrong!')
 stop
 endif
 endfor
 book2=book2[*,1:-1]
 return,[book2[0:1,*],book2[3,*]]
 end
 
 | 
 |