ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:98.31KB ,
资源ID:6554275      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/6554275.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(ArcGIS栅格处理总结.docx)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

ArcGIS栅格处理总结.docx

1、ArcGIS栅格处理总结 RealStyle-赵晓鲁 2012年9月28日 处理栅格数据用到的新的接口有:iconditionalop,Ipnt,IRasterDescriptor, IextractionOp,IrasterLayerExport,IRasterAnalysisEnvironment,ILogicalOp,IReclassOp,IMathOp,INumberRemap,IRemap,ISurfaceop,Irawpixels(很有用) 坐标值位置: 地图坐标最小X、Y值在左下角,IEnvelope最小值是左下角,最大值是右上角,栅格数据最小行列值是在左上角,最大

2、行列值是在右下角。 IRasterAnalysisEnvironment:一般和IextractionOp一起用,用来设置提取出来的栅格数据的一些属性信息。 遍历栅格数据所有数据,将像素值存储在二维数组中 IWorkspaceFactory pWksfact = new RasterWorkspaceFactoryClass(); IRasterWorkspace pRwks = pWksfact.OpenFromFile(@"F:\栅格数据处理集\Temp\data", 0) as IRasterWorkspace ; IRaster pRaster = pRwks.OpenRas

3、terDataset("003647.tif").CreateDefaultRaster(); IRasterProps pRprops = pRaster as IRasterProps ; IRasterBandCollection pRbcoll = pRaster as IRasterBandCollection ; int pRbcount = pRbcoll.Count ; IPixelBlock3 pPblock3 = null; GC.Collect();//释放内存,强制回收垃圾内存 byte[,] pByte = new byte[pRprops.Width

4、 pRprops.Height * pRbcount];//内存占有量为byte类型所占的字节数*pRprops.Width*pRprops.Height * pRbcount System.Array pArray = null;//定义一个数组,用来存储pPblock3.get_PixelData(pTindex)获得的像素块的值 for (int pTindex = 0; pTindex < pRbcount; pTindex++)//遍历每个波段 { IRasterCursor pRcursor = pRaster.CreateCursor();//128行,全部列是一个pR

5、cursor.Next(), do { pPblock3 = pRcursor.PixelBlock as IPixelBlock3;//将每个128行的值放在pPblock3中 pArray = pPblock3.get_PixelData(pTindex) as System.Array;//将相应波段的数值存储在数组中 for (int pW = 0; pW < pArray.GetLength(0); pW++)//列数 { for (int pH = 0; pH < pArray.GetLength(1); pH++)//行数 { pByte[pW, pH * (p

6、Tindex + 1)] = Convert.ToByte (pArray.GetValue(pW, pH));//给二维数组赋值 } } } while (pRcursor.Next());//获得下一个128行栅格数据 ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(pRcursor );//对对象进行内存释放 }//遍历每个波段 for (int pT = 0; pT < pByte.GetLength(0); pT++)//遍历二维数组 { for (int pTT = 0; pTT < pByte.GetLength(1);

7、pTT++) { int pp = Convert.ToInt32(pByte.GetValue(pT, pTT)); } }//遍历二维数组 1、 如果想将Tif转换为bmp,仅仅需要用到的AO的接口是Isaveas。 IWorkspaceFactory pWksfact=newRasterWorkspaceFactoryClass(); IRasterWorkspace pRwks = pWksfact.OpenFromFile(@"F:\Temp",0 ) as IRasterWorkspace ; IRasterDataset pRdataset = pRwks

8、OpenRasterDataset("cbers.tif"); IRaster2 pRaster = pRdataset.CreateDefaultRaster() as IRaster2 ; IRasterWorkspace2pRwks2=pWksfact.OpenFromFile(@"F:\Temp",0)asIRasterWorkspace2; ISaveAs pSaveas = pRaster as ISaveAs ; pSaveas.SaveAs("pCreat.BMP", pRwks2 as IWorkspace, "BMP"); 2、 修改栅格数据灰度值

9、没有用到isaveas 用到的接口是:IRasterCursor,IPixelBlock3,System.Array pArray ,IRasterEdit,IPnt IWorkspaceFactory pWksfact = new RasterWorkspaceFactoryClass(); IRasterWorkspace2 pRwks = pWksfact.OpenFromFile(@"F:\Temp", 0) as IRasterWorkspace2 ; IRaster2 pRaster = pRwks.OpenRasterDataset("cbers.tif").Crea

10、teDefaultRaster() as IRaster2 ; IRasterProps pRprops = pRaster as IRasterProps; IPoint pPoint = new PointClass () ; pPoint.PutCoords (0,0 ) ; IPnt pPnt = new DblPntClass(); pPnt.SetCoords(pRprops.Width,pRprops.Height );//确定范围 IRasterCursor pRcursor = pRaster.CreateCursorEx( pPnt );//确定一个

11、栅格指针的范围,ex:extent,所有要用ppnt, IPixelBlock3 pPblock = pRcursor.PixelBlock as IPixelBlock3 ; System.Array pArray = pPblock.get_PixelData(0) as System.Array; for (int pWidth = 0 ;pWidth < pRprops.Width ;pWidth ++ ) { for (int pHeight = 0; pHeight < pRprops.Height; pHeig

12、ht ++ ) { if (Convert.ToInt32(pPblock.GetVal(0, pWidth, pHeight)) == 0) { pArray.SetValue(Convert.ToByte ( 100),pWidth,pHeight);//将像素值存在数组里面 } } } pPbl

13、ock.set_PixelData(0, pArray);//对像素块进行修改 IRasterEdit pRedit = pRaster as IRasterEdit; IPnt pDblpnt = new DblPntClass(); pDblpnt.SetCoords(0,0 );//pdblpnt指的是左上角的坐标 pRedit.Write(pDblpnt , pPblock as IPixelBlock);//将灰度块写入栅格数据 栅格数据二值化:目的:一个是数据处理源的需要,再一个目的是栅格数据的大小可以变得很小。

14、 IWorkspaceFactory pWksfact = new RasterWorkspaceFactoryClass(); IRasterWorkspace pRwks = pWksfact.OpenFromFile(@"F:\栅格数据处理集\Temp\data",0) as IRasterWorkspace ; IRaster pRaster = pRwks.OpenRasterDataset("create1.tif").CreateDefaultRaster(); IGeoDataset pGeodataset = pRaster as IGeoDataset; IEn

15、velope pEnv = pGeodataset.Extent; IRasterCursor pRcursor = pRaster.CreateCursor(); IRasterProps pRprops = pRaster as IRasterProps ; //创建一个二值的图像 IRasterWorkspace2 pRwks2 = pRwks as IRasterWorkspace2; IPoint pPoint = new PointClass () ; pPoint.PutCoords (pEnv.XMin ,pEnv.YMin ) ; if (Director

16、y.Exists(@"F:\栅格数据处理集\Temp\data\TwoValue")) { IDataset pDds = pRwks2.OpenRasterDataset("TwoValue") as IDataset; if (pDds != null) pDds.Delete(); } IRasterDataset pRdataset = pRwks2.CreateRasterDataset( "TwoValue.tif","TIFF",pPoint ,pRprops.Width,pRprops.Height ,pRprops.MeanCellSize().X,pRprops

17、MeanCellSize().Y ,1,rstPixelType.PT_U1 ,pRprops.SpatialReference,true );//创建一个栅格数据集 IRaster pcR = pRwks.OpenRasterDataset ("TwoValue.tif").CreateDefaultRaster () ; System.Array pChangearr = new byte [pRprops.Width,pRprops.Height ];//定义一个二维数组,用来存储二值化的数据。 int pT = 0 ; int Pa = pRprops.Heigh

18、t / 128; do { IPixelBlock3 pPb = pRcursor.PixelBlock as IPixelBlock3; System.Array pArray = pPb.get_PixelData(0) as System.Array ; int pHH = 0; Pa = pRprops.Height / 128 -pT; pT = pT + 1; if (Pa >= 1) { pHH = 128; } else { pHH = pRprops.Height % 128; } for (int pH = 0; pH < pHH

19、 pH++) { for (int pW = 0; pW < pRprops.Width; pW++) { if (Convert.ToByte ( pArray.GetValue(pW, pH)) == 1) { pChangearr.SetValue(pArray.GetValue(pW, pH), pW, pH + 128 * (pT - 1));//赋值定义的数组 } } } } while (pRcursor.Next () ) ;//每128行遍历一次 IRaster2 pR2 =pRaster as IRaster2 ; IPnt pPnt = new

20、 DblPntClass () ; pPnt.SetCoords (pRprops.Width ,pRprops.Height ) ; IRasterCursor pR2cursor = pR2.CreateCursorEx (pPnt ) ; IPixelBlock3 pSpb = pR2cursor.PixelBlock as IPixelBlock3; IPnt pSpnt = new DblPntClass(); pSpnt.SetCoords(0, 0); pSpb.set_PixelData(0, pChangearr);//将数组赋值给pSpb IRaster

21、Edit pRedit = pcR as IRasterEdit; pRedit.Write(pSpnt, pSpb as IPixelBlock);//编辑栅格数据集,写完后,栅格数据就会是现在的值 模板提取: //找到模板,并将模板放在数组里 IWorkspaceFactory pRwksfact = new RasterWorkspaceFactoryClass(); IRasterWorkspace pRwks = pRwksfact.OpenFromFile(@"F:\栅格数据处理集\Temp\data", 0) as IRasterWorkspace ;

22、IRaster pModelraster = pRwks.OpenRasterDataset("extract_17001").CreateDefaultRaster(); IRaster2 pModelraster2 = pModelraster as IRaster2; IRasterProps pModelRprops = pModelraster as IRasterProps; //pModelRprops.NoDataValue = 0; IPnt pModelpnt = new DblPntClass(); pModelpnt.SetCoords(pModelRprop

23、s.Width,pModelRprops.Height ); IRasterCursor pModelrcursor = pModelraster2.CreateCursorEx(pModelpnt); IPixelBlock3 pModelppb3 = pModelrcursor.PixelBlock as IPixelBlock3; System.Array pModelarray = pModelppb3.get_PixelData(0) as System.Array; //找到模板,并将模板放在数组里 //找到源文件,将源文件存放到数组里 IRaster pOrir

24、aster = pRwks.OpenRasterDataset("17002L1").CreateDefaultRaster(); IRaster2 pOriraster2 = pOriraster as IRaster2; IRasterProps pOrirprops = pOriraster2 as IRasterProps; //pOrirprops.NoDataValue = 0; IPnt pOripnt = new DblPntClass(); pOripnt.SetCoords(pOrirprops.Width, pOrirprops.Height); IRaste

25、rCursor pOrircursor = pOriraster2.CreateCursorEx(pOripnt); IPixelBlock3 pOripb3 = pOrircursor.PixelBlock as IPixelBlock3; System.Array pOriarray = pOripb3.get_PixelData(0) as System.Array; //找到源文件,将源文件存放到数组里 //创建一个二值的栅格数据 if (Directory.Exists(@"F:\栅格数据处理集\Temp\data\PCreate")) { IDataset pTd

26、s = pRwks.OpenRasterDataset("PCreate") as IDataset; pTds.Delete(); } IGeoDataset pTgeodataset = pOriraster as IGeoDataset; IEnvelope pTenv = pTgeodataset.Extent; IPoint pCpoint = new PointClass(); pCpoint.PutCoords(pTenv.XMin, pTenv.YMin); IRasterWorkspace2 pRwks2 = pRwks as IRasterWorkspace2

27、 ; IRasterDataset pCrdataset = pRwks2.CreateRasterDataset("PCreate","GRID",pCpoint,pOrirprops.Width,pOrirprops.Height,pOrirprops.MeanCellSize().X ,pOrirprops.MeanCellSize().Y ,1,rstPixelType.PT_U1 ,pOrirprops.SpatialReference,true ); //创建一个二值的栅格数据 //创建一个二维数组 System.Array pCarray = new byte [pO

28、rirprops.Width ,pOrirprops.Height]; //计算模板中所有值平方的相加和 double pModelsun = 0; int pTemp = 0; for (int pH = 0; pH < pModelRprops.Height; pH++) { for (int pW = 0; pW < pModelRprops.Width;pW ++ ) { if (Convert.ToSByte ( pModelarray.GetValue (pW,pH ))>=0 ) { pTemp = Convert.ToInt16 ( pModelarr

29、ay.GetValue(pW, pH)); pModelsun = pModelsun + (Math.Pow(pTemp, 2)); } } } //遍历原始栅格数据的行列 double pMOmulti = 0; double pOrisun = 0; int pTMod = 0; int pTori = 0; double pScale = 0; for (int pH = 0; pH < pOrirprops.Height - pModelRprops.Height; pH++)//遍历每行 { try { for (int pW = 0; pW <

30、 pOrirprops.Width - pModelRprops.Width; pW++)//遍历每列 { if (Convert.ToSByte(pOriarray.GetValue(pW, pH)) >= 0) { pMOmulti = 0; pOrisun = 0; pTMod = 0; pTori = 0; for (int pMh = 0; pMh < pModelRprops.Height; pMh++)//遍历模型行 { for (int pMw = 0; pMw < pModelRprops.Width; pMw++)//遍历模型列 { if (Con

31、vert.ToSByte(pModelarray.GetValue(pMw, pMh)) >= 0) { pTori = Convert.ToSByte(pOriarray.GetValue(pW + pMw, pH + pMh)); pTMod = Convert.ToSByte(pModelarray.GetValue(pMw, pMh)); pMOmulti = pMOmulti + pTori * pTMod; pOrisun = pOrisun + Math.Pow(pTori, 2); } } } } if (pOrisun > 0) { pScal

32、e = pMOmulti / (Math.Sqrt(pModelsun) * Math.Sqrt(pOrisun)); if (pScale > 0.9) { for (int pMh = 0; pMh < pModelRprops.Height; pMh++)//遍历模型行 { for (int pMw = 0; pMw < pModelRprops.Width; pMw++)//遍历模型列 { pCarray.SetValue(Convert.ToByte (pOriarray.GetValue(pW + pMw, pH + pMh)), pW + pMw, pH + pMh

33、); } } } } } } catch { continue ; } } IRaster pCraster = pRwks.OpenRasterDataset("PCreate").CreateDefaultRaster(); IRaster2 pCr2 = pCraster as IRaster2; IRasterProps pCrprops = pCr2 as IRasterProps; IPnt pCpnt = new PntClass(); pCpnt.SetCoords(pCrprops.Width, pCrprops.Height); IRa

34、sterCursor pCrcur = pCr2.CreateCursorEx(pCpnt); IPixelBlock3 pCpb = pCrcur.PixelBlock as IPixelBlock3 ; pCpb.set_PixelData(0, pCarray); IRasterEdit pRedit = pCraster as IRasterEdit; IPnt pTlpnt = new PntClass(); pTlpnt.SetCoords(0, 0); pRedit.Write(pTlpnt, pCpb as IPixelBlock); pixel va

35、lue是栅格象元的值,stretched value是该象元显示时用的值。因显示器显示时必须把象元值转换到0—255显示,所以就有了stretched value。 IRasterProps pRprops = pRaster as IRasterProps; pRprops.NoDataValue = 2;为空白区域赋值,将nodata空白区域赋上pixel值,而不是stretched value。 单元值可正可负,可以是整型也可以是浮点型。在单元中,还可以使用 NoData 值来表示数据缺失。 显示具有 NoData 值的栅格时,所有渲染器可将 NoData 值设置为某个颜色或

36、无颜色;然而,“拉伸”渲染器可识别特定背景值并显示颜色或无颜色。 Nodata相关操作 在栅格数据进行叠加运算时,如果有些区域的值为nodata那么这些区域的值和其他任何栅格数据相加的在值都是nodata,所以有时候需要将nodata区域设置为0。 可以通过SetNull将有些值设置为nodata,也可以通过IsNull来确定哪些区域是nodata区域。 ILogicalOp pLogicalop = new RasterMathOpsClass();//获得ILogicalop接口,用于数学运算 IRaster pOutr = pLogicalop.IsNull(pRa

37、ster as IGeoDataset ) as IRaster ;//如果数据缺失,那么输出为1,否则输出为0. Con 可以将栅格数据中的某些值(通过条件查询)设置为想要的区域,将某些不想要的区域设置为其它值(可以是自己设置的也可以是输入的固定值) IConditionalOp: 方法Con, IConditionalOp. Con(IGeoDataset conditionalRaster, IGeoDataset trueRaster, ref object falseRaster) 方法: 不管conditionalRaster是仅有0和1的值,还是有

38、多个值的栅格数据, 只要是值大于0的栅格像素值,赋的值都是trueRaster,凡是值等于0的栅格像素值那么赋值为falseRaster,falseRaster可以为一个常数,也可以为一个栅格数据集(Raster)对应的像素值。 IConditionalOp. Con代码 IWorkspaceFactory pWksfact = new RasterWorkspaceFactoryClass(); IRasterWorkspace pRwks = pWksfact.OpenFromFile(@"F:\栅格数据处理集\Temp\data", 0) as IRasterWorksp

39、ace ; IRaster pRaster = pRwks.OpenRasterDataset("cbers.tif").CreateDefaultRaster(); IRaster pSraster = new RasterClass(); //object pint = 100;//object为常数 object pRa = pRaster;//object为栅格数据集 IConditionalOp pConditionalop = new RasterConditionalOpClass(); //pSraster = pConditionalop.Con(pRaster

40、 as IGeoDataset, pRaster as IGeoDataset , ref pint) as IRaster ;//object为常数 pSraster = pConditionalop.Con(pRaster as IGeoDataset, pRaster as IGeoDataset, ref pRa) as IRaster;//object为栅格数据集 ISaveAs pSa = pSraster as ISaveAs; pSa.SaveAs("nihao2.tif", pRwks as IWorkspace, "TIFF"); 使用“设为空函数”将值设置为 No

41、Data:在spatial analyst下的conditional下的set null。 要将值大于 5 的像元设置为 NoData,并且保留其他像元的原始值,请在工具对话框中使用以下参数: 输入条件栅格:InRas1 表达式:"Value < 5"(条件) 求值结果为 False 的输入栅格或常数值:InRas1(即不符合条件的像素值设置为输入栅格对应的值) 输出栅格:setnull_1 IConditionalOp:只是针对栅格数据只有两个值的0和1的栅格,如果只有0和1,那么将值为1的设置为空,值为0的仍然为0,或者是其它栅格(False Raster)数据相应位置的值。或

42、者栅格数据有多个值,0和大于0两类,当栅格数据有多个值时,值大于0的设置为空,值等于0的仍然是0或者是其它栅格数据(False Raster)相应位置的值。和conditional下的set null理解差不多,但是有区别,不能设置”sql语句”。 将大于0的值变为nodata,将等于0的值变为falseraster的栅格像素值。 用到的接口是 IConditionalOp方法是: SetNull 相应 的代码: IWorkspaceFactory pWksfact = new RasterWorkspaceFactoryClass(); IRasterWorkspace pRw

43、ks = pWksfact.OpenFromFile(@"F:\Temp",0) as IRasterWorkspace ; IRaster2 pRaster = pRwks.OpenRasterDataset("cbers.tif").CreateDefaultRaster() as IRaster2; IRaster2 pR2 = pRwks.OpenRasterDataset("hh").CreateDefaultRaster() as IRaster2; IConditionalOp pCondi = new RasterConditionalOpClass(); IGeo

44、Dataset pDataset = pRaster as IGeoDataset; IGeoDataset pFdataset = pR2 as IGeoDataset; IGeoDataset pOutdataset = pCondi.SetNull(pDataset ,pFdataset ); ISaveAs pSa = pOutdataset as ISaveAs; pSa.SaveAs( "nihao.tif",pRwks as IWorkspace ,"TIFF" ); 通过一个面的范围来提取栅格数据: IWorkspaceFactory pWksfact =

45、new RasterWorkspaceFactoryClass(); IRasterWorkspace pRwks = pWksfact.OpenFromFile(@"F:\Temp",0) as IRasterWorkspace ; IRaster2 pRaster = pRwks.OpenRasterDataset("cbers.tif").CreateDefaultRaster() as IRaster2; IRasterProps pRprops = pRaster as IRasterProps ; IExtractionOp pExtra = new RasterExtra

46、ctionOpClass(); IWorkspaceFactory pSwksfact = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pFwks = pSwksfact.OpenFromFile(@"F:\Temp", 0) as IFeatureWorkspace ; IFeatureClass pFclass = pFwks.OpenFeatureClass("mian"); IFeatureCursor pFcur = pFclass.Search(null,false ); IFeature pFeatu

47、re = pFcur.NextFeature(); IPolygon pPolygon = pFeature.Shape as IPolygon ; IWorkspace pOutwks = pWksfact.OpenFromFile(@"F:\Temp", 0); IGeoDataset pGeodataset = pRaster as IGeoDataset; IGeoDataset pOutgd = pExtra.Polygon(pGeodataset ,pPolygon,true ) as IGeoDataset ;//true指的是面内的栅格提取出来,

48、false指的是面外的栅格数据提取出来, IRaster pOutr = pOutgd as IRaster;//将Geodataset转换为iraster,而不是转换为irasterdataset,用isaveas来保存存储在内存中的栅格数据。 ISaveAs pSa = (ISaveAs ) pOutr ; pSa.SaveAs("jj.tif", pOutwks, "TIFF");//poutwks一定要是栅格工作空间工厂打开的工作空间,不能是其它工作空间工厂打开的工作空间。 通过属性提取栅格数据 IWorkspaceFactory pWksfact = new RasterW

49、orkspaceFactoryClass(); IRasterWorkspace pRwks = pWksfact.OpenFromFile(@"F:\Temp",0) as IRasterWorkspace ; IRaster2 pRaster = pRwks.OpenRasterDataset("cbers.tif").CreateDefaultRaster() as IRaster2; IRasterProps pRprops = pRaster as IRasterProps ; IExtractionOp pExtra = new RasterExtractionOpClas

50、s(); IQueryFilter pQueryfilter = new QueryFilterClass () ;//属性查询,查询到属性值是多少的像素。 pQueryfilter.WhereClause = "Value=109";//设置像素查询的条件。 IRasterDescriptor pRdescriptor = new RasterDescriptorClass();//栅格描述接口。 pRdescriptor.Create(pRaster as IRaster, pQueryfilter, "Value"); IWorkspaceFactory pRwks2 = n

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服