本文我们将介绍描述研究区的另一个特征:研究区域含水层的相对流速。本例使用 GRIDDATA 和 CONTOUR 生成基础地形图,并在其上绘制含水层流速的 矢量图。
将地形数据网格化
使用文件 " TankDataTerrain.csv "中的数据(可参阅 "对研究区域和环境进行建模"一文),绘制地形等高线图,作为流向矢量的底图。
首先读入基础数据。数据位于 IDL 安装目录下的(examples/data)目录中的 TankDataTerrain.csv 文件中。该文件包含储罐或储井点的地表地形数据,以 X、Y、Z 坐标表示(单位均为米)。该文件的第四列数据包含下层含水层的海拔高度。
在本例中,我们使用ASCII_TEMPLATE创建一个模板,需指定数据从第二行开始,并在第3步中为FIELD1~4设置属性名称为X、Y、Z和AQ。然后使用READ_ASCII读入数据。
; 创建基本模板并手动指定 X、Y、Z和 AQ 作为变量名。
; 确保数据从第 2 行开始
; (第 1 行为列标题)。
myTemplate = ASCII_TEMPLATE(FILEPATH('TankDataTerrain.csv', $
SUBDIRECTORY=['examples', 'data']))
site = READ_ASCII(FILEPATH('TankDataTerrain.csv', $
SUBDIRECTORY=['examples', 'data']),TEMPLATE=myTemplate)
; 使用克里金法对数据进行网格化
; (将维度设置为 1000以符合研究区域的大小)。
; 如果愿意,可以选择其他网格方法。
grid = GRIDDATA(site.X, site.Y, site.Z, $
DIMENSION=1000, METHOD="Kriging")
创建基础等高线图
接下来绘制等高线底图。
; 创建一个颜色表变量。使用REVERSE关键字
; 使用 #74号颜色表作为 COLORTABLE 函数的关键字
; 反转颜色,使用较深的颜色在地形较低的地区。
myCT = COLORTABLE(74, /REVERSE)
; 设置索引变量来保存轮廓级别。
; 从网格数据创建等高线图。
index = [420,430,440,450,460,470,480,490,500,510, $
520,530,540,550,560,570,580]
myContour = CONTOUR(grid, RGB_TABLE=myCT, $
C_VALUE=index, ASPECT_RATIO=.75, /FILL, $
TITLE="储井位置区域地形", $
XTITLE="Meters (x10)", YTITLE="Meters (x10)" ,$
font_name = 'Microsoft Yahei')
myContour2 = CONTOUR(grid, COLOR='black', $
C_VALUE=index, ASPECT_RATIO=.75, /OVERPLOT)
; 更改标题的字体大小。
myContour.TITLE.FONT_SIZE = 14
; 设置储井位置的变量。
; 井位置以同一坐标给出
; 与初始地形的 (x, y) 坐标系相同。
xLoc = [66,276,566,471,484]
yLoc = [210,221,146,483,313]
zLoc = [490,483,470,480,475]
i_tritium = [7, 9, 0, 5, 4]
labels = ['A-401','A-402','A-403','A-404','A-405']
; 绘制氚的相对初始浓度
; pCi/L x 10e6 使用 BUBBLEPLOT 函数。
tritium = BUBBLEPLOT(xLoc, yLoc, MAGNITUDE=i_tritium, $
EXPONENT=0.75, /OVERPLOT, LABELS=labels,$
LABEL_FONT_SIZE=8, LABEL_ALIGNMENT=0.0, $
COLOR='chocolate', LABEL_POSITION='right')
; 使用 SCATTERPLOT 绘制每个气泡的中心点。
myPlot = SCATTERPLOT(xLoc, yLoc, /OVERPLOT, SYMBOL='*', $
SYM_SIZE=1, SYM_FILLED=1, SYM_THICK=2, SYM_FILL_COLOR='black')
; 在图的右下角添加注释
; 使用数据坐标。
areaText = TEXT(600, 50, TARGET=myPlot, $
'*气泡大小与初始氚浓度成正比。', $
/DATA, COLOR='black', FONT_SIZE=8, FONT_STYLE='italic' , $
font_name = 'Microsoft Yahei')
读取流量数据并将其网格化
现在我们已经完成了等高线底图,接下来读取含水层流量数据并在当前窗口中创建流向矢量图。
注:河流的流速要比含水层的流速大几个数量级。因此,数据集中只包括河流流量的方向数据。
; 创建模板并手动指定U、V、AX 和 AY作为变量名。
; 确保数据从第 2 行开始
; (第 1 行为列标题)。
myTemplateAQ = ASCII_TEMPLATE(FILEPATH('GWFlowRates.csv', $
SUBDIRECTORY=['examples', 'data']))
; 读入数据。
gwFlow = READ_ASCII(FILEPATH('GWFlowRates.csv', $
SUBDIRECTORY=['examples', 'data']), TEMPLATE=myTemplateAQ)
; 在当前 CONTOUR 图形上创建 VECTOR 图形。
; 单独的 RGB_TABLE,然后隐藏坐标轴。
; 注意必须将 AUTO_COLOR 设置为 1,这样矢量图才会根据 RGB_TABLE 指定颜色。
myVectors = VECTOR(gwFlow.U, gwFlow.V, gwFlow.AX, gwFlow.AY, $
XRANGE=[0,9], YRANGE=[0,10], rgb_table = 34, /CURRENT, $
AUTO_COLOR=1, background_transparency=100)
ax = myVectors.AXES
ax[0].HIDE= 1 ; 隐藏底部X轴
ax[1].HIDE= 1 ; 隐藏左侧Y轴
; 添加颜色条。
cb = COLORBAR(TARGET=myVectors, POSITION=[0.10,0.065,0.3,0.085], $
TITLE='相对流速 (m/day)', FONT_SIZE=8, $
font_name = 'Microsoft Yahei')
标签:COLOR,ASCII,IDL,羽流,流速,csv,数据,含水层
From: https://www.cnblogs.com/enviidl/p/17955891