资源描述:
《【idl代码库】利用shp文件裁剪栅格图像 》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、【IDL代码库】利用shp文件裁剪栅格图像标签: idl源代码图像裁剪idl裁剪shapefile分类: IDL代码库此代码是史上最稳定最完善的shp文件裁剪图像的代码。欢迎大家使用,如果遇到错误(画外音:不是最稳定最完善么?),请大家回邮件说明。O(∩_∩)o~ 下载地址:http://pan.baidu.com/s/1hq8jb8K注:源码编码为GB2312,如果出现乱码时,请修改源码属性中的编码为GB2312即可。 更新历史:2015.09.10——修复两个小问题,请重新下载使用 此代码是史上最稳定最完善的shp文件裁剪图像的代码。欢迎大家使用,如果遇到错误(画外音:
2、不是最稳定最完善么?),请大家回邮件说明。O(∩_∩)o~ 下载地址:http://pan.baidu.com/s/1hq8jb8K注:源码编码为GB2312,如果出现乱码时,请修改源码属性中的编码为GB2312即可。 更新历史:2015.09.10——修复两个小问题,请重新下载使用 调用示例代码: ENVI>file='D:tempimage.dat'ENVI>envi_open_file,file,r_fid=fidENVI>shpFile='D:tempvector.shp'ENVI>RasterSubsetViaShapefile,Fid,shpFile=
3、shpFile, outFile='D:tempresult.dat',r_fid=r_fid 源代码如下,注意看最上边的格式说明和参数含义。;+;:Description:;利用shapefile对栅格图像进行裁剪.;;:Syntax;RasterSubsetViaShapefile,Fid,shpFile=string,[pos=array],;[inside={0
4、1}],[outFile={string
5、variable}],[r_fid=variable];;:Params:;Fid--输入文件FID;注:可通过ENVI_OPEN_FILE、ENVI_S
6、ELECT、ENVIRasterToFID等获取;;:Keywords:;pos --保留波段索引数组(可选),默认保留所有波段。;shpFile--用于裁剪的shapefile完整路径;inside--保留shp文件外或内(可选,0或1),默认保留内部。; 注:设置0时,保留外部;设置1时,保留内部。;outFile--裁减结果文件路径(可选); 注:如果不设置或设置为变量,则裁剪结果保存在临时目录中,outFile将保存输出文件名; 注:如果设置为文件路径,则裁剪结果保存在指定路径中;r_fid--返回裁剪结果文件F
7、ID,如果范围-1,则表示裁剪失败。;;:Author:duhj@esrichina.com.cn;;:Date:2015年9月2日15:33:38;-PRORasterSubsetViaShapefile,Fid,shpFile=shpFile,pos=pos,$inside=inside,outFile=outFile,r_fid=r_fid COMPILE_OPTidl2ENVI,/RESTORE_BASE_SAVE_FILESENVI_BATCH_INIT CATCH,errIF(errNE0)THENBEGINCATCH,/CANCELPRINT,'ERROR:'
8、+!ERROR_STATE.MSGMESSAGE,/RESETRETURNENDIF ENVI_FILE_QUERY,fid,ns=ns,nl=nl,nb=nb,$dims=dims,fname=fname,bnames=bnames IF~N_ELEMENTS(pos)THENpos=LINDGEN(nb)IF~N_ELEMENTS(inside)THENinside=1IF~KEYWORD_SET(outFile)THENoutFile=envi_get_tmp() ;读取shp文件的信息oshp=OBJ_NEW('IDLffShape',shpFile)IF~OBJ_
9、VALID(oshp)THENRETURNoshp->GETPROPERTY,n_entities=n_ent,$;记录个数Attribute_info=attr_info,$;属性信息,结构体,name为属性名ATTRIBUTE_NAMES=attr_names,$n_attributes=n_attr,$;属性个数Entity_type=ent_type;记录类型 iProj=ENVI_PROJ_CREATE(/geographic);自动读取prj文件获取投影坐标系potPos=STRPOS(shpFile,