Program Listing for File crater_data.h¶
↰ Return to documentation for file (data/crater_data.h)
#pragma once
#include <Eigen/Dense>
#include <filesystem>
#include <optional>
#include <string>
#include <vector>
namespace lupnt {
struct Crater {
double lat;
double lon;
double diam_major;
double diam_minor;
double angle;
std::string id;
};
class CraterDataLoader {
public:
static std::vector<Crater> LoadCraters(const std::string& filename
= "lunar_crater_database_robbins_2018.csv",
const std::pair<double, double>* latlims = nullptr,
const std::pair<double, double>* longlims = nullptr,
const std::pair<double, double>& diamlims = {0.0, 500.0},
const double ellipse_limit = 1.5,
const double arc_lims = 0.0);
static void ExtractRobbinsDataset(const std::vector<Crater>& craters, Eigen::VectorXd& lat,
Eigen::VectorXd& lon, Eigen::VectorXd& major,
Eigen::VectorXd& minor, Eigen::VectorXd& psi,
std::vector<std::string>& crater_id, bool radians = true);
};
} // namespace lupnt