mirror of
https://github.com/MartinOpat/cuda-based-raytrace.git
synced 2025-06-07 02:13:10 +02:00
working metadata reading
This commit is contained in:
1 parent
7b3c87c656
commit
109566d7b6
6 files changed
+186
-64
No files matched your search
@@ -1,7 +1,7 @@
|
||||
#include "datareader.h"
|
||||
|
||||
#include <netcdf>
|
||||
#include <optional>
|
||||
#include <cassert>
|
||||
|
||||
using namespace std;
|
||||
using namespace netCDF;
|
||||
@@ -10,8 +10,6 @@ DataReader::DataReader(const std::string &path, std::string variableName):
|
||||
filePathManager(path), variableName(variableName) { }
|
||||
|
||||
size_t DataReader::fileLength(size_t fileIndex) {
|
||||
cout << "filePathMan = " << filePathManager.getPath(fileIndex) << " bla = " << fileIndex << "\n";
|
||||
|
||||
NcFile data(filePathManager.getPath(fileIndex), NcFile::read);
|
||||
|
||||
multimap<string, NcVar> vars = data.getVars();
|
||||
@@ -23,24 +21,42 @@ size_t DataReader::fileLength(size_t fileIndex) {
|
||||
length *= dim.getSize();
|
||||
}
|
||||
|
||||
// TODO: Turns out c-NetCDF is not thread safe :( https://github.com/Unidata/netcdf-c/issues/1373
|
||||
// size_t length = 34933248;
|
||||
std::cout << "return length" << length << "\n";
|
||||
return length;
|
||||
}
|
||||
|
||||
size_t DataReader::axisLength(size_t fileIndex, const std::string& axisName) {
|
||||
NcFile data(filePathManager.getPath(fileIndex), NcFile::read);
|
||||
|
||||
multimap<string, NcVar> vars = data.getVars();
|
||||
|
||||
NcVar var = vars.find(axisName)->second;
|
||||
|
||||
assert(var.getDimCount() == 1);
|
||||
|
||||
netCDF::NcDim dim = var.getDim(0);
|
||||
return dim.getSize();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void DataReader::loadFile(T* dataOut, size_t fileIndex) {
|
||||
std::cout << "loading file" << fileIndex <<"\n";
|
||||
NcFile data(filePathManager.getPath(fileIndex), NcFile::read);
|
||||
|
||||
// multimap<string, NcVar> vars = data.getVars();
|
||||
|
||||
// NcVar var = vars.find(variableName)->second;
|
||||
|
||||
// var.getVar(dataOut);
|
||||
loadFile(dataOut, fileIndex, variableName);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void DataReader::loadFile(T* dataOut, size_t fileIndex, const string& variableName) {
|
||||
NcFile data(filePathManager.getPath(fileIndex), NcFile::read);
|
||||
|
||||
multimap<string, NcVar> vars = data.getVars();
|
||||
|
||||
NcVar var = vars.find(variableName)->second;
|
||||
|
||||
var.getVar(dataOut);
|
||||
}
|
||||
|
||||
template void DataReader::loadFile<float>(float* dataOut, size_t fileIndex, const string& variableName);
|
||||
template void DataReader::loadFile<int>(int* dataOut, size_t fileIndex, const string& variableName);
|
||||
template void DataReader::loadFile<double>(double* dataOut, size_t fileIndex, const string& variableName);
|
||||
template void DataReader::loadFile<double>(double* dataOut, size_t fileIndex);
|
||||
template void DataReader::loadFile<float>(float* dataOut, size_t fileIndex);
|
||||
template void DataReader::loadFile<int>(int* dataOut, size_t fileIndex);
|
||||
|
||||
|
||||