Exemple #1
0
bool ossimSlopeUtil::initialize(const ossimKeywordlist& kwl)
{
   clear();

   // Base class first:
   if (!ossimUtility::initialize(kwl))
      return false;

   ossimString value;
   value = kwl.find(CENTER_KW);
   if (!value.empty())
   {
      vector <ossimString> coordstr;
      value.split(coordstr, ossimString(" ,"), false);
      if (coordstr.size() == 2)
      {
         m_centerGpt.lat = coordstr[0].toDouble();
         m_centerGpt.lon = coordstr[1].toDouble();
         m_centerGpt.hgt = 0.0;
      }
   }

   m_demFile = kwl.find(DEM_KW);
   if (m_demFile.empty())
      m_demFile = kwl.find(ossimKeywordNames::ELEVATION_CELL_KW);

   kwl.getBoolKeywordValue(m_remapToByte, REMAP_KW);

   m_lutFile = kwl.find(LUT_KW);

   value = kwl.find(ROI_KW);
   if (!value.empty())
      m_aoiRadius = value.toDouble();

   m_slopeFile = kwl.find(ossimKeywordNames::OUTPUT_FILE_KW);
   if (value.empty())
   {
      ostringstream msg;
      msg <<"No output slope file provided."<<ends;
      ossimException e (msg.str());
      throw e;
   }

   if (m_demFile.empty() && m_centerGpt.hasNans())
   {
      ostringstream msg;
      msg <<"No center point provided and no DEM file provided. Cannot compute slope image."<<ends;
      ossimException e (msg.str());
      throw e;
   }

   return initializeChain();
}
Exemple #2
0
bool ossimViewshedUtil::initialize(const ossimKeywordlist& kwl)
{
   // Base class first:
   if (!ossimUtility::initialize(kwl))
      return false;

   ossimString value;

   m_demFile = kwl.find("dem_file");
   if (m_demFile.empty())
      m_demFile = kwl.find(ossimKeywordNames::ELEVATION_CELL_KW);


   value = kwl.find("fov");
   if (!value.empty())
   {
      vector <ossimString> coordstr;
      value.split(coordstr, ossimString(" ,"), false);
      if (coordstr.size() == 2)
      {
         m_startFov = coordstr[0].toDouble();
         m_stopFov = coordstr[1].toDouble();
         if (m_startFov < 0)
            m_startFov += 360.0;
      }
   }

   value = kwl.find("gsd");
   if (value.empty())
      value = kwl.find(ossimKeywordNames::METERS_PER_PIXEL_KW);
   if (!value.empty())
      m_gsd = value.toDouble();

   value = kwl.find("height_of_eye");
   if (!value.empty())
      m_obsHgtAbvTer = value.toDouble();

   m_horizonFile = kwl.find("horizon_file");

   m_lutFile = kwl.find("lut_file");

   value = kwl.find("observer");
   if (!value.empty())
   {
      vector <ossimString> coordstr;
      value.split(coordstr, ossimString(" ,"), false);
      if (coordstr.size() == 2)
      {
         m_observerGpt.lat = coordstr[0].toDouble();
         m_observerGpt.lon = coordstr[1].toDouble();
         m_observerGpt.hgt = 0.0;
      }
   }

   value = kwl.find("radius");
   if (!value.empty())
      m_visRadius = value.toDouble();

   value = kwl.find("reticle");
   if (!value.empty())
      m_reticleSize = value.toInt32();

   kwl.getBoolKeywordValue(m_threadBySector, "thread_by_sector");
   kwl.getBoolKeywordValue(m_simulation, "simulation");
   kwl.getBoolKeywordValue(m_outputSummary, "summary");

   value = kwl.find("size");
   if (!value.empty())
      m_halfWindow = value.toInt32();

   value = kwl.find(ossimKeywordNames::THREADS_KW);
   if (!value.empty())
      m_numThreads = value.toInt32();

   value = kwl.find("values");
   if (!value.empty())
   {
      vector <ossimString> coordstr;
      value.split(coordstr, ossimString(" ,"), false);
      if (coordstr.size() == 3)
      {
         m_visibleValue = coordstr[0].toUInt8();
         m_hiddenValue = coordstr[1].toUInt8();
         m_observerValue = coordstr[2].toUInt8();
      }
   }

   m_filename = kwl.find(ossimKeywordNames::OUTPUT_FILE_KW);
   if (value.empty())
   {
      ostringstream msg;
      msg <<"No output file name provided."<<ends;
      ossimException e (msg.str());
      throw e;
   }

  // Verify minimum required args were specified:
   if (m_demFile.empty() && (m_visRadius == 0) && (m_halfWindow == 0))
   {
      ostringstream msg;
      msg << "ossimViewshedUtil::initialize ERR: Keywordlist is underspecified." << ends;
      ossimException e (msg.str());
      throw e;
   }

   return initializeChain();
}