void Observation::printDepths(Rect r)
{
    std::cout << "toplam feat:" <<  Observation::areaFromII<double>(sparse->cumNumFeats, r.x1, r.y1, r.x2, r.y2) << std::endl;
    int numFeats = 0;
    double totDepth = 0;
    for (int j=0; j<sparse->cumDepths.rows; ++j)
    {
        if (j<r.y1 || j>r.y2)
            continue;
        for (int i=0; i<sparse->cumDepths.cols; ++i)
        {
            if (i<r.x1 || i>r.x2)
                continue;

            if (!(i<r.x2 && i>r.x1 && j<r.y2 && j>r.y1))
                continue;

            if (1 != Observation::areaFromII<double>(sparse->cumNumFeats, i, j, i, j))
                continue;
            double depth = Observation::areaFromII<double>(sparse->cumDepths, i, j, i, j);
            totDepth += depth;
            ++numFeats;
            //std::cout << "derinlik #"<< ++numFeats <<": "<< depth << std::endl;
        }
    }
    double meanDepth = totDepth/numFeats;
    std::cout <<  "ortalama: " << meanDepth << std::endl;
    numFeats = 0;
    for (int j=0; j<sparse->cumDepths.rows; ++j)
    {
        if (j<r.y1 || j>r.y2)
            continue;
        for (int i=0; i<sparse->cumDepths.cols; ++i)
        {
            if (i<r.x1 || i>r.x2)
                continue;

            if (!(i<r.x2 && i>r.x1 && j<r.y2 && j>r.y1))
                continue;

            if (1 != Observation::areaFromII<double>(sparse->cumNumFeats, i, j, i, j))
                continue;
            double depth = Observation::areaFromII<double>(sparse->cumDepths, i, j, i, j);
            totDepth += depth;
            std::cout << "derinlik sapmasi #"<< ++numFeats <<": "<< depth-meanDepth << std::endl;
        }
    }
    std::cout << "Diyor ki; " <<  depthVar(r.x1,r.y1,r.x2,r.y2) << std::endl;
}
//----------------------------------------
void CExternalFilesAvisoGrid::AddVirtualVariables()
{
  int32_t dimId = -1;

  try
  {
    CheckNetCDFDimensions();
  }
  catch(CException& e)
  {
    throw CException(CTools::Format("ERROR: CExternalFilesAvisoGrid::AddVirtualVariables - %s", e.what()),
                    BRATHL_LOGIC_ERROR);
  }


  CStringMap mapAttributes;
  //--------------
  // add latitude var
  //--------------
  mapAttributes.RemoveAll();
  mapAttributes.Insert(STANDARD_NAME_ATTR, "latitude");
  
  dimId = m_latDim->GetDimId();

  AddVar(dimId, CExternalFilesAvisoGrid::m_LAT_DIM_NAME, "Latitude of measurement", CLatLonPoint::m_DEFAULT_UNIT_LATITUDE, NC_DOUBLE,
         m_nbLatitudes, CExternalFilesAvisoGrid::m_LAT_DIM_NAME, dimId, &mapAttributes);


  CNetCDFCoordinateAxis latVar(CExternalFilesAvisoGrid::m_LAT_DIM_NAME, CLatLonPoint::m_DEFAULT_UNIT_LATITUDE, Latitude);
  latVar.AddNetCDFDim(*m_latDim);

  m_latDim->AddCoordinateVariable(latVar.GetName());
  m_file.AddNetCDFVarDef(latVar, true);


  //--------------
  // add longitude var
  //--------------
  mapAttributes.RemoveAll();
  mapAttributes.Insert(STANDARD_NAME_ATTR, "longitude");

  dimId = m_lonDim->GetDimId();

  AddVar(dimId, CExternalFilesAvisoGrid::m_LON_DIM_NAME, "Longitude of measurement", CLatLonPoint::m_DEFAULT_UNIT_LONGITUDE, NC_DOUBLE,
         m_nbLongitudes, CExternalFilesAvisoGrid::m_LON_DIM_NAME, dimId, &mapAttributes);


  CNetCDFCoordinateAxis lonVar(CExternalFilesAvisoGrid::m_LON_DIM_NAME, CLatLonPoint::m_DEFAULT_UNIT_LONGITUDE, Longitude);
  lonVar.AddNetCDFDim(*m_lonDim);

  m_lonDim->AddCoordinateVariable(lonVar.GetName());
  m_file.AddNetCDFVarDef(lonVar, true);


  //--------------
  // add depth
  //--------------
  if (m_file.VarExists(CExternalFilesAvisoGrid::m_INTERNAL_DEPTH_DIM_NAME))
  {
    AddVar(CExternalFilesAvisoGrid::m_INTERNAL_DEPTH_DIM_NAME);
  }
  else
  {
    mapAttributes.RemoveAll();
    mapAttributes.Insert(STANDARD_NAME_ATTR, "depth");

    dimId = m_depthDim->GetDimId();

    AddVar(dimId, CExternalFilesAvisoGrid::m_INTERNAL_DEPTH_DIM_NAME, "Depth layer", "count", NC_DOUBLE,
          m_nbDepths, CExternalFilesAvisoGrid::m_INTERNAL_DEPTH_DIM_NAME, dimId, &mapAttributes);

    CNetCDFCoordinateAxis depthVar(CExternalFilesAvisoGrid::m_INTERNAL_DEPTH_DIM_NAME, "count", Z);
    depthVar.AddNetCDFDim(*m_depthDim);

    m_depthDim->AddCoordinateVariable(depthVar.GetName());
    m_file.AddNetCDFVarDef(depthVar, true);

  }





}