IDL基础学习资料+监督分类

学习资料

IDL和ENVI的详细文档:查询具体的函数和接口

Documentation Center IDL基础学习资料+监督分类https://www.l3harrisgeospatial.com/docs/home.html ;

ENVI-IDL技术殿堂的博客

IDL程序发布exe清晰步骤_ENVI-IDL技术殿堂_新浪博客IDL程序发布exe清晰步骤_ENVI-IDL技术殿堂_新浪博客,ENVI-IDL技术殿堂,IDL基础学习资料+监督分类http://blog.sina.com.cn/s/blog_764b1e9d0102xn80.html ;

IDL帮助文档(官方),不太好用,还是我不会用呢

IDL基础学习资料+监督分类

IDL中类定义

IDL基础学习资料+监督分类

ENVI-IDL学习总结_qq_41627642的博客-CSDN博客1、IDL编写代码时如何显示行号2、 新建工程PROAlt+?号可以实现自动补全功能Ctrl+Shift+F实现缩进添加链接描述?+函数名进行帮助查询IDL的帮助界面ENVI的帮助界面3、新建过程函数以及调用常用IDL函数功能介绍 IDL读取显示保存图像ENVI二次开发(代码:初始化,定标,大气校正,融合,镶嵌,裁剪,监督与非IDL实现遥感影像融合(批量)TASK(三)基于IDL用户函数的波段运算ENVI下的图像融合方法4、 面向对象开发模式学习5、pro工程代码怎么打IDL基础学习资料+监督分类https://blog.csdn.net/qq_41627642/article/details/108546853 ;

Java调用
IDL学习记录和Java调用IDL方法_回首1949-CSDN博客先记录一下最近的IDL学习经历。IDL指的是ENVI、IDL的那个IDL,和我老婆吹牛,说是处理火星数据用的,事实可能就是如此。从2018年1月7日开始,迫于项目的压力,需要在10号前学会IDL,并且把两个博士写的遥感数据处理IDL代码集成到项目中,压力还是很大的。大学的时候就有了解过IDL,只是一直没有机会去耐心的学。这下也了却了自己多年的心愿,并用4天的时间完成任务。IDL的资…IDL基础学习资料+监督分类https://blog.csdn.net/u010214568/article/details/79033685 ;

一个很完整的小项目

利用IDL二次开发编写Envi扩展工具进行河流边滩提取的实验操作_flytodream1的博客-CSDN博客河流边滩提取该实验是学长学姐比赛的,老师给我们试试手,纯粹为学用,不为任何商业用途[/滑稽]河流边滩:指与河岸相连的,枯水期裸露出来,丰水期淹没的泥沙淤积体实验思路:利用枯水期和丰水期光学遥感影像进行预处理,再计算MNDWI(修正归一化水体差异指数),再确定阈值,对MNDWI二值化,水体为1,非水体为0,因为部分水洼等与河流反射特性相同,所以值为1的既有河流也有陆地上的水,因此再利用面向对象分类提取河道,形态学滤波过滤细碎像元,最后将丰水期河道与枯水期河道相减,得到河流边滩,最后矢量化,完成。Cr IDL基础学习资料+监督分类https://blog.csdn.net/flytodream1/article/details/107938387 ;

监督分类

pro classfication
  COMPILE_OPT IDL2

  ; envi,/restore_base_files 会默认弹出envi老版的窗口,但是注释掉又会报错
  ENVI,/restore_base_files

  ;读入影像
  ;file='C:\Users\z6q6k6\Desktop\arcpy\3band_20190408_Zhoushan.tif'
  ENVI_OPEN_FILE,file,r_fid=fid
  IF fid EQ -1 THEN BEGIN
    RETURN
  ENDIF
  ;envi_open_file,file,r_fid=fid
  envi_file_query,fid,ns=ns,bl=nl,nb=nb,dims=dims
  pos=indgen(nb)

  ;读入roi文件
  ;file_roi='C:\Users\z6q6k6\Desktop\arcpy\1.roi'
  envi_restore_rois,file_roi
  roi_ids=envi_get_roi_ids(fid=fid,roi_colors=roi_colors,roi_names=roi_names)

  ;添加未识别的一类,并自动赋予黑色
  class_names=['Unclassified',roi_names]
  num_classes=n_elements(roi_ids)
  lookup = BYTARR(3,num_classes+1)
  lookup[0,1] = roi_colors

  means=fltarr(nb,num_classes)
  stdv=fltarr(nb,num_classes)
  cov=fltarr(nb,nb,num_classes)
  for j=0,num_classes-1 do begin
    roi_dims=[envi_get_roi_dims_ptr(roi_ids[j]),0,0,0,0]
    envi_doit,'envi_stats_doit',fid=fid,dims=roi_dims,pos=pos,comp_flag=4,mean=c_mean,stdv=c_stdv,cov=c_cov
    means[0,j]=c_mean
    stdv[0,j]=c_stdv
    cov[0,0,j]=c_cov
  endfor

  ; 默认输出路径
  out_file='C:\Users\z6q6k6\Desktop\result.tif'

  envi_doit,'class_doit',fid=fid,dims=dims,pos=pos,$
    r_fid=r_fid,out_name=out_file,method=1,$
    mean=means,stdv=stdv,cov=cov,num_classes=num_classes,lookup=lookup,$
    class_names=class_names

  ;method:
  ;0:平行六面体(监督)
  ;1:最小距离(监督)
  ;2:最大似然(监督)
  ;3:SAM(监督)
  ;4:ISODATA(无监督)
  ;5:马哈拉诺比斯(监督)
  ;6:二进制编码(监督)
  ;7:K-Means(无监督)
  ;8:SID(监督)

END
pro classfication_5
;,file,roi_file,out_all,out_ship;
  COMPILE_OPT IDL2
  ;COMPILE_OPT STRICTARR

  args = Command_Line_Args(Count=c)
  file = args[0]
  roi_file = args[1]
  out_all = args[2]
  out_ship = args[3]

  ;如果在参数里加/headless 关键字,为不显示ENVI软件
  e = ENVI(/headless)
  path= routine_filepath('classfication_5')
  dir=file_dirname(path)
  RESTORE,dir + '\ENVIRandomForestClassification\ENVIRandomForestClassification_V5.3_3\extensions\ENVIRandomForestClassification.sav'

  task = ENVITASK('RandomForestClassification')

  ;file='G:\newdata\2019_Zhoushan.dat'
  raster = e.OpenRaster(file)
  task.INPUT_RASTER = raster

  ;roi_file = 'G:\newdata\roi.roi'
  roi = e.OpenRoi(roi_file)
  task.input_Rois= roi

  OutFile_1 = e.GetTemporaryFilename()
  Task.OUTPUT_RASTER_URI = OutFile_1

  ; 错误
  catch, error
  if error ne 0 then begin
    catch, /cancel
    print, 'A normal error occured: ' + !error_state.msg

    ;out_all = 'G:\newdata\all.dat'
    raster_1 = e.OpenRaster(OutFile_1)
    Task_1 = ENVITask('ClassificationAggregation')
    Task_1.INPUT_RASTER = raster_1
    Task_1.Minimum_Size =  200
    Task_1.OUTPUT_RASTER_URI = out_all    ;第一种保存方法,设置输出路径,保存数据
    Task_1.Execute

    ; 水体第一步
    OutFile_2 = e.GetTemporaryFilename()
    Raster_2 = e.OpenRaster(out_all)
    fid = ENVIRasterToFID(Raster_2)
    ENVI_File_Query, fid, DIMS=dims
    ENVI_Doit, 'Math_Doit', $
      FID = [fid], $
      DIMS = dims, $
      POS = [0], $
      EXP = 'b1*(float(b1) eq 3)', $
      out_name=OutFile_2

    ; 水体第二步
    OutFile_3 = e.GetTemporaryFilename()
    Raster_3 = e.OpenRaster(OutFile_2)
    fid = ENVIRasterToFID(Raster_3)
    ENVI_File_Query, fid, dims=dims
    ENVI_Doit, 'Math_Doit', $
      FID = [fid], $
      dims = dims, $
      POS = [0], $
      EXP = 'b1 * float(b1 ne 0) / (b1 ne 0)', $
      out_name= OutFile_3

    ; 建筑第一步
    OutFile_4 = e.GetTemporaryFilename()
    ;OutFile_4 = 'G:\newdata\building_1.dat'
    Raster_4 = e.OpenRaster(OutFile_1)
    fid = ENVIRasterToFID(Raster_4)
    ENVI_File_Query, fid, DIMS=dims
    ENVI_Doit, 'Math_Doit', $
      FID = [fid], $
      DIMS = dims, $
      POS = [0], $
      EXP = 'b1 * (float(b1) eq 1)', $
      out_name=OutFile_4

    ; 建筑第二步
    OutFile_5 = e.GetTemporaryFilename()
    ;OutFile_5 = 'G:\newdata\building_2.dat'
    Raster_5 = e.OpenRaster(OutFile_4)
    fid = ENVIRasterToFID(Raster_5)
    ENVI_File_Query, fid, dims=dims
    ENVI_Doit, 'Math_Doit', $
      FID = [fid], $
      dims = dims, $
      POS = [0], $
      EXP = 'b1 * float(b1 ne 0 ) / (b1 ne 0)', $
      out_name= OutFile_5

    ; 结果

    raster_6 = e.OpenRaster(OutFile_3)
    raster_7 = e.OpenRaster(OutFile_5)
    fid = ENVIRasterToFID(raster_6)
    ENVI_File_Query, fid, dims=dims
    fid1 = fid
    fid = ENVIRasterToFID(raster_7)
    ENVI_File_Query, fid, dims=dims
    ENVI_Doit, 'Math_Doit', $
      FID = [fid1, fid], $
      dims = dims, $
      POS = [0,0], $
      EXP = 'float(b1) - b2', $
      out_name=out_ship

    print,'yes!'
    return
  endif
  task.EXECUTE

  e.close

END

Original: https://blog.csdn.net/qq_41664159/article/details/120504047
Author: z6q6k6
Title: IDL基础学习资料+监督分类

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/667080/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球