cCompiledObsRelGPS::cCompiledObsRelGPS
(
    cAppliApero &     anAppli,
    cDeclareObsRelGPS aXML
)   :
    mXML  (aXML),
    mAppli (&anAppli)
{
    cElRegex  anAutom(mXML.PatternSel(),10);

    const std::vector<cPoseCam*> & aVP = mAppli->VecAllPose();

    for (int aKP=0 ; aKP<int(aVP.size()) ; aKP++)
    {
        cPoseCam * aPose = aVP[aKP];
        if (anAutom.Match(aPose->Name()))
        {
            mVOrderedPose.push_back(aPose);
        }
    }

    cCmpPtrPoseTime aCmp;
    std::sort(mVOrderedPose.begin(),mVOrderedPose.end(),aCmp);

    for (int aKP=1 ; aKP<int(mVOrderedPose.size()) ; aKP++)
    {
        cPoseCam * aPC1 = mVOrderedPose[aKP-1];
        cPoseCam * aPC2 = mVOrderedPose[aKP];

        mVObs.push_back(mAppli->SetEq().NewEqRelativeGPS(aPC1->RF(),aPC2->RF()));
        // std::cout << "TTTT " << mVOrderedPose[aKP]->Name() << " " << mVOrderedPose[aKP]->Time() -  mVOrderedPose[aKP-1]->Time() << "\n";
    }
}
void cAppliApero::ExportMesuresFromCarteProf
     (
          const cExportMesuresFromCarteProf & anEM,
          const cCartes2Export &              aC
     )
{
    for (std::list<std::string>::const_iterator itIm1= aC.Im1().begin() ; itIm1!=aC.Im1().end() ; itIm1++)
    {
       cElRegex anAutom(aC.FilterIm2().Val(),10);
       std::string aNameN = mDC+mICNM->StdCorrect(aC.Nuage(),*itIm1,true);
       cElNuage3DMaille * aNuage = cElNuage3DMaille::FromFileIm(aNameN);
       cObsLiaisonMultiple* aPackM = PackMulOfIndAndNale(anEM.IdBdLiaisonIn(),*itIm1);

       const std::vector<cOneElemLiaisonMultiple *>  & aVELM = aPackM->VPoses();
       for (int aKP=0 ; aKP<int(aVELM.size()) ; aKP++)
       {
          cPoseCam * aPose2Compl = aVELM[aKP]->Pose();
          ElPackHomologue aPackH;
       
          if (anAutom.Match(aPose2Compl->Name())
              && aPackM->InitPack(aPackH,aPose2Compl->Name())
             )
          {
             for 
             (
                std::list<std::string>::const_iterator itS=aC.ImN().begin(); 
                itS!=aC.ImN().end(); 
                itS++
             )
             {
                if (*itS != *itIm1)
                {
                    ExportMesuresFromCarteProf (anEM,aC,aNuage,aPackH,aPose2Compl,*itS);
                }
             }
             if (anEM.KeyAssocAppuis().IsInit())
             {
                 cListeAppuis1Im aXmlApp; 
                 std::string aNameRes = mDC+mICNM->Assoc1To2(anEM.KeyAssocAppuis().Val(),aPose2Compl->Name(),*itIm1,true);
                 if (anEM.AppuisModeAdd().Val())
                 {
                     if (ELISE_fp::exist_file(aNameRes))
                     {
                        aXmlApp=StdGetObjFromFile<cListeAppuis1Im>
                             (
                                 aNameRes,
                                 StdGetFileXMLSpec("ParamChantierPhotogram.xml"),
                                 "ListeAppuis1Im",
                                 "ListeAppuis1Im"
                             );
                     }
                 }
                 aXmlApp.NameImage().SetVal(aPose2Compl->Name());
                 for 
                 (
                      ElPackHomologue::const_iterator itH=aPackH.begin();
                      itH!=aPackH.end();
                      itH++
                 )
                 {
                    Pt2dr aI1 = aNuage->Plani2Index(itH->P1());
                    if (aNuage->IndexHasContenuForInterpol(aI1))
                    {
                       cMesureAppuis aMA;
                       aMA.Im() = itH->P2();
                       aMA.Ter() = aNuage->PtOfIndexInterpol(aI1);
                       aXmlApp.Mesures().push_back(aMA);
                    }
                 }
                 MakeFileXML<cListeAppuis1Im>(aXmlApp, aNameRes);

             }
          }
       }

       delete aNuage;
    }
}