gpt4 book ai didi

c++ - 如何使用 Libpqxx 访问存储在 Postgres 中的多边形的点?

转载 作者:搜寻专家 更新时间:2023-10-31 01:23:37 25 4
gpt4 key购买 nike

我想检索存储在后数据库。数据库的内容是:

 polygonid |vertices
-----------+---------------------------------------------------------------------
2 |((1,0),(1.5,-1),(2,-1),(2,1),(1,1),(0,0),(0,2),(3,2),(3,-2),(1,-2))
4 | ((3,3),(4,4),(5,5))

顶点列是多边形类型。

我正在为 C++ 使用 libpqxx 库。

假设我想检索和访问顶点列中的点,我会在 C++ 中执行这些语句:

    result R = W.exec ("select * from polygon_tbl");
for (result::const_iterator r = R.begin();
r != R.end();
++r)
{
int x = 0;
cout << "Polygon ID: " << r[0].to(x) << endl;

//Suppose i would like to print the first point of every polygon,
//how would i access it?
cout << "First vertex: " << r[1][0] << endl; ???

//Or suppose i would like to print the first x coordinate of
//every polygon, how would i access it?
cout << "First x coordinate: " << r[1][0][0] << endl; //???? (am just guessing here..)

}

抱歉,我是 libpqxx 的新手。我已经非常了解 libpqxx 是如何有效,但我坚持使用多边形类型。我们实际上只需要一个简单的在 Postgres 中存储我们的多边形,但我不确定如何访问它们使用 libpqxx。

最佳答案

与此同时,我将使用以下方法对字符串进行标记化:

typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
boost::char_separator<char> sep(",()");
tokenizer tokens(str_coordinates, sep);
for (tokenizer::iterator tok_iter = tokens.begin();
tok_iter != tokens.end(); ++tok_iter)
{
std::cout << "x:<" << *tok_iter << "> ";
++tok_iter;
std::cout << "y:<" << *tok_iter << "> " << endl;
}

关于c++ - 如何使用 Libpqxx 访问存储在 Postgres 中的多边形的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com