【IDL代码库】栅格转矢量内部接口

自ENVI 5.2版本开始提供了ENVIClassificationToShapefileTask,可以实现由分类图像转换为shapefile矢量文件的功能。

 

但是,在使用过程中发现,当栅格图斑数量过多时,此Task效率较低。

于是尝试用旧版本的RTV_doit来实现,结果发现不会输出dbf文件,这样矢量文件也就没有了属性信息。很不开心。跟美国技术支持反馈后,他们给了我一个内部接口,可以实现正常转换。但是当转换的某类像元个数为0时(虽然这种情况极少出现),此接口会报错。

 

参考代码如下:

PRO test_raster_to_vector_doit

  COMPILE_OPT idl2

  envi, /restore_base_save_files

  ENVI_BATCH_INIT

 

  file = 'D:\Temp\class.dat' ;输入分类图像

  out_shpfile = 'D:\Temp\vector.shp' ;输出矢量文件路径

  idx = [1,2,3,4,5] ;输出类别索引

 

  ENVI_OPEN_FILE, file, r_fid=fid

 

  ENVI_FILE_QUERY, fid, dims=dims, $

   class_names=class_names, sname=sname

  pos = [0]

 

  l_name = class_names[idx]

  evf_file = envi_get_tmp()

  envi_hourglass

  envi_check_save, /vector

  rtv_class_setup, fid=fid, pos=pos, dims=dims, $

   class_names=l_name, class_ptr=idx,         $

   out_name=evf_file, in_memory=0           $

   output_flag=1, sname=sname

 

  ;输出为shapefile

  evf_id = ENVI_EVF_OPEN(evf_file)

  ENVI_EVF_TO_SHAPEFILE, evf_id, out_shpfile

 

  ;关闭evf文件,并删除

  ENVI_EVF_CLOSE, evf_id

  FILE_DELETE, evf_file, /quiet

END

 

posted @   ENVI-IDL技术殿堂  阅读(272)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示