- 积分
- 3628
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2018-9-30 11:04:30
|
显示全部楼层
Part3.车速水平分布西北和西南路段连续红色部分车速较快,其他部分都是走走停停
代码:
;该部分没变:
x=gps(0)
t=x.time
lat=x.lat
lon=x.lon2
;间隔14个点算个速度
nn=14
n=n_elements(lat)
book=[-99,-99,-99]
for i=0,n-nn-1 do begin
d=map_2points(lon,lat,lon[i+nn],lat[i+nn],/meters)
time=t[i+nn]-t
caldat,time,month,day,year,hour,minute,sec
delta_time=round(sec)
book=[[book],[delta_time,d,d/delta_time]]
endfor
book=book[*,1:-1]
car_spd=transpose(book[2,*])
;以下为新加代码
;匹配颜色,不过自己做的颜色序列IDL不会自动生成色条,可能还要自己做个色条
;不过我是用33号色条,可以直接拷过来,再自己加数字
vert_colors=[-99,-99,-99]
minv=min(car_spd)
maxv=max(car_spd)
for j=0,n-nn-2 do begin
color=rgb_table_33(car_spd[j],minV,maxv)
vert_colors=[[vert_colors],[color]]
endfor
vert_colors=vert_colors[*,1:-1]
fig=plot3d(lon[0:-2],lat[0:-2],car_spd*3.6,thick=5,vert_colors=vert_colors)
fig.Rotate, /RESET
fig.Rotate, 0, /ZAXIS
fig.Rotate, 0, /XAXIS
fig.Rotate, 0, /YAXIS
endfor;出图结束
;色条辅助程序,该程序之前没有处理x超过上下限的情况,现在按两端颜色匹配
function rgb_table_33,x,minV,maxV
MINV=MINV+0.0
MAXV=MAXV+0.0
L=(MAXV-MINV)/8.0
;如果x超过上下限的情况则按最边沿颜色配色
if(x lt minv)then begin
return,[0,0,255]
endif
if(x gt maxv)then begin
return,[255,0,0]
endif
IF(X GE MINV AND X LT MINV+L)THEN BEGIN
R=0.0
G=0.0
B=127.5/L*X+127.5
ENDIF
IF(X GE MINV+L AND X LT MINV+3*L)THEN BEGIN
R=0.0
G=127.5/L*(X-L)
B=255.0
ENDIF
IF(X GE MINV+3*L AND X LT MINV+5*L)THEN BEGIN
R=127.5/L*(X-3*L)
G=255.0
B=-127.5/L*(X-5*L)
ENDIF
IF(X GE MINV+5*L AND X LT MINV+7*L)THEN BEGIN
R=255.0
G=-127.5/L*(X-7*L)
B=0.0
ENDIF
IF(X GE MINV+7*L AND X LE MAXV)THEN BEGIN
R=-127.5/L*(X-9*L)
G=0.0
B=0.0
ENDIF
RETURN,[R,G,B]
end
|
|