pkwuhp
路人甲
路人甲
  • 注册日期2003-09-15
  • 发帖数10
  • QQ
  • 铜币172枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1157回复:0

[原创]新建栅格的代码,,VC++,请有空帮我看看?

楼主#
更多 发布于:2006-06-11 15:21
我这两天在写新建栅格的代码,到现在也没有调通,栅格是生成了,但栅格的值给不了,我试过IPixelblock->getsafearry(),然后再IPixelblock->put_safearry()回去,不行。
<DIV>也试过了从IPixelblock3->get_PixelDataByRef(0,;pval);得到变量,然后去pval给值 ,好象也不行, 不知道为什么?</DIV>
<DIV>我能参考一下您的代码么?下面是写的代码,请指教:</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>CString szAppName("D:<A rel=nofollow><FONT color=#014982>\\raster</FONT></A>");<BR> IWorkspaceFactoryPtr ipWsFact(CLSID_RasterWorkspaceFactory);<BR> IWorkspacePtr ipWorkspace;<BR> ipWsFact->OpenFromFile(szAppName.AllocSysString(), 0, ;ipWorkspace);<BR> <BR> srand(unsigned(time(NULL)));<BR> CString szFileName;<BR> int num = rand();<BR> szFileName.Format("Raster_%d", num);<BR><BR><BR> IPointPtr ipPoint(CLSID_Point);<BR> ipPoint->PutCoords(0,0);<BR> IRasterWorkspace2Ptr ipRasterWorkspace(ipWorkspace);<BR> IRasterDatasetPtr ipRasterDataset;<BR> ipRasterWorkspace->CreateRasterDataset(szFileName.AllocSysString(),<BR>  _bstr_t("IMAGINE Image"),<BR>  ipPoint,100,100,1,1,1,PT_DOUBLE,NULL,VARIANT_TRUE, ;ipRasterDataset);<BR> IRasterBandCollectionPtr ipRasterBandCollection(ipRasterDataset);<BR> IRasterBandPtr ipRasterBand;<BR> ipRasterBandCollection->Item(0, ;ipRasterBand);<BR> IRawPixelsPtr ipRaswPixels(ipRasterBand);<BR> IPixelBlockPtr ipPixelBlock;<BR> IRasterPropsPtr ipRasterProps(ipRaswPixels);<BR> <BR> IPntPtr ipPnt(CLSID_DblPnt);<BR> ipPnt->SetCoords(0,0);<BR> IPntPtr ipSize(CLSID_DblPnt);<BR> long dblWidth,dblHeight;<BR> ipRasterProps->get_Width(;dblWidth);<BR> ipRasterProps->get_Height(;dblHeight);<BR> <BR> ipSize->SetCoords(dblWidth,dblHeight);<BR> ipRaswPixels->CreatePixelBlock(ipSize, ;ipPixelBlock);<BR> ipRaswPixels->Read(ipPnt, ipPixelBlock);<BR> <BR> VARIANT var;</DIV>
<DIV>Var.vt = VT_ARRAY |VT_R8<BR>IPixelBlock3Ptr ipPixelBlock(ipPixelBlock);<BR> ipPixelBlock->get_PixelDataByRef(0, ;var);<BR> // ipPixelData <BR> long size = dblWidth*dblHeight;<BR> for(long k =0; k< size; k++)<BR> {<BR>    SafeArrayPutElement(var.parray, ;k, (void*);k) ;<BR> }<BR> IUnknownPtr ipUnknown;<BR> ipRaswPixels->AcquireCache(;ipUnknown);<BR> ipRaswPixels->Write(ipPnt, ipPixelBlock);<BR> long num_refs;<BR> ipRaswPixels->ReturnCache(ipUnknown, ;num_refs);</DIV>
喜欢0 评分0
游客

返回顶部