erdasimge数据c++环境下读取Word文档格式.docx

上传人:b****3 文档编号:6360408 上传时间:2023-05-06 格式:DOCX 页数:13 大小:18.92KB
下载 相关 举报
erdasimge数据c++环境下读取Word文档格式.docx_第1页
第1页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第2页
第2页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第3页
第3页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第4页
第4页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第5页
第5页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第6页
第6页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第7页
第7页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第8页
第8页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第9页
第9页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第10页
第10页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第11页
第11页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第12页
第12页 / 共13页
erdasimge数据c++环境下读取Word文档格式.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

erdasimge数据c++环境下读取Word文档格式.docx

《erdasimge数据c++环境下读取Word文档格式.docx》由会员分享,可在线阅读,更多相关《erdasimge数据c++环境下读取Word文档格式.docx(13页珍藏版)》请在冰点文库上搜索。

erdasimge数据c++环境下读取Word文档格式.docx

doubleGeoX,GeoY;

x,y;

longindex=0;

for(inti=0;

i<

GetRasterCount();

i++)

if(adfGeoTransform[5]<

0.0) 

//坐标变换

GdalToWorld(adfGeoTransform,0,pDataset->

GetRasterYSize(),GeoX, 

GeoY);

else

adfGeoTransform[5]*=-1.0;

}

Cellsize=adfGeoTransform[1];

xMin=GeoX;

yMin=GeoY;

HFARasterBand 

*pBand;

pBand=pDataset->

GetRasterBand(i+1);

//从1开始计数,具体的波段

doubleofffset=pBand->

GetOffset();

//波段中的偏移量

float*pScanline=(float*)malloc(sizeof(float)*pDataset->

GetRasterXSize());

//沿X轴长度的扫描线,

intiRows= 

GetRasterYSize();

//行数

intiColumns=pDataset->

GetRasterXSize();

//列数

doubledMin=99999;

doubledMax=-99999;

//准备记录高程数值的最小和最大数值

POINT3d*p3dDEMGridPoint=newPOINT3d[iRows*iColumns];

//addedbyhoutao20071029

for(y=0;

y<

iRows;

y++)

pBand->

RasterIO(GF_Read,0,y,pDataset->

GetRasterXSize(),1, 

pScanline,pDataset->

GetRasterXSize(),1,GDT_Float32, 

0,0);

//读取数据到pScanline中

for(x=0;

x<

iColumns;

x++)

GdalToWorld(adfGeoTransform,x,y,GeoX, 

WorldToGeoView(xMin,yMin,Cellsize,GeoX,GeoY,x_pos,y_pos);

index=y*iColumns+x;

p3dDEMGridPoint[index][0]=x_pos;

p3dDEMGridPoint[index][1]=y_pos;

//记录数据

p3dDEMGridPoint[index][2]=pScanline[x]/200;

//pScanline[x]+offfset;

if(p3dDEMGridPoint[index][2]>

-500&

&

p3dDEMGridPoint[index][2]<

9000) 

//高程数值在正常的范围内

//寻找最小数值

if(dMin>

p3dDEMGridPoint[index][2])dMin=p3dDEMGridPoint[index][2];

if(dMax<

p3dDEMGridPoint[index][2])dMax=p3dDEMGridPoint[index][2];

//对X轴循环结束

//对Y轴循环结束

m_p3dDEMGrid->

SetRows(iRows);

//记下行数

SetColumns(iColumns);

//记下列数

SetSurfacePoint(p3dDEMGridPoint);

//设置点集

SetZMin(dMin);

//记下Z轴最小数值

SetZMax(dMax);

//记下Z轴最大数值

SetXMin(xMin);

//记下X轴最小数值

SetXMax(xMin+iColumns*Cellsize);

//记下X轴最大数值

SetYMin(yMin);

//记下Y轴最小数值

SetYMax(yMin+iRows*Cellsize);

//记下Y轴最大数值

free(pScanline);

//结束这个波段的循环

returntrue;

HFADataset*ImportDEMDataERDASImg:

Open(LPCSTRlpszPathName) 

//返回dataset;

来源于:

GDALDataset*HFADataset:

Open(GDALOpenInfo*poOpenInfo)

HFAHandle 

hHFA;

i;

hHFA=HFAOpen(lpszPathName);

//打开文件 

if(hHFA==NULL)

returnNULL;

//创建对应的数据集,如果成功,将是返回的结果

HFADataset 

*poDS;

poDS=newHFADataset();

poDS->

hHFA=hHFA;

//将HFAOpen()函数得到的结果赋值给新建立的Dataset

HFAGetRasterInfo(hHFA,&

nRasterXSize,&

nRasterYSize,&

nBands);

//通过hHFA,得到基本信息

if(poDS->

nBands==0)

deletepoDS;

//返回结果:

nRasterXSize==0||poDS->

nRasterYSize==0)

//通过hHFA,得到变换信息

HFAGetGeoTransform(hHFA,poDS->

adfGeoTransform);

//得到投影信息

//poDS->

ReadProjection();

//

//新建各个波段数据

for(i=0;

i<

poDS->

nBands;

SetBand(i+1,newHFARasterBand(poDS,i+1,-1));

// 

-1代表HFARasterBand->

poDS=poDS;

HFARasterBand*poBand=(HFARasterBand*)poDS->

poBand->

bMetadataDirty=FALSE;

return(poDS);

HFAHandleImportDEMDataERDASImg:

HFAOpen(LPCSTRlpszPathName 

) 

//来源:

HFAHandleHFAOpen(constchar*pszFilename,constchar*pszAccess)

HANDLE 

hFile;

char 

szHeader[16];

HFAInfo_t 

*psInfo;

GUInt32 

nHeaderPos;

HFAFileOperatefileOperate;

hFile=fileOperate.FOpenL(lpszPathName);

if(hFile==INVALID_HANDLE_VALUE)

if(fileOperate.FReadL(szHeader,16,1,hFile)<

1)

if(!

EQUALN(szHeader,"

EHFA_HEADER_TAG"

15))

psInfo=(HFAInfo_t*)calloc(sizeof(HFAInfo_t),1);

psInfo->

hFile=hFile;

fileOperate.FReadL(&

nHeaderPos,sizeof(GInt32),1,hFile);

//读取文件头

fileOperate.FSeekL(hFile,nHeaderPos,SEEK_SET);

(psInfo->

nVersion),sizeof(GInt32),1,hFile);

fileOperate.FReadL(szHeader,4,1,hFile);

nRootPos),sizeof(GInt32),1,hFile);

//读取psInfo->

nRootPos

nEntryHeaderLength),sizeof(GInt16),1,hFile);

nDictionaryPos),sizeof(GInt32),1,hFile);

fileOperate.FSeekL(hFile,0,SEEK_END);

nEndOfFile=(GUInt32)fileOperate.FTellL(hFile);

//实例化根结点

poRoot=newHFAEntry(psInfo,psInfo->

nRootPos,NULL,NULL);

pszDictionary=HFAGetDictionary(psInfo);

poDictionary=newHFADictionary(psInfo->

pszDictionary);

HFAParseBandInfo(psInfo);

returnpsInfo;

CPLErrImportDEMDataERDASImg:

HFAGetRasterInfo(HFAHandlehHFA,int*pnXSize,int*pnYSize,int*pnBands)

if(pnXSize!

*pnXSize=hHFA->

nXSize;

if(pnYSize!

*pnYSize=hHFA->

nYSize;

if(pnBands!

*pnBands=hHFA->

returnCE_None;

HFAParseBandInfo(HFAInfo_t*psInfo)

HFAEntry 

*poNode;

nBands=0;

poNode=psInfo->

poRoot->

GetChild();

while(poNode!

=NULL) 

//当结点不为空

if(EQUAL(poNode->

GetType(),"

Eimg_Layer"

)&

poNode->

GetIntField("

width"

)>

0&

height"

0)

if(psInfo->

nXSize=poNode->

);

nYSize=poNode->

elseif(poNode->

)!

=psInfo->

nXSize||poNode->

nYSize)

//CPLAssert(FALSE);

returnCE_Failure;

papoBand=(HFABand**) 

realloc(psInfo->

papoBand,sizeof(HFABand*)*(psInfo->

nBands+1));

papoBand[psInfo->

nBands]=newHFABand(psInfo,poNode);

nBands++;

poNode=poNode->

GetNext();

/************************************************************************/

/* 

HFAGetDictionary() 

*/

char*ImportDEMDataERDASImg:

HFAGetDictionary(HFAHandlehHFA) 

//HFAGetDictionary(HFAHandlehHFA)

nDictMax=100;

*pszDictionary=(char*)malloc(nDictMax);

nDictSize=0;

fileOperate.FSeekL(hHFA->

hFile,hHFA->

nDictionaryPos,SEEK_SET);

while(TRUE)

if(nDictSize>

=nDictMax-1)

nDictMax=nDictSize*2+100;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2