ENVI时态分析工具

ENVI 时态分析工具展示了利用9景1975到2014年每年5月份的陆地卫星数据构建一个内华达州拉斯维加斯的时间序列。此工具展现了如何使用系列的管理实现时态分析以及动画视频导出。此工具同样包含代码示例,演示如何使用ENVI应用程序编程接口(API)在批处理模式下执行这些任务。

1、使用数据

本专题使用的数据来自ENVI Resource DVD Landsat Case Studies\Time Series路径下的数据。

 

数据为陆地卫星影像来自美国地质调查局(USGS)Earth Explorer网站下载,经过了如下预处理:

·       空间裁剪到同一空间范围

·       辐射校正获取大气顶端(TOA)反射率

·       使用QUAC大气校正

·       所有影像数据重采样同一空间分辨率以及重投影到同一地理坐标。

2、案例分析:拉斯维加斯发展

拉斯维加斯是美国增长最快的大都市之一。据美国人口普查局,拉斯维加斯,恒基兆业,永乐,NV大都市统计区(MSA)的人口在1970年是273288人。今天的人口约200万人。

遥感图像可以被用来监测市区随时间的扩展。高空间分辨率的图像是优选的城市范围内学习不同的功能。尤其是不透水表面随着时间的推移(道路,建筑物,停车场等)不断增加,获取整个大都市的高分辨率图像较难,同时存储消耗大量的磁盘空间。较低分辨率的图像,如陆地卫星传统产品可从USGS上免费获取,同时,此数据也常常适用于研究城市扩张过大的空间范围。

下面的变化检测的图像显示了从1980年至今的认为影响的差异。利用SPEAR变化检测工具从1980年的Landsat TM图像和2014年的Landsat-8的影像获取归一化建筑物指数用于检测城市的整体发展,其红色区域为自1980年以来城市的往外扩展区域。

 

变化检测只能提供变化“之前和之后”的情景;时态分析提供一种随着时间的推移研究城市发展模式以及城市的关键变化的机会。使用此工具可以展现,对于过去40年的时间,每隔5年的城市发展状态。

 3、构建时间序列


采用时态分析工具将构建一个栅格数据集,此栅格数据集主要应用于时空分析。此工具创建的栅格数据集文件只是一个以.series文件扩展的元数据文件。该文件不包含任何图像;它只是引用源栅格的文件位置。

如果与ENVI头文件关联的栅格影像文件包含有时间元数据字段,你必须通过时间来订购该系列中的选项。

1.     启动ENVI

2.     主菜单 File > Preferences

3.     点击 Data Manager > Auto Display Method for Multispectral Files > CIR ,打开影像自动以假彩色显示;

 

4.     点击 OK 完成参数设置。

5.     主菜单 File > New > Build Raster Series,弹出构建事态序列数据对话框;

6.     点击 Add Raster > Add By Filename/Add Open Raster > 按照时间顺序添加LasVegasMay1975.dat 到LasVegasMay2014.dat 9个TM影像文件 > 点击Browse 选择输出文件路径以及名称。

 

7.     点击OK完成设置,输出文件.

4、显示时间序列文件

ENVI创建成功时态序列文件以后,将在ENVI 界面的左侧列表中显示。这些栅格影像文件以最早的时间为第一帧显示(LasVegasMay1975.dat),该显示组件的功能描述如下:

 

ENVI中每一个时间序列都是一个单独的图层,在数据管理中显示并且以显示的数据图表来展示。

任何显示操作,如缩放、旋转或拉伸都将适用于整个时间序列,此时间序列中没有任何特定影像需求。同样,图层管理中显示了当前影像显示图层情况,比如,当前显示 LasVegasMay1975.dat,随着时间轴的滚动,显示影像数据图层也在不断的变化更新中。

通过以下步骤操作时态分析工具:

1、 时间序列图层右击选择 Zoom to Layer Extent,或者点击实现全局影像显示;

2、 Stretch菜单下选择Linear 1%拉伸;

3、 对话框中点击Forward  或者拖拽滚轴显示影像数据;

4、 对话框中点击或者拖拽滑块条从一个点移动到另一个点,方便快速查看每景影像的获取时间以及名称。当释放滑块的同时显示对应关联的影像数据;

5、 点击Play forward动态显示不同时期的影像数据,动态显示数据的时候可以通过此工具 选择每景影像之间的显示间隔;

6、 当显示影像到某一景数据的时候,如LasVegasMay2014.dat,点击Pause 停止动画显示;

7、 点击Option 工具按钮,选择Load Current Raster,显示当前影像数据。ENVI打开关联影像数据LasVegasMay2014.dat作为一个单独的图层显示,其可作为时态序列分析的一个单独影像数据存在。

对于导入的感兴趣的影像数据,除去不能动态显示,可采用ENVI下的任何处理工具进行处理运算。

8、右击图层TM_Time,选择Remove,移除图层显示。

 

 

1)   注记

如果每景影像包含了其对应的影像获取时间,可以通过注记工具在影像显示窗口中展示。在创建文本注记以前,为了显示更美观舒适,需要进行以下参数的设置:

1.     ENVI 主菜单, File > Preferences.

2.     点击 Annotations 下的Text按钮,查看/修改文本显示参数;

3.     文本注记具体参数设置如下:

 Color: 默认黄色

 Font Name: Microsoft YaHei

 Font Style: Bold

 Font Size: 14

 Horizontal Alignment: Center

Background Method: Outline

Background Color:黑色

 Scale on Zoom: No

4.     点击OK完成文本参数设置。

 

5.     右击图层管理中的影像文件,选择 Zoom to Layer Extent.

6.     在时态序列分析对话框中点击 Options 选择 Annotate > Date and Time,在显示框中添加影像数据以及获取时间。

注:还可以添加其他注记,如数据名,波段名

7.     在显示窗口中拖拽此时间注记到影像显示适当位置,如,影像上方正中位置;

 

8.     点击 动画播放按钮,可以看到随着影像的动态变化,以及对应的数据以及获取时间也在不断的更新变化。

9.     右击左侧列表中的注记文件,选择 Save As,输出文件注记的保存路径以及文件名称,点击OK完成操作。 

2)   创建Video文件

点击options 下拉菜单,选择Save Video Animation.

 

点击 Advanced 按钮,在Select format 列表中选择MP4(MPEG-4 Part 14)

在 Select codec 列表中选择 [Default].

点击Browse 输入保存文件的路径以及Video文件名。

 

l ENVI > Open 打开envi_animation.MP4,查看保存的Video文件。

 

 

5、ENVI API 代码示例

ENVI API代码示例可以从ENVI Resource DVD中获取。

预处理

此应用程序是用来预处理陆地卫星图像的,为时间序列分析做准备。此程序在最后的处理工作流中不包括添加影像获取时间头文件的功能,此操作必须手动完成。用户可根据自己的需求使用此脚本,确保在文件搜索中更更改磁盘的名称与地址目录。E

PRO PreprocessLandsatSeries
  COMPILE_OPT IDL2
     ; Start the application
  e = ENVI()  
  ; Select input files. Select the *MTL.txt files for
  ; Landsat TM, -8, and some MSS images distributed
  ; by the USGS. For Landsat MSS images in .met format,
  ; change this line to search for '*.met' files.   
  files = File_Search('C:\Data', '*MTL.txt')   
  Foreach file, files DO BEGIN   
    Raster = e.OpenRaster(file)
    VisNIRBands = Raster[0]   
    ; This is the area of interest:
    UpperLeftLat = 36.4
    UpperLeftLon = -115.4
    LowerRightLat = 35.94
    LowerRightLon = -114.8   
    ; Convert these coordinates from degrees to map
    ; coordinates in meters. Then define a spatial subset
    ; around the area of interest for the multispectral raster.
    SpatialRef = VisNIRBands.SpatialRef
    SpatialRef.ConvertLonLatToMap, UpperLeftLon, $
      UpperLeftLat, MapX, MapY
    SpatialRef.ConvertLonLatToMap, LowerRightLon, $
      LowerRightLat, MapX2, MapY2
    Subset = ENVISubsetRaster(VisNIRBands, $
      SPATIALREF=SpatialRef, $
      SUB_RECT=[MapX, MapY2, MapX2, MapY])   
    ; Calibrate to top-of-atmosphere reflectance
    RCTask = ENVITask('RadiometricCalibration')
    RCTask.Input_Raster = Subset
    RCTask.Calibration_type = 'Top-of-Atmosphere Reflectance'
    RCTask.Output_Raster_URI = e.GetTemporaryFilename()
    RCTask.Execute
       ; Perform QUAC atmospheric correction
    QUACTask = ENVITask('QUAC')
    QUACTask.Input_Raster = RCTask.Output_Raster
    QUACTask.Sensor = 'Unknown'
    QUACTask.Output_Raster_URI = e.GetTemporaryFilename()
    QUACTask.Execute
       ; Create a spatial grid definition
    ; Coordinate system: UTM Zone 11N, WGS-84
    ; Spatial extent:  35.94N to 36.4N, 114.8W to 115.4W
    ; Pixel size: 30 meters
    CoordSys = ENVICoordSys(COORD_SYS_CODE=32611)   
    Grid = ENVIGridDefinition(CoordSys, $
      EXTENT=[MapX, MapY, MapX2, MapY2], $
      PIXEL_SIZE=[30.0D, 30.0D])   
    ; Reproject each raster to the common spatial grid
    RegridTask = ENVITask('RegridRaster')
    RegridTask.Input_Raster = QUACTask.Output_Raster
    RegridTask.Grid_Definition = Grid
    RegridTask.Output_Raster_URI = e.GetTemporaryFilename()
    RegridTask.Execute
    ReprojectedRaster = RegridTask.Output_Raster   
    ; Get the year from the file name. For
    ; Landsat TM and -8 filenames, use this format:
    year = Fix(Strmid(File_BaseName(file), 9, 4))   
    ; For Landsat MSS images with a .met metadata file:
    ; year = Fix(Strmid(File_BaseName(file), 10, 4))   
    ; Export the reprojected raster to disk in the
    ; system's temporary directory
    outFile = Filepath('LasVegasMay'+StrTrim(year,2)+'.dat',/TMP)
    ReprojectedRaster.Export, outFile, 'ENVI'
    ReprojectedRaster.Close   
  Endforeach
END

构建时态分析数据

影像在预处理结束后被保存为envi的标准格式,即可采用下面的程序构建时间动态数据。ENVI API目前并不支持注释,在此视频中只是显示影像的时态序列数据。

PRO BuildAnimateTimeSeries
  COMPILE_OPT IDL2   
  ; Start the application
  e = ENVI()   
  ; Select input files
  Files = File_Search('C:\Data\', 'LasVegasMay*.dat')   
  ; Build a time series
  Task = ENVITask('BuildTimeSeries')
  Task.Input_Raster_URI = Files
  Task.Output_Rasterseries_URI = e.GetTemporaryFilename('series')
  Task.Execute
  Series = Task.Output_RasterSeries   
  ; Create a time series layer
  View = e.GetView()
  Layer = View.CreateLayer(Series)
  View.Zoom, /FULL_EXTENT   
  ; Animate the series and export a video file
  VideoFile = e.GetTemporaryFilename('mp4')
  View.ChipToVideo, VideoFile, 'mp4', $
    SERIES_LAYER=Layer, DURATION=18.0
END
posted @ 2022-06-14 12:13  ENVI-IDL技术殿堂  阅读(854)  评论(0编辑  收藏  举报