Ejemplo n.º 1
0
 void updateRasterElement(DataElement* pElement)
 {
    RasterElement* pRasterElement = dynamic_cast<RasterElement*>(pElement);
    if (pRasterElement == NULL)
    {
       setLastError(SIMPLE_BAD_PARAMS);
       return;
    }
    pRasterElement->updateData();
    setLastError(SIMPLE_NO_ERROR);
 }
Ejemplo n.º 2
0
   DataElement* createRasterElement(const char* pName, RasterElementArgs args)
   {
      if (pName == NULL || args.location > 2)
      {
         setLastError(SIMPLE_BAD_PARAMS);
         return NULL;
      }

      // Check for an existing element with the name
      if (getDataElement(pName, TypeConverter::toString<RasterElement>(), 0) != NULL)
      {
         setLastError(SIMPLE_EXISTS);
         return NULL;
      }

      RasterElement* pElement = RasterUtilities::createRasterElement(std::string(pName), args.numRows,
         args.numColumns, args.numBands, static_cast<EncodingTypeEnum>(args.encodingType),
         static_cast<InterleaveFormatTypeEnum>(args.interleaveFormat), args.location != 2, args.pParent);
      if (pElement == NULL)
      {
         switch (args.location)
         {
         case 0:
            pElement = RasterUtilities::createRasterElement(std::string(pName), args.numRows,
               args.numColumns, args.numBands, static_cast<EncodingTypeEnum>(args.encodingType),
               static_cast<InterleaveFormatTypeEnum>(args.interleaveFormat), false, args.pParent);
            if (pElement == NULL)
            {
               setLastError(SIMPLE_OTHER_FAILURE);
               return NULL;
            }
            break;
         case 1:
            setLastError(SIMPLE_NO_MEM);
            return NULL;
         case 2:
            setLastError(SIMPLE_OTHER_FAILURE);
            return NULL;
         default:
            setLastError(SIMPLE_BAD_PARAMS);
            return NULL;
         }
      }
      if (args.pBadValues != NULL && args.numBadValues > 0)
      {
         RasterDataDescriptor* pDesc = static_cast<RasterDataDescriptor*>(pElement->getDataDescriptor());
         if (pDesc != NULL)
         {
            std::vector<int> badValues;
            badValues.reserve(args.numBadValues);
            for (uint32_t idx = 0; idx < args.numBadValues; ++idx)
            {
               badValues.push_back(args.pBadValues[idx]);
            }
            pDesc->setBadValues(badValues);

            // set on the statistics objects
            const std::vector<DimensionDescriptor>& allBands = pDesc->getBands();
            for (std::vector<DimensionDescriptor>::const_iterator band = allBands.begin();
                 band != allBands.end(); ++band)
            {
               if (band->isValid())
               {
                  Statistics* pStats = pElement->getStatistics(*band);
                  if (pStats != NULL)
                  {
                     pStats->setBadValues(badValues);
                  }
               }
            }
            pElement->updateData();
         }
      }

      setLastError(SIMPLE_NO_ERROR);
      return pElement;
   }