使用IDL进行氚羽流监测(五)——绘制污染物扩散带等值线图
此项部分研究内容是确定氚污染带的当前范围和预测其未来范围。文件 "MonitoringWells.csv" 包含了氚浓度的当前数值(T0)以及使用算法模拟的未来不同时间点的氚浓度数据。在本示例中,使用对应于2030年的污染带范围的 T3 列数据。
使用文件 "MonitoringWells.csv" 和 "TankTerrainData.csv" 中的数据,创建地形等高线图,以显示模拟的2030年氚羽流的范围。
读入地形和羽流数据并对其进行网格化
首先读取地形和羽流数据文件。地形数据位于 IDL 安装目录中 \examples\data 目录下的 TankTerrainData.csv 文件中。此数据包含研究区域的地表地形数据,以 X、Y、Z 坐标表示(均以米为单位),第四列包含了底部含水层表面的海拔高度。第二个文件 ("MonitoringWells.csv") 包含了研究区域在四个不同时间点(T0=当前,T1=2020,T2=2025,T3=2030)的氚浓度数据。
在这个示例中,我们使用 ASCII_TEMPLATE 创建模板,然后使用 READ_ASCII 读取数据。
; 确保数据从第 2 行开始
; (第 1 行为标题行)。
; 创建基本模板并手动指定 X、Y、Z和 AQ 作为变量名。
myTemplate = ASCII_TEMPLATE(FILEPATH('TankDataTerrain.csv', $
SUBDIRECTORY=['examples', 'data']))
site = READ_ASCII(FILEPATH('TankDataTerrain.csv', $
SUBDIRECTORY=['examples', 'data']),TEMPLATE=myTemplate)
; 使用克里金法对地形数据进行网格化
grid = GRIDDATA(site.X, site.Y, site.Z, $
DIMENSION=1000, METHOD="Kriging")
; 创建模板并读入羽流数据。
; 手动指定:Field1=Labels, Field2=X, Field3=Y, Field4=T0,; Field5=T1, Field6=T2, Field7=T3.
myTemplate2 = ASCII_TEMPLATE(FILEPATH('MonitoringWells.csv', $
SUBDIRECTORY=['examples', 'data']))
wells = READ_ASCII(FILEPATH('MonitoringWells.csv', $
SUBDIRECTORY=['examples', 'data']), $
TEMPLATE=myTemplate2)
; 对 T3 的羽流数据进行网格化。
gridT3 = GRIDDATA(wells.X, wells.Y, wells.T3/27, $
DIMENSION=1000, METHOD="Kriging")
创建等高线图
首先创建等高线图。然后,我们将在其上叠加氚羽流的等值线,然后使用散点图来标示储罐位置。
请注意,等高线从 445 开始与河流的水位一致,并在生成的地图中显示为白色区域。
; 创建一个颜色表变量。使用REVERSE关键字
; 使用 #74号颜色表作为 COLORTABLE 函数的关键字
; 翻转颜色,使较深的颜色在地形较低的地区。
myCT = COLORTABLE(74, /REVERSE)
; 设置索引变量来保存轮廓级别。
; 从网格数据创建等高线图。
index = [445,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="氚污染2030年模拟扩散带", $
XTITLE="Meters (x10)", YTITLE="Meters (x10)" , $
font_name = 'Microsoft Yahei')
myContour2 = CONTOUR(grid, COLOR='black', $
C_VALUE=index, ASPECT_RATIO=.75, /OVERPLOT)
创建氚羽流等值线并标注储井位置
创建 T3 (2030) 的模拟氚羽流范围。
; 设置井位置的变量。
; 井的位置使用与我们初始地形的 (x, y) 坐标相同的坐标系。
xLoc = [66,276,566,471,484]
yLoc = [210,221,146,483,313]
; 设置用于轮廓的颜色。
colors = ['indigo','purple','medium violet red','medium orchid', $
'hot pink','fuchsia','deep pink']
; 创建第二个索引变量来保存轮廓级别
; 然后创建模拟的氚羽流范围。
index2 = [740,3703,7407,18518,37037,55555,74074]
myContourT3 = CONTOUR(gridT3, ASPECT_RATIO=.75, C_LABEL_INTERVAL=0.75, $
C_VALUE=index2, C_LABEL_SHOW=1, C_COLOR=colors, /OVERPLOT)
; 在窗口的右下角添加注释。
; 使用相对坐标。
areaText2 = TEXT(1, -.1, TARGET=myContour2, /RELATIVE, $
'氚浓度(Bq/L)', ALIGNMENT=1, $
COLOR='black', FONT_SIZE=8, FONT_STYLE='italic', $
font_name = 'Microsoft Yahei')
; 绘制储井的位置。
tanks = SCATTERPLOT(xLoc, yLoc, /SYM_FILLED, SYMBOL='star', $
SYM_COLOR='red', /OVERPLOT, /DATA)