- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
附件中给出了3个数据文件,lat.txt是一列纬度值,lon.txt是一列经度值,ext是一列消光值;
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
|
|