@@ -117,31 +117,30 @@ cBA_LidarPhotograTri::cBA_LidarPhotograTri(cPhotogrammetricProject * aPhProj,
117117cBA_LidarPhotograRaster::cBA_LidarPhotograRaster (cPhotogrammetricProject * aPhProj,
118118 cMMVII_BundleAdj& aBA,
119119 const std::vector<std::string>& aParam) :
120- cBA_LidarPhotogra (aPhProj, aBA, aParam), mLidarData ( nullptr )
120+ cBA_LidarPhotogra (aPhProj, aBA, aParam)
121121{
122122 // read all xml files from directory?
123123 mPhProj ->DPStaticLidar ().SetDirIn (aParam.at (1 ));
124124 std::string aPat2Sup = cStaticLidar::ScanPrefixName () + " (.*)-(.*)\\ ." + GlobTaggedNameDefSerial () ;
125125 std::string aFullPat2Sup = mPhProj ->DPStaticLidar ().FullDirIn () + aPat2Sup;
126126 tNameSet aSet = SetNameFromPat (aFullPat2Sup);
127127 std::vector<std::string> aVect = ToVect (aSet);
128- MMVII_INTERNAL_ASSERT_User (aVect.size ()==1 ,
129- eTyUEr::eUnClassedError," Only one scan per directory is supported for now." );
130128 for (const auto & aNameSens : aVect)
131129 {
132- // TODO: make a vector of lidar data?
133- if (mLidarData ) delete mLidarData ;
134- mLidarData = mPhProj ->ReadStaticLidar (mPhProj ->DPStaticLidar (), aNameSens, true );
130+ cStaticLidar * aLidarData = mPhProj ->ReadStaticLidar (mPhProj ->DPStaticLidar (), aNameSens, true );
131+ MMVII_INTERNAL_ASSERT_User (aLidarData,
132+ eTyUEr::eUnClassedError," Error opening static scans " + aNameSens);
133+ mVLidarData .push_back ({aNameSens, aLidarData, {}});
135134 }
136135
137- MMVII_INTERNAL_ASSERT_User (mLidarData ,
138- eTyUEr::eUnClassedError," Error opening static scans " + aFullPat2Sup);
139-
140136 // Creation of the patches, choose a neigborhood around patch centers. TODO: adapt to images ground pixels size?
141137 if (mModeSim ==eImatchCrit::eDifRad)
142138 mNbPointByPatch = 1 ;
143- mLidarData ->MakePatches (mLPatchesP ,mVCam ,mNbPointByPatch ,5 );
144- StdOut () << " Nb patches: " << mLPatchesP .size () << " \n " ;
139+ for (auto & aLidarData: mVLidarData )
140+ {
141+ aLidarData.mLidarRaster ->MakePatches (aLidarData.mLPatchesP ,mVCam ,mNbPointByPatch ,5 );
142+ StdOut () << " Nb patches for " << aLidarData.mName << " : " << aLidarData.mLPatchesP .size () << " \n " ;
143+ }
145144}
146145
147146
@@ -199,20 +198,22 @@ void cBA_LidarPhotograRaster::AddObs()
199198 mNbUsedObs = 0 ;
200199 if (mModeSim ==eImatchCrit::eDifRad)
201200 {
202- for (const auto & aPatch : mLPatchesP )
203- {
204- Add1Patch (mWeight ,{mLidarData ->Image2Ground (*aPatch.begin ())});
205- }
201+ for (auto & aLidarData: mVLidarData )
202+ for (const auto & aPatch : aLidarData.mLPatchesP )
203+ {
204+ Add1Patch (mWeight ,{aLidarData.mLidarRaster ->Image2Ground (*aPatch.begin ())});
205+ }
206206 }
207207 else
208208 {
209- for (const auto & aPatch : mLPatchesP )
210- {
211- std::vector<cPt3dr> aVP;
212- for (const auto aPt : aPatch)
213- aVP.push_back (mLidarData ->Image2Ground (aPt));
214- Add1Patch (mWeight ,aVP);
215- }
209+ for (auto & aLidarData: mVLidarData )
210+ for (const auto & aPatch : aLidarData.mLPatchesP )
211+ {
212+ std::vector<cPt3dr> aVP;
213+ for (const auto aPt : aPatch)
214+ aVP.push_back (aLidarData.mLidarRaster ->Image2Ground (aPt));
215+ Add1Patch (mWeight ,aVP);
216+ }
216217 }
217218
218219 if (mLastResidual .SW () != 0 )
0 commit comments