unsigned char LandsatGeotiffImporter::getFileAffinity(const std::string& filename)
{
   if (filename.empty())
   {
      return CAN_NOT_LOAD;
   }
   bool originallyTiff = false;
   std::string metadataFile = determineMetadataFile(filename, &originallyTiff);
   bool readMetadata = false;
   FactoryResource<DynamicObject> pImageMetadata = Landsat::parseMtlFile(metadataFile, readMetadata);
   if (!readMetadata)
   {
      return CAN_NOT_LOAD;
   }
   std::string spacecraft = dv_cast<std::string>(
      pImageMetadata->getAttributeByPath("LANDSAT_MTL/L1_METADATA_FILE/PRODUCT_METADATA/SPACECRAFT_ID"), "");
   if (spacecraft != "Landsat5" && spacecraft != "Landsat7")
   {
      return CAN_NOT_LOAD;
   }
   if (originallyTiff)
   {
      return CAN_LOAD + 5; //override normal tiff importers
   }
   return CAN_LOAD;
}
std::vector<ImportDescriptor*> LandsatGeotiffImporter::getImportDescriptors(const std::string& filename)
{
   mErrors.clear();
   mWarnings.clear();

   std::vector<ImportDescriptor*> descriptors;
   if (filename.empty())
   {
      return descriptors;
   }

   std::string metadataFile = determineMetadataFile(filename);

   bool readMetadata = false;
   FactoryResource<DynamicObject> pImageMetadata = Landsat::parseMtlFile(metadataFile, readMetadata);
   if (!readMetadata)
   {
      return descriptors;
   }
   std::string spacecraft = dv_cast<std::string>(
      pImageMetadata->getAttributeByPath("LANDSAT_MTL/L1_METADATA_FILE/PRODUCT_METADATA/SPACECRAFT_ID"), "");
   if (spacecraft != "Landsat5" && spacecraft != "Landsat7")
   {
      return descriptors;
   }
   std::vector<ImportDescriptor*> vnirDescriptors = createImportDescriptors(metadataFile, pImageMetadata.get(),
      Landsat::LANDSAT_VNIR);
   std::vector<ImportDescriptor*> panDescriptors = createImportDescriptors(metadataFile, pImageMetadata.get(),
      Landsat::LANDSAT_PAN);
   std::vector<ImportDescriptor*> tirDescriptors = createImportDescriptors(metadataFile, pImageMetadata.get(),
      Landsat::LANDSAT_TIR);
   std::copy(vnirDescriptors.begin(), vnirDescriptors.end(), std::back_inserter(descriptors));
   std::copy(panDescriptors.begin(), panDescriptors.end(), std::back_inserter(descriptors));
   std::copy(tirDescriptors.begin(), tirDescriptors.end(), std::back_inserter(descriptors));

   return descriptors;
}