Skip to content

Commit bc16ba4

Browse files
committed
More fixes and checks to get reftran --export-xml working
1 parent 10f3d45 commit bc16ba4

File tree

12 files changed

+177
-10
lines changed

12 files changed

+177
-10
lines changed

dynadjust/CMakeLists.txt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,15 @@ if (BUILD_TESTING)
861861
add_test (NAME test-urban-phased-network COMMAND $<TARGET_FILE:${DNADIFF_TARGET}> urban.phased.adj urban.phased.adj.expected --skip-headers 62 -t 0.001)
862862
add_test (NAME test-urban-thread-network COMMAND $<TARGET_FILE:${DNADIFF_TARGET}> urban_mt.phased-mt.adj urban_mt.phased-mt.adj.expected -t 0.01 -v)
863863

864-
# 8. gnss reference frame transformations
864+
# 8. Source tag preservation in --export-xml (issue #317)
865+
# Import XML data with <Source> tags and verify they are preserved in export
866+
add_test (NAME import-source-test COMMAND $<TARGET_FILE:${DNAIMPORT_TARGET}> -n srctest source-test-stn.xml source-test-msr.xml --export-xml -r GDA2020)
867+
add_test (NAME check-source-import COMMAND bash check_source_tags.sh srctestmsr.xml CAMPAIGN_2023A CAMPAIGN_2023B EMPTY)
868+
# Transform to a different frame and verify <Source> tags survive reftran
869+
add_test (NAME reftran-source-test COMMAND $<TARGET_FILE:${DNAREFTRAN_TARGET}> srctest -r itrf2014 -e 01.01.2020 --export-xml)
870+
add_test (NAME check-source-reftran COMMAND bash check_source_tags.sh srctest.ITRF2014.01.01.2020msr.xml CAMPAIGN_2023A CAMPAIGN_2023B EMPTY)
871+
872+
# 9. gnss reference frame transformations
865873
add_test (NAME ref-gnss01-network COMMAND $<TARGET_FILE:${DNAREFTRAN_TARGET}> gnss -r itrf2014 -e 01.01.2020)
866874
add_test (NAME ref-gnss02-network COMMAND $<TARGET_FILE:${DNAREFTRAN_TARGET}> gnss -r itrf1988 -e 03.12.1995)
867875
add_test (NAME ref-gnss03-network COMMAND $<TARGET_FILE:${DNAREFTRAN_TARGET}> gnss -r itrf1989)
@@ -1695,6 +1703,10 @@ if (BUILD_TESTING)
16951703
set_tests_properties(ref-itrf-pmm-06 PROPERTIES DEPENDS ref-itrf-pmm-05)
16961704
#set_tests_properties(ref-itrf-pmm-07 PROPERTIES DEPENDS ref-itrf-pmm-06)
16971705

1706+
set_tests_properties(check-source-import PROPERTIES DEPENDS import-source-test)
1707+
set_tests_properties(reftran-source-test PROPERTIES DEPENDS check-source-import)
1708+
set_tests_properties(check-source-reftran PROPERTIES DEPENDS reftran-source-test)
1709+
16981710
# Force all tests to run serially (prevent parallel execution)
16991711
get_property(all_tests DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY TESTS)
17001712
if(all_tests)

dynadjust/include/io/bms_file_loader.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ void BmsFileLoader::LoadFileMeta(const std::string& bms_filename,
102102
<< bms_filename << "." << std::endl;
103103

104104
try {
105-
readFileInfo(bms_file);
106-
readFileMetadata(bms_file, bms_meta);
105+
ReadFileInfo(bms_file);
106+
ReadFileMetadata(bms_file, bms_meta);
107107
} catch (const std::ios_base::failure& f) {
108108
ss << f.what();
109109
throw std::runtime_error(ss.str());
@@ -143,8 +143,8 @@ std::uint64_t BmsFileLoader::LoadFile(const std::string& bms_filename,
143143
<< bms_filename << "." << std::endl;
144144

145145
try {
146-
readFileInfo(bms_file);
147-
readFileMetadata(bms_file, bms_meta);
146+
ReadFileInfo(bms_file);
147+
ReadFileMetadata(bms_file, bms_meta);
148148

149149
vbinary_msr->reserve(bms_meta.binCount);
150150
for (msr = 0; msr < bms_meta.binCount; msr++) {
@@ -199,8 +199,8 @@ void BmsFileLoader::WriteFile(const std::string& bms_filename,
199199
<< "." << std::endl;
200200

201201
try {
202-
writeFileInfo(bms_file);
203-
writeFileMetadata(bms_file, bms_meta);
202+
WriteFileInfo(bms_file);
203+
WriteFileMetadata(bms_file, bms_meta);
204204

205205
measurements::it_vmsr_t it_msr(vbinary_msr->begin());
206206
for (it_msr = vbinary_msr->begin(); it_msr != vbinary_msr->end(); ++it_msr) {
@@ -269,8 +269,8 @@ void BmsFileLoader::WriteFile(const std::string& bms_filename,
269269
"%s", sourceFileList[i].c_str());
270270
}
271271

272-
writeFileInfo(bms_file);
273-
writeFileMetadata(bms_file, bms_meta);
272+
WriteFileInfo(bms_file);
273+
WriteFileMetadata(bms_file, bms_meta);
274274

275275
for (it_msr = vMeasurements->begin(); it_msr != vMeasurements->end();
276276
++it_msr) {

dynadjust/include/measurement_types/dnadirectionset.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,14 @@ UINT32 CDnaDirectionSet::SetMeasurementRec(const vstn_t& binaryStn, it_vmsr_t& i
418418
}
419419

420420

421+
void CDnaDirectionSet::SetSourceFileIndex(const UINT32& idx)
422+
{
423+
CDnaMeasurement::SetSourceFileIndex(idx);
424+
for (auto& dir : m_vTargetDirections)
425+
dir.SetSourceFileIndex(idx);
426+
}
427+
428+
421429
void CDnaDirectionSet::WriteBinaryMsr(std::ofstream* binary_stream, PUINT32 msrIndex) const
422430
{
423431
measurement_t measRecord;

dynadjust/include/measurement_types/dnadirectionset.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ class CDnaDirectionSet : public CDnaMeasurement
9595
void ClearDirections();
9696
//bool IsRepeatedDirection(string);
9797

98+
virtual void SetSourceFileIndex(const UINT32& idx) override;
99+
98100
virtual UINT32 CalcBinaryRecordCount() const;
99101
virtual void WriteBinaryMsr(std::ofstream* binary_stream, PUINT32 msrIndex) const;
100102
virtual UINT32 SetMeasurementRec(const vstn_t& binaryStn, it_vmsr_t& it_msr, it_vdbid_t& dbidmap);

dynadjust/include/measurement_types/dnagpsbaseline.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -920,6 +920,14 @@ UINT32 CDnaGpsBaselineCluster::SetMeasurementRec(const vstn_t& binaryStn, it_vms
920920
}
921921

922922

923+
void CDnaGpsBaselineCluster::SetSourceFileIndex(const UINT32& idx)
924+
{
925+
CDnaMeasurement::SetSourceFileIndex(idx);
926+
for (auto& bsl : m_vGpsBaselines)
927+
bsl.SetSourceFileIndex(idx);
928+
}
929+
930+
923931
void CDnaGpsBaselineCluster::WriteBinaryMsr(std::ofstream* binary_stream, PUINT32 msrIndex) const
924932
{
925933
std::vector<CDnaGpsBaseline>::const_iterator _it_bsl;

dynadjust/include/measurement_types/dnagpsbaseline.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,8 @@ class CDnaGpsBaselineCluster : public CDnaMeasurement
209209

210210
void ReserveGpsBaselinesCount(const UINT32& size);
211211

212+
virtual void SetSourceFileIndex(const UINT32& idx) override;
213+
212214
virtual UINT32 CalcBinaryRecordCount() const;
213215
virtual void WriteBinaryMsr(std::ofstream* binary_stream, PUINT32 msrIndex) const;
214216
virtual UINT32 SetMeasurementRec(const vstn_t& binaryStn, it_vmsr_t& it_msr, it_vdbid_t& dbidmap);

dynadjust/include/measurement_types/dnagpspoint.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,6 +1044,14 @@ UINT32 CDnaGpsPointCluster::SetMeasurementRec(const vstn_t& binaryStn, it_vmsr_t
10441044
}
10451045

10461046

1047+
void CDnaGpsPointCluster::SetSourceFileIndex(const UINT32& idx)
1048+
{
1049+
CDnaMeasurement::SetSourceFileIndex(idx);
1050+
for (auto& pnt : m_vGpsPoints)
1051+
pnt.SetSourceFileIndex(idx);
1052+
}
1053+
1054+
10471055
void CDnaGpsPointCluster::WriteBinaryMsr(std::ofstream* binary_stream, PUINT32 msrIndex) const
10481056
{
10491057
std::vector< CDnaGpsPoint >::const_iterator _it_pnt;

dynadjust/include/measurement_types/dnagpspoint.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,8 @@ class CDnaGpsPointCluster : public CDnaMeasurement
229229
void AddGpsPoint(const CDnaMeasurement* pGpsPoint);
230230
//void ClearPoints();
231231

232+
virtual void SetSourceFileIndex(const UINT32& idx) override;
233+
232234
virtual UINT32 CalcBinaryRecordCount() const;
233235
virtual void WriteBinaryMsr(std::ofstream* binary_stream, PUINT32 msrIndex) const;
234236
virtual UINT32 SetMeasurementRec(const vstn_t& binaryStn, it_vmsr_t& it_msr, it_vdbid_t& dbidmap);

dynadjust/include/measurement_types/dnameasurement.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ class CDnaMeasurement
323323

324324
inline void SetEpsg(const std::string& e) { m_epsgCode = trimstr(e); }
325325
inline void SetSource(const std::string& source) { m_sourceFile = source; }
326-
inline void SetSourceFileIndex(const UINT32& idx) { m_sourceFileIndex = idx; }
326+
virtual void SetSourceFileIndex(const UINT32& idx) { m_sourceFileIndex = idx; }
327327

328328
inline void SetInsufficient(const bool bval) { m_bInsufficient = bval; }
329329

sampleData/check_source_tags.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/bash
2+
# Check <Source> tags in exported DynaML XML. Exits 1 on any mismatch.
3+
[ $# -lt 2 ] && { echo "Usage: $0 <xml_file> <source> ..."; exit 1; }
4+
f="$1"; shift
5+
[ -f "$f" ] || { echo "FAIL: $f not found"; exit 1; }
6+
r=0
7+
for s in "$@"; do
8+
[[ $s == EMPTY ]] && pat='<Source></Source>|<Source */>' || pat="<Source>$s</Source>"
9+
grep -Eq "$pat" "$f" && echo "PASS: $s in $f" || { echo "FAIL: $s not in $f"; r=1; }
10+
done
11+
exit $r

0 commit comments

Comments
 (0)