
IDL8.x下通过shapefile裁剪影像
发布日期:2021-05-14 03:07:01
浏览次数:21
分类:精选文章
本文共 1659 字,大约阅读时间需要 5 分钟。
借鉴了,但是其源码均为Classic接口,在经过一定学习后,修改成了IDL8.x下新接口的源码,主要难点在于通过shapefile得到重合边界的矩阵范围。
调用示例代码:
subsetDemo, 'H:\Test\img_buffer', 'H:\Test\shp\img_range.shp', 'H:\Test\img';'H:\Test\img_buffer'表示需要进行裁剪的影像文件名,'H:\Test\shp\img_range.shp'表示用于裁剪的shapefile矢量文件名,'H:\Test\img'表示输出文件名。
源码:(需要注意的是,未对影像进行掩膜处理)
pro subsetDemo, raster_fn, shp_fn, out_fn compile_opt idl2 if ENVI(/CURRENT) ne !null $ then e = ENVI(/CURRENT) $ else e = ENVI(/HEADLESS) raster = e.OpenRaster(raster_fn) shp = e.OpenVector(shp_fn) shpObj = IDLffShape(shp_fn) entity = shpObj.GetEntity(0, /ATTRIBUTES) verts = *(entity.VERTICES) raster_cs = ENVICoordSys(COORD_SYS_STR = $ raster.SpatialRef.Coord_Sys_Str) shp_cs = shp.Coord_Sys shp_cs_str = shp_cs.Coord_Sys_Str if shp_cs_str.StartsWith('GEOGCS') then begin shp_cs.ConvertLonLatToLonLat, verts[0, *], $ verts[1, *], lon1, lat1, raster_cs raster_cs.ConvertLonLatToMap, lon1, lat1, mapx, mapy endif else if shp_cs_str.StartsWith('PROJCS') then begin shp_cs.ConvertMapToMap, verts[0, *], $ verts[1, *], mapx, mapy, raster_cs endif raster_sr = raster.SpatialRef raster_sr.ConvertMapToFile, mapx, mapy, filex, filey filex = filex.Filter('__filter', raster.nsamples) filey = filey.Filter('__filter', raster.nlines) max_x = ROUND(MAX(filex)) min_x = ROUND(MIN(filex)) max_y = ROUND(MAX(filey)) min_y = ROUND(MIN(filey)) task = ENVITask('SubsetRaster') SUB_RECT=[min_x,min_y,max_x,max_y] task.INPUT_RASTER = raster Task.Sub_Rect = SUB_RECT Task.OUTPUT_RASTER_URI = out_fn Task.Execute raster.Close shp.Close OBJ_DESTROY, shpObjendfunction __filter, value, maxv RETURN, value ge 0 && value le maxvend
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月18日 16时41分47秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
解决Vue源码运行错误
2021-05-14
HDU - 4109 Instrction Arrangement
2021-05-14
Lua websocket长连接
2021-05-14
SQL 分页查询 返回总条数
2021-05-14
重写的特点
2021-05-14
计算机网络UDP协议和TCP协议
2021-05-14
Linux运行C语言文件
2021-05-14
C字符串高级
2021-05-14
2010-03-25 函数题
2021-05-14
C语言_动态内存分配练习
2021-05-14
Linux学习_系统进程概念
2021-05-14
七层网络模型(待添加)
2021-05-14
考研复试——KY276 Problem C
2021-05-14
老鸟带你画tiled lines
2021-05-14
MybatisPlus自定义Sql实现多表查询
2021-05-15
Java位运算,负数的二进制表示形式,int类型最大值为什么是2的31次方-1
2021-05-15
PyQt5快速上手基础篇10-QSettings用法
2021-05-15
JQuery--手风琴,留言板
2021-05-15
MFC 自定义消息发送字符串
2021-05-15
goahead 下goaction测试与搭建
2021-05-15