LuciadCPillar support for GeoTIFF

LuciadCPillar supports the decoding of GeoTIFF data through the GDAL library.

The GdalModelDecoderGdalModelDecoderGdalModelDecoder reference documentation lists the supported GeoTIFF features and the limitations.

Decoding example

Program: Decoding GeoTIFF data
luciad::expected<std::shared_ptr<Model>, ErrorInfo> modelExpected = GdalModelDecoder::decode(source);
if (modelExpected.has_value()) {
  auto model = std::dynamic_pointer_cast<IRasterModel>(*modelExpected);
  if (model != nullptr) {
    // ...
  }
} else {
  ErrorInfo errorInfo = modelExpected.error();
  std::cout << "could not be decoded: " << errorInfo.getMessage();
}
std::cout << std::endl;
try
{
    var model = GdalModelDecoder.Decode(source);
    if (model is IRasterModel rasterModel)
    {
        // ...
    }
}
catch (IOException exception)
{
    Console.Error.WriteLine("Failed to open file '" + source + "': " + exception.Message);
}
try {
  Model model = GdalModelDecoder.decode(source);
  if (model instanceof IRasterModel) {
    IRasterModel rasterModel = (IRasterModel) model;
    // ...
  }
} catch (IOException exception) {
  Log.w("", "Failed to open file '" + source + "': " + exception.getMessage());
}

See Visualizing Raster Data for more information about visualizing raster data.