免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 1811|回复: 2
收起左侧

[经验共享] 【IDL代码库】栅格转矢量内部接口

[复制链接]

82

主题

1万

铜板

2

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
711
发表于 2018-2-2 17:11 | 显示全部楼层 |阅读模式
自ENVI 5.2版本开始提供了ENVIClassificationToShapefileTask,可以实现由分类图像转换为shapefile矢量文件的功能。

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

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

参考代码如下:

  1. PRO test_raster_to_vector_doit
  2.   COMPILE_OPT idl2
  3.   envi, /restore_base_save_files
  4.   ENVI_BATCH_INIT

  5.   file = 'D:\Temp\class.dat' ;输入分类图像
  6.   out_shpfile = 'D:\Temp\vector.shp' ;输出矢量文件路径
  7.   idx = [1,2,3,4,5] ;输出类别索引

  8.   ENVI_OPEN_FILE, file, r_fid=fid

  9.   ENVI_FILE_QUERY, fid, dims=dims, $
  10.     class_names=class_names, sname=sname
  11.   pos = [0]

  12.   l_name = class_names[idx]
  13.   evf_file = envi_get_tmp()
  14.   envi_hourglass
  15.   envi_check_save, /vector
  16.   rtv_class_setup, fid=fid, pos=pos, dims=dims, $
  17.     class_names=l_name, class_ptr=idx,          $
  18.     out_name=evf_file, in_memory=0,             $
  19.     output_flag=1, sname=sname

  20.   ;输出为shapefile
  21.   evf_id = ENVI_EVF_OPEN(evf_file)
  22.   ENVI_EVF_TO_SHAPEFILE, evf_id, out_shpfile

  23.   ;关闭evf文件,并删除
  24.   ENVI_EVF_CLOSE, evf_id
  25.   FILE_DELETE, evf_file, /quiet
  26. END
复制代码

141

主题

982万

铜板

3万

好友

管理员

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
621916
发表于 2018-2-2 17:15 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

6

主题

1万

铜板

6

好友

VIP会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
2949
发表于 2018-2-3 10:39 手机频道 | 显示全部楼层
谢谢分享资料!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表