Я использую visual C++ gdal для чтения .gis-файла с моего рабочего стола, а затем вывод изображения этого файла (png/jpeg). Код принимает файл «input.gis», а затем создает «output.png». Вот мой рабочий код:Gdal: Увеличить размеры (разрешение) изображения, полученного после использования createcopy()
GDALDriver *poDriver;
GDALDataset *poDataset;
char **papszMetadata;
double adfGeoTransform[6];
int nBlockXSize, nBlockYSize;
int bGotMin, bGotMax;
double adfMinMax[2];
GDALAllRegister();
poDataset = (GDALDataset *) GDALOpen("C:\\input.gis", GA_ReadOnly);
if(poDataset == NULL)
{
MessageBox::Show("cannot open");
}
else
{
poDataset->GetGeoTransform(adfGeoTransform);
GDALRasterBand *poBand;
poBand = poDataset->GetRasterBand(1);
float *pafScanline;
int nXSize = poBand->GetXSize();
poBand->GetBlockSize(&nBlockXSize, &nBlockYSize);
adfMinMax[0] = poBand->GetMinimum(&bGotMin);
adfMinMax[1] = poBand->GetMaximum(&bGotMax);
if(! (bGotMin && bGotMax))
GDALComputeRasterMinMax((GDALRasterBandH)poBand, TRUE, adfMinMax);
poDriver = GetGDALDriverManager()->GetDriverByName("PNG");
if(poDriver == NULL)
printf("Cannot create image");
else
{
papszMetadata = poDriver->GetMetadata();
if(CSLFetchBoolean(papszMetadata, GDAL_DCAP_CREATECOPY, FALSE))
{
printf("Driver %s supports CreateCopy() method.\n", "png");
}
}
GDALDataset *poDstDS;
poDstDS = poDriver->CreateCopy("C:\\output.png", poDataset, FALSE, NULL, NULL, NULL);
if(poDstDS != NULL)
GDALClose((GDALDatasetH) poDstDS);
GDALClose((GDALDatasetH) poDataset);
}
Моя проблема, когда я использую createcopy() функция от GDAL размер выходного изображения всегда 99 X 99 (который я предполагаю, что это размер по умолчанию) , Как увеличить размер изображения для вывода (например, 512 x 512)?
Я написал этот код. Не могли бы вы проверить его? Теперь я получаю какой-то странный результат. Есть много разбросанных точек, которые не являются ожидаемым выходом. Вот мой код: https://www.dropbox.com/s/ed8zc1mso69i307/Code.txt?dl=0 –
Я не могу комментировать ваш конкретный код, так как я не говорю на C++, только на общих принципах GDAL. – Kersten
Не могли бы вы объяснить мне функцию Rasterio (GF_Read/GF_Write) в общих чертах? Мне трудно понять параметры в этом. Я тоже пробовал читать http://www.gdal.org/gdal_tutorial.html. Не могли бы вы рассказать? Заранее спасибо! –