Program Listing for File Route.h
↰ Return to documentation for file (include/fields2cover/types/Route.h
)
//=============================================================================
// Copyright (C) 2021-2024 Wageningen University - All Rights Reserved
// Author: Gonzalo Mier
// BSD-3 License
//=============================================================================
#pragma once
#ifndef FIELDS2COVER_TYPES_ROUTE_H_
#define FIELDS2COVER_TYPES_ROUTE_H_
#include <gdal/ogr_geometry.h>
#include <vector>
#include <numeric>
#include <optional>
#include "fields2cover/types/Swath.h"
#include "fields2cover/types/Swaths.h"
#include "fields2cover/types/LineString.h"
#include "fields2cover/types/MultiPoint.h"
#include "fields2cover/types/Graph2D.h"
namespace f2c::types {
struct Route {
public:
const std::vector<Swaths>& getVectorSwaths() const;
Swaths& getSwaths(size_t i);
const Swaths& getSwaths(size_t i) const;
void setSwaths(size_t i, const Swaths& s);
void addSwaths(const Swaths& s = {});
void addConnectedSwaths(const MultiPoint& mp = {}, const Swaths& s = {});
void addSwath(const Swath& s);
void addSwath(const Swath& s, Graph2D& g);
void addConnection();
void addConnection(const Point& p);
void addConnection(const MultiPoint& mp);
void addConnection(const std::vector<Point>& vp);
MultiPoint& getLastConnection();
const MultiPoint& getLastConnection() const;
Swaths& getLastSwaths();
const Swaths& getLastSwaths() const;
const std::vector<MultiPoint>& getConnections() const;
MultiPoint& getConnection(size_t i);
const MultiPoint& getConnection(size_t i) const;
void setConnection(size_t i, const MultiPoint& mp);
Point startPoint() const;
Point endPoint() const;
size_t sizeVectorSwaths() const;
size_t sizeConnections() const;
double length() const;
LineString asLineString() const;
bool isEmpty() const;
Route clone() const;
private:
std::vector<Swaths> v_swaths_;
std::vector<MultiPoint> connections_;
};
} // namespace f2c::types
#endif // FIELDS2COVER_TYPES_ROUTE_H_