ENVI二次开发应用:ENVI Task实例

对遥感影像进行二值化,在进行分类,之后把分类结果矢量化(提取出矢量边界)。

PRO test_Build_Footprint
  COMPILE_OPT idl2
  e=envi()

  file = FILE_DIRNAME(ROUTINE_FILEPATH())+$
    '\data\beijingRGB.dat'                ;打开某路径下的ENVI标准格式的数据
  Raster = e.OpenRaster(file)
  outShpFile = e.GetTemporaryFilename('shp')
  ;
  view = e.GetView()
  layer = view.CreateLayer(Raster)
  view.zoom, 1, /full_extent

  ;波段裁剪,制作掩膜文件
  band1 = ENVISubsetRaster(Raster, BANDS=[0])
  maskRaster = ENVIBinaryGTThresholdRaster(band1, 0)

  tmpLayer = view.CreateLayer(maskRaster)

  ;生成分类结果,并显示
  ColorSliceTask = ENVITASK('ColorSliceClassification')
  ColorSliceTask.INPUT_RASTER = maskRaster
  ColorSliceTask.NUMBER_OF_RANGES = 2
  ColorSliceTask.Execute

  tmpLayer = view.CreateLayer(ColorSliceTask.OUTPUT_RASTER)

  ;生成shp文件
  ClassToVectorTask = ENVITASK('ClassificationToShapefile')
  ClassToVectorTask.INPUT_RASTER = ColorSliceTask.OUTPUT_RASTER
  ClassToVectorTask.EXPORT_CLASSES = ['1 to 1']
  ClassToVectorTask.OUTPUT_VECTOR_URI = outShpFile
  ClassToVectorTask.Execute

  shpLayer = View.CreateLayer(ClassToVectorTask.OUTPUT_VECTOR)

  ;删除临时结果
  ;  STOP
  ;  Raster.Close, error=err
  ;  maskRaster.Close, error=err
  ;  ColorSliceTask.OUTPUT_RASTER.Close, error=err
  ;  ClassToVectorTask.OUTPUT_VECTOR.Close, error=err
  ;  tmpFiles = FILE_SEARCH(FILE_DIRNAME(e.GetTemporaryFilename()),$
  ;    '*envi*',COUNT=count)
  ;  IF count NE 0 THEN FILE_DELETE, tmpFiles, /QUIET
END


;maskRaster = ENVIDataValuesMaskRaster(band1, [0,0], /inverse)
;maskRaster.METADATA.removeItem,'data ignore value', error=err
;
;ColorSliceTask.OUTPUT_RASTER.METADATA.UpdateItem,$
;  'CLASS NAMES', ['ROI','Background']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值