DTED 파일을 다른 형식으로 변환하려고하므로 응용 프로그램에 표시 할 수 있습니다. 이제는 JPEG 형식을 대상으로합니다. 내가 필요한 것은 기본적으로 gdal_translate 명령이지만 C++ API를 사용하는 것입니다. 내가 GDAL C++ API를 사용하고 있는데 내가 입력 DTED 파일을 읽고 문제없이 읽을 수DTED를 다른 형식으로 변환
는 :
GDALAllRegister();
GDALDataset *poDataset;
poDataset = (GDALDataset *) GDALOpen("n43.dt2", GA_ReadOnly);
if(poDataset == NULL)
{
return 0;
}
또한 문제없이 해당 밴드에 액세스 할 수 있습니다.
GDALRasterBand *poBand;
int nBlockXSize, nBlockYSize;
int bGotMin, bGotMax;
double adfMinMax[2];
poBand = poDataset->GetRasterBand(1);
poBand->GetBlockSize(&nBlockXSize, &nBlockYSize);
printf("Block=%dx%d Type=%s, ColorInterp=%s\n",
nBlockXSize, nBlockYSize,
GDALGetDataTypeName(poBand->GetRasterDataType()),
GDALGetColorInterpretationName(
poBand->GetColorInterpretation()));
adfMinMax[0] = poBand->GetMinimum(&bGotMin);
adfMinMax[1] = poBand->GetMaximum(&bGotMax);
if(! (bGotMin && bGotMax))
GDALComputeRasterMinMax((GDALRasterBandH)poBand, TRUE, adfMinMax);
printf("Min=%.3fd, Max=%.3f\n", adfMinMax[0], adfMinMax[1]);
if(poBand->GetOverviewCount() > 0)
printf("Band has %d overviews.\n", poBand->GetOverviewCount());
if(poBand->GetColorTable() != NULL)
printf("Band has a color table with %d entries.\n",
poBand->GetColorTable()->GetColorEntryCount());
그러나 원하는 드라이버를 사용하여이 밴드를 다른 데이터 세트에 추가하는 방법을 알 수 없습니다. AddBand 함수를 사용하려고하면 응용 프로그램이 충돌합니다.
float *pafScanline;
int nXSize = poBand->GetXSize();
pafScanline = (float *) CPLMalloc(sizeof(float)*nXSize);
poBand->RasterIO(GF_Read, 0, 0, nXSize, 1,
pafScanline, nXSize, 1, GDT_Float32,
0, 0);
GDALClose(poDataset);
GDALDataset *resDataset;
GDALRasterBand *resBand;
resDataset->AddBand (GDT_Float32, NULL);//<-application crashes here
/*resBand = resDataset->GetRasterBand(1);
resBand->RasterIO(GF_Write, 0, 0, nXSize, 1,
pafScanline, nXSize, 1, GDT_Float32,
0, 0);*/
그래서 내가하려는 것은 내가 원하는 것을하기위한 적절한 방법이 아니라는 것입니다. 내가 잘못하고있는 것을 나에게 설명해 주시겠습니까?