📄 transform.cpp
字号:
#include <stdio.h>
#include <iostream.h>
void findMinMax(double array[],int size,double &min,double &max) //求dem数组的最大最小值
{
int i;
min=max=array[0];
for(i=1;i<size;i++)
{
if(array[i]<min)
min=array[i];
else if(array[i]>max)
max=array[i];
}
}
void main()
{
int i,j;
char dataType[100],dataUnit; //dem格式的文件类型命名
float dataVer,dataAlpha,dataCom;
double data_x0,data_y0,data_DX,data_DY;
int data_Row,data_Col,dataHzoom;
//读dem文件
FILE *fp;
fp=fopen("SL50.dem","r");
if(fp==NULL)
{
cout<< "can't open the DEM datafile!" <<endl;
return;
}
fscanf(fp,"%s %f %c %f %f %lf %lf %lf %lf %d %d %d ",
dataType,&dataVer,&dataUnit,&dataAlpha,&dataCom,
&data_x0,&data_y0,&data_DX,&data_DY,
&data_Row,&data_Col,&dataHzoom);
//计算grd格式的各参数
double DEM_x0,DEM_y0,Xend,Yend;
double Hmax,Hmin;
DEM_y0=data_x0;
Yend=data_x0+data_DX*(data_Col-1);
DEM_x0=data_y0-data_DY*(data_Row-1);
Xend=data_y0;
double *DEM;
DEM = new double[data_Col*data_Row];
if(DEM==NULL)
{
cout<<"内存不足!";
return;
}
for(i=0;i<data_Row*data_Col;i++)
{
Hmin=Hmax=100;
double tmp;
fscanf(fp,"%lf",&tmp);
if(tmp==-99999)
DEM[i]=-999.99;
else
DEM[i]=tmp/dataHzoom;
}
double *DEM_copy;
DEM_copy = new double[data_Col*data_Row];
long int size=0;
for(i=0;i<data_Row*data_Col;i++)
{
if(DEM[i]!=-999.99&&DEM[i]>0)
{
DEM_copy[size]=DEM[i];
size++;
}
}
findMinMax(DEM_copy,size,Hmin,Hmax); //dem高程最大最小值
delete DEM_copy;
fclose(fp);
//转化到grd格式下输出文件
FILE *fp1;
fp1=fopen("SL50.grd","w");
if(fp1==NULL)
{
cout<< "can't open the DEM datafile!" <<endl;
return;
}
fprintf(fp1,"%s\n%d %d\n%.4lf %.4lf\n%.4lf %.4lf\n%.2lf %.2lf\n",
"DSAA",data_Col,data_Row,
DEM_y0,Yend,
DEM_x0,Xend,
Hmin,Hmax);
/* for(j=0;j<data_Row*data_Col;j++)
{
//int num=1;
fprintf(fp1,"%.0lf ",DEM[j]);
if((j+1)%10==0)
fprintf(fp1,"\n");
if((j+1)%data_Col==0)
fprintf(fp1,"\n");
//num++;
}
*/
for(i=0;i<data_Row;i++)
{
for(j=0;j<data_Col;j++)
{
fprintf(fp1,"%.6lf ",DEM[i*data_Col+j]);
if((j+1)%10==0)
fprintf(fp1,"\n");
}
fprintf(fp1,"\n");
}
delete DEM;
fclose(fp1);
printf("Over");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -