update
This commit is contained in:
parent
2ea609cb4c
commit
4dc7e5ebc2
@ -53,9 +53,7 @@ int main(int argc, char const *argv[]) try
|
|||||||
|
|
||||||
geodsv_io tc;
|
geodsv_io tc;
|
||||||
tc.load_text("tmp/topo", ".txt", ColumnHead);
|
tc.load_text("tmp/topo", ".txt", ColumnHead);
|
||||||
tc.cell(std::string("x (m)"), 0, 1);
|
tc.set_column_names({"x (m)", "y (m)", "elev (m)"});
|
||||||
tc.cell(std::string("y (m)"), 0, 2);
|
|
||||||
tc.cell(std::string("elevation (m)"), 0, 3);
|
|
||||||
|
|
||||||
array<point3dc> topo;
|
array<point3dc> topo;
|
||||||
tc.get_column_point3dc(topo, 1, 2, 3);
|
tc.get_column_point3dc(topo, 1, 2, 3);
|
||||||
@ -69,12 +67,15 @@ int main(int argc, char const *argv[]) try
|
|||||||
//tc.column_output("C3", Disable);
|
//tc.column_output("C3", Disable);
|
||||||
|
|
||||||
array<double> elev;
|
array<double> elev;
|
||||||
tc.get_column(elev, "elevation (m)");
|
tc.get_column(elev, "elev (m)");
|
||||||
elev.for_each([](double &d, size_t i){d += 100.0;});
|
elev.for_each([](double &d, size_t i){d += 100.0;});
|
||||||
|
|
||||||
tc.add_column(-1, "elev_plus");
|
tc.add_column(2, "elev_plus");
|
||||||
tc.fill_column(elev, "elev_plus");
|
tc.fill_column(elev, "elev_plus");
|
||||||
|
|
||||||
|
tc.add_row(3);
|
||||||
|
tc.fill_row(array<double>{4.4, 3.3, 2.2, 1.1}, 3);
|
||||||
|
|
||||||
_1s_vector s = tc.get_tags();
|
_1s_vector s = tc.get_tags();
|
||||||
s.push_back("Elev = 1000");
|
s.push_back("Elev = 1000");
|
||||||
tc.set_tags(s);
|
tc.set_tags(s);
|
||||||
|
@ -79,7 +79,7 @@ void gctl::dsv_io::get_row_names(std::vector<std::string> &names)
|
|||||||
names.resize(row_num_);
|
names.resize(row_num_);
|
||||||
for (size_t i = 1; i < row_num_; i++)
|
for (size_t i = 1; i < row_num_; i++)
|
||||||
{
|
{
|
||||||
names[i] = table_[i][0].str_;
|
names[i - 1] = table_[i][0].str_;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -89,7 +89,7 @@ void gctl::dsv_io::get_column_names(std::vector<std::string> &names)
|
|||||||
names.resize(col_num_);
|
names.resize(col_num_);
|
||||||
for (size_t i = 1; i < col_num_; i++)
|
for (size_t i = 1; i < col_num_; i++)
|
||||||
{
|
{
|
||||||
names[i] = table_[0][i].str_;
|
names[i - 1] = table_[0][i].str_;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -98,7 +98,7 @@ void gctl::dsv_io::set_row_names(const std::vector<std::string> &names)
|
|||||||
{
|
{
|
||||||
for (size_t i = 1; i <= std::min(row_num_, (int) names.size()); i++)
|
for (size_t i = 1; i <= std::min(row_num_, (int) names.size()); i++)
|
||||||
{
|
{
|
||||||
table_[i][0].str_ = names[i];
|
table_[i][0].str_ = names[i - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
table_[0][0].str_ = "row_name";
|
table_[0][0].str_ = "row_name";
|
||||||
@ -109,7 +109,7 @@ void gctl::dsv_io::set_column_names(const std::vector<std::string> &names)
|
|||||||
{
|
{
|
||||||
for (size_t i = 1; i <= std::min(col_num_, (int) names.size()); i++)
|
for (size_t i = 1; i <= std::min(col_num_, (int) names.size()); i++)
|
||||||
{
|
{
|
||||||
table_[0][i].str_ = names[i];
|
table_[0][i].str_ = names[i - 1];
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -501,6 +501,42 @@ void gctl::dsv_io::add_column(std::string id_name, std::string name)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gctl::dsv_io::add_row(std::string name)
|
||||||
|
{
|
||||||
|
std::vector<table_cell> empty_line;
|
||||||
|
table_.push_back(empty_line);
|
||||||
|
table_.back().resize(col_num_ + 1);
|
||||||
|
table_.back().front().str_ = name;
|
||||||
|
row_num_++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void gctl::dsv_io::add_row(int idx, std::string name)
|
||||||
|
{
|
||||||
|
std::vector<table_cell> empty_line;
|
||||||
|
if (idx <= 0)
|
||||||
|
{
|
||||||
|
table_.push_back(empty_line);
|
||||||
|
table_.back().resize(col_num_ + 1);
|
||||||
|
table_.back().front().str_ = name;
|
||||||
|
row_num_++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
table_.insert(table_.begin() + idx, empty_line);
|
||||||
|
table_[idx].resize(col_num_ + 1);
|
||||||
|
table_[idx].front().str_ = name;
|
||||||
|
row_num_++;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void gctl::dsv_io::add_row(std::string id_name, std::string name)
|
||||||
|
{
|
||||||
|
add_row(name_index(id_name), name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
gctl::geodsv_io::geodsv_io(){}
|
gctl::geodsv_io::geodsv_io(){}
|
||||||
|
|
||||||
gctl::geodsv_io::~geodsv_io(){}
|
gctl::geodsv_io::~geodsv_io(){}
|
||||||
@ -585,6 +621,42 @@ void gctl::geodsv_io::fill_column_point3dc(const array<point3dc> &data, std::str
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gctl::geodsv_io::fill_column_point3ds(const array<point3ds> &data, int rid, int pid, int tid, int p)
|
||||||
|
{
|
||||||
|
if (rid > col_num_ || pid > col_num_ || tid > col_num_ || rid == pid || pid == tid || tid == rid
|
||||||
|
|| rid <= 0 || pid <= 0 || tid <= 0)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("[gctl::geodsv_io] Invalid column index.");
|
||||||
|
}
|
||||||
|
|
||||||
|
std::stringstream ss;
|
||||||
|
std::string s;
|
||||||
|
for (size_t i = 1; i < std::min(row_num_, (int) data.size()); i++)
|
||||||
|
{
|
||||||
|
ss.clear();
|
||||||
|
ss << data[i - 1].rad;
|
||||||
|
ss >> s;
|
||||||
|
table_[i][rid].str_ = s;
|
||||||
|
|
||||||
|
ss.clear();
|
||||||
|
ss << data[i - 1].lon;
|
||||||
|
ss >> s;
|
||||||
|
table_[i][pid].str_ = s;
|
||||||
|
|
||||||
|
ss.clear();
|
||||||
|
ss << data[i - 1].lat;
|
||||||
|
ss >> s;
|
||||||
|
table_[i][tid].str_ = s;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void gctl::geodsv_io::fill_column_point3ds(const array<point3ds> &data, std::string rname, std::string pname, std::string tname, int p)
|
||||||
|
{
|
||||||
|
fill_column_point3ds(data, name_index(rname, false), name_index(pname, false), name_index(tname, false), p);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
void gctl::geodsv_io::get_column_point2dc(array<point2dc> &data, int xid, int yid)
|
void gctl::geodsv_io::get_column_point2dc(array<point2dc> &data, int xid, int yid)
|
||||||
{
|
{
|
||||||
if (xid > col_num_ || yid > col_num_ || xid == yid || xid <= 0 || yid <= 0)
|
if (xid > col_num_ || yid > col_num_ || xid == yid || xid <= 0 || yid <= 0)
|
||||||
@ -629,4 +701,28 @@ void gctl::geodsv_io::get_column_point3dc(array<point3dc> &data, std::string xna
|
|||||||
{
|
{
|
||||||
get_column_point3dc(data, name_index(xname, false), name_index(yname, false), name_index(zname, false));
|
get_column_point3dc(data, name_index(xname, false), name_index(yname, false), name_index(zname, false));
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void gctl::geodsv_io::get_column_point3ds(array<point3ds> &data, int rid, int pid, int tid)
|
||||||
|
{
|
||||||
|
if (rid > col_num_ || pid > col_num_ || tid > col_num_ || rid == pid || pid == tid || tid == rid
|
||||||
|
|| rid <= 0 || pid <= 0 || tid <= 0)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("[gctl::geodsv_io] Invalid column index.");
|
||||||
|
}
|
||||||
|
|
||||||
|
data.resize(row_num_);
|
||||||
|
for (size_t i = 1; i <= row_num_; i++)
|
||||||
|
{
|
||||||
|
data[i - 1].rad = table_[i][rid].value<double>();
|
||||||
|
data[i - 1].lon = table_[i][pid].value<double>();
|
||||||
|
data[i - 1].lat = table_[i][tid].value<double>();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void gctl::geodsv_io::get_column_point3ds(array<point3ds> &data, std::string rname, std::string pname, std::string tname)
|
||||||
|
{
|
||||||
|
get_column_point3ds(data, name_index(rname, false), name_index(pname, false), name_index(tname, false));
|
||||||
|
return;
|
||||||
}
|
}
|
@ -353,7 +353,7 @@ namespace gctl
|
|||||||
void add_column(std::string name = "");
|
void add_column(std::string name = "");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 在索引为idx的列后添加一个空白列
|
* @brief 在索引为idx的列插入一个空白列
|
||||||
*
|
*
|
||||||
* @param idx 列索引 小于等于0时将在表尾添加一列
|
* @param idx 列索引 小于等于0时将在表尾添加一列
|
||||||
* @param name 设置列名称
|
* @param name 设置列名称
|
||||||
@ -361,13 +361,36 @@ namespace gctl
|
|||||||
void add_column(int idx, std::string name = "");
|
void add_column(int idx, std::string name = "");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 在名称为id_name的列后添加一个空白列
|
* @brief 在名称为id_name的列插入一个空白列
|
||||||
*
|
*
|
||||||
* @param id_name 索引列名称
|
* @param id_name 索引列名称
|
||||||
* @param name 设置列名称
|
* @param name 设置列名称
|
||||||
*/
|
*/
|
||||||
void add_column(std::string id_name, std::string name = "");
|
void add_column(std::string id_name, std::string name = "");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 在表格末尾添加一个空白行
|
||||||
|
*
|
||||||
|
* @param name 设置行名称
|
||||||
|
*/
|
||||||
|
void add_row(std::string name = "");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 在索引为idx的列插入一个空白行
|
||||||
|
*
|
||||||
|
* @param idx 行索引 小于等于0时将在表尾添加一行
|
||||||
|
* @param name 设置行名称
|
||||||
|
*/
|
||||||
|
void add_row(int idx, std::string name = "");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 在名称为id_name的列插入一个空白行
|
||||||
|
*
|
||||||
|
* @param id_name 索引行名称
|
||||||
|
* @param name 设置行名称
|
||||||
|
*/
|
||||||
|
void add_row(std::string id_name, std::string name = "");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 填充表格
|
* @brief 填充表格
|
||||||
*
|
*
|
||||||
@ -669,6 +692,28 @@ namespace gctl
|
|||||||
*/
|
*/
|
||||||
void fill_column_point3dc(const array<point3dc> &data, std::string xname, std::string yname, std::string zname, int p = 6);
|
void fill_column_point3dc(const array<point3dc> &data, std::string xname, std::string yname, std::string zname, int p = 6);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 填充三维坐标列
|
||||||
|
*
|
||||||
|
* @param rid rad坐标列索引 从1开始
|
||||||
|
* @param pid phi坐标(经度)列索引 从1开始
|
||||||
|
* @param tid theta坐标(纬度)列索引 从1开始
|
||||||
|
* @param data 返回的三维坐标数据
|
||||||
|
* @param p 填入的浮点数据有效位数(精度)
|
||||||
|
*/
|
||||||
|
void fill_column_point3ds(const array<point3ds> &data, int rid, int pid, int tid, int p = 6);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 填充三维坐标列
|
||||||
|
*
|
||||||
|
* @param rname rad坐标列名称 从1开始
|
||||||
|
* @param pname phi坐标(经度)列名称 从1开始
|
||||||
|
* @param tname theta坐标(纬度)列名称 从1开始
|
||||||
|
* @param data 返回的三维坐标数据
|
||||||
|
* @param p 填入的浮点数据有效位数(精度)
|
||||||
|
*/
|
||||||
|
void fill_column_point3ds(const array<point3ds> &data, std::string rname, std::string pname, std::string tname, int p = 6);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 读取二维坐标列
|
* @brief 读取二维坐标列
|
||||||
*
|
*
|
||||||
@ -706,6 +751,26 @@ namespace gctl
|
|||||||
* @param data 返回的三维坐标数据
|
* @param data 返回的三维坐标数据
|
||||||
*/
|
*/
|
||||||
void get_column_point3dc(array<point3dc> &data, std::string xname, std::string yname, std::string zname);
|
void get_column_point3dc(array<point3dc> &data, std::string xname, std::string yname, std::string zname);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 读取三维坐标列
|
||||||
|
*
|
||||||
|
* @param rid rad坐标列索引 从1开始
|
||||||
|
* @param pid phi坐标(经度)列索引 从1开始
|
||||||
|
* @param tid theta坐标(纬度)列索引 从1开始
|
||||||
|
* @param data 返回的三维坐标数据
|
||||||
|
*/
|
||||||
|
void get_column_point3ds(array<point3ds> &data, int rid, int pid, int tid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 读取三维坐标列
|
||||||
|
*
|
||||||
|
* @param rname rad坐标列名称 从1开始
|
||||||
|
* @param pname phi坐标(经度)列名称 从1开始
|
||||||
|
* @param tname theta坐标(纬度)列名称 从1开始
|
||||||
|
* @param data 返回的三维坐标数据
|
||||||
|
*/
|
||||||
|
void get_column_point3ds(array<point3ds> &data, std::string rname, std::string pname, std::string tname);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user