#pragma once #include #include #include #include #include #include namespace scwx { namespace wsr88d { class Ar2vFileImpl; /** * @brief The Archive II file is specified in the Interface Control Document for * the Archive II/User, Document Number 2620010H, published by the WSR-88D Radar * Operations Center. */ class Ar2vFile : public NexradFile { public: explicit Ar2vFile(); ~Ar2vFile(); Ar2vFile(const Ar2vFile&) = delete; Ar2vFile& operator=(const Ar2vFile&) = delete; Ar2vFile(Ar2vFile&&) noexcept; Ar2vFile& operator=(Ar2vFile&&) noexcept; Ar2vFile(std::shared_ptr current, std::shared_ptr last); std::uint32_t julian_date() const; std::uint32_t milliseconds() const; std::string icao() const; std::size_t message_count() const; std::chrono::system_clock::time_point start_time() const; std::chrono::system_clock::time_point end_time() const; std::map> radar_data() const; std::shared_ptr vcp_data() const; std::tuple, float, std::vector> GetElevationScan(rda::DataBlockType dataBlockType, float elevation, std::chrono::system_clock::time_point time) const; bool LoadFile(const std::string& filename); bool LoadData(std::istream& is); bool LoadLDMRecords(std::istream& is); bool IndexFile(); private: std::unique_ptr p; }; } // namespace wsr88d } // namespace scwx