Initialize a raster after opening. */
| 365 | Initialize a raster after opening. |
| 366 | */ |
| 367 | GDALError Raster::wake() |
| 368 | { |
| 369 | GDALError error = GDALError::None; |
| 370 | if (m_ds == NULL) |
| 371 | { |
| 372 | m_errorMsg = "Unable to open GDAL datasource '" + m_filename + "'."; |
| 373 | return GDALError::CantOpen; |
| 374 | } |
| 375 | |
| 376 | // An identity transform is returned on error. |
| 377 | if (m_ds->GetGeoTransform(m_forwardTransform.data()) != CE_None) |
| 378 | { |
| 379 | m_errorMsg = "Unable to get geotransform for raster '" + |
| 380 | m_filename + "'."; |
| 381 | error = GDALError::NoTransform; |
| 382 | } |
| 383 | |
| 384 | if (!GDALInvGeoTransform(m_forwardTransform.data(), |
| 385 | m_inverseTransform.data())) |
| 386 | { |
| 387 | m_errorMsg = "Geotransform for raster '" + m_filename + "' not " |
| 388 | "invertible"; |
| 389 | error = GDALError::NotInvertible; |
| 390 | } |
| 391 | |
| 392 | m_width = m_ds->GetRasterXSize(); |
| 393 | m_height = m_ds->GetRasterYSize(); |
| 394 | m_numBands = m_ds->GetRasterCount(); |
| 395 | |
| 396 | if (computePDALDimensionTypes() == GDALError::InvalidBand) |
| 397 | error = GDALError::InvalidBand; |
| 398 | return error; |
| 399 | } |
| 400 | |
| 401 | |
| 402 | /** |