From 992f20e3a094670fe96e375cf99abfb433519ead Mon Sep 17 00:00:00 2001 From: Jim King Date: Tue, 3 Nov 2020 17:00:53 -0600 Subject: [PATCH 1/2] fix segment trace range guesses when creating data requests --- src/SEGYUtils/SEGYUtils/TraceDataManager.h | 50 ++++++++++++++-------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/src/SEGYUtils/SEGYUtils/TraceDataManager.h b/src/SEGYUtils/SEGYUtils/TraceDataManager.h index 151170f4..6679041f 100644 --- a/src/SEGYUtils/SEGYUtils/TraceDataManager.h +++ b/src/SEGYUtils/SEGYUtils/TraceDataManager.h @@ -41,24 +41,36 @@ public: for (auto segment = lower; segment != upper; ++segment) { - // axis factors for guessing trace numbers - const auto - secondaryKeySpanTotal = static_cast(segment->m_binInfoStop.m_crosslineNumber - segment->m_binInfoStart.m_crosslineNumber); - const auto - secondaryStartSpan = requestSecondaryKeyStart - segment->m_binInfoStart.m_crosslineNumber, - secondaryStopSpan = requestSecondaryKeyEnd - segment->m_binInfoStart.m_crosslineNumber; - const double - traceStartFactor = secondaryStartSpan <= 0 ? 0.0 : secondaryStartSpan / secondaryKeySpanTotal, - traceStopFactor = secondaryStopSpan <= 0 ? 0.0 : secondaryStopSpan / secondaryKeySpanTotal; - - // calculate approximate start and end traces - const auto - traceCount = segment->m_traceStop - segment->m_traceStart + 1; - const auto - startTrace = static_cast(segment->m_traceStart + traceCount * traceStartFactor), - stopTrace = static_cast(segment->m_traceStart + traceCount * traceStopFactor); - - addTraceRequests(requests, startTrace, stopTrace); + // does this segment have traces within the request secondary key range? + if (requestSecondaryKeyEnd < segment->m_binInfoStart.m_crosslineNumber || requestSecondaryKeyStart > segment->m_binInfoStop.m_crosslineNumber) + continue; + + if (segment->m_traceStart == segment->m_traceStop) + { + // The segment is only one trace long, and that trace is in the request range, so add a request + addTraceRequests(requests, segment->m_traceStart, segment->m_traceStart); + } + else + { + // axis factors for guessing trace numbers + const auto + secondaryKeySpanTotal = static_cast(segment->m_binInfoStop.m_crosslineNumber - segment->m_binInfoStart.m_crosslineNumber); + const auto + secondaryStartSpan = requestSecondaryKeyStart - segment->m_binInfoStart.m_crosslineNumber, + secondaryStopSpan = segment->m_binInfoStop.m_crosslineNumber - requestSecondaryKeyEnd; + const double + traceStartFactor = secondaryStartSpan <= 0 ? 0.0 : secondaryStartSpan / secondaryKeySpanTotal, + traceStopFactor = secondaryStopSpan <= 0 ? 1.0 : 1.0 - secondaryStopSpan / secondaryKeySpanTotal; + + // calculate approximate start and end traces + const auto + traceDistance = segment->m_traceStop - segment->m_traceStart; + const auto + startTrace = static_cast(segment->m_traceStart + traceDistance * traceStartFactor), + stopTrace = static_cast(segment->m_traceStart + traceDistance * traceStopFactor); + + addTraceRequests(requests, startTrace, stopTrace); + } } m_dataViewManager.addDataRequests(requests); @@ -148,6 +160,8 @@ private: const auto traceCount = std::min(m_tracesPerPage, m_numTraces - pageTrace); + assert(traceCount > 0); + DataRequestInfo dataRequestInfo; dataRequestInfo.offset = SEGY::TextualFileHeaderSize + SEGY::BinaryFileHeaderSize + pageTrace * m_traceByteSize; -- GitLab From b6d45d82861f5d818ef9da8becdb051225b46301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Lind?= Date: Wed, 4 Nov 2020 08:49:24 +0100 Subject: [PATCH 2/2] Mark release 1.1.2 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 44998209..f3a73669 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ if(CCACHE_PROGRAM) set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") endif() -project(OpenVDS VERSION 1.1.1) +project(OpenVDS VERSION 1.1.2) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/CMake") -- GitLab