使用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)

posted @ 2024-02-05 17:47  ENVI-IDL技术殿堂  阅读(234)  评论(0编辑  收藏  举报