私は、 postgres dbに格納されているポリゴンのポイントを取得したいと考えています。 DBの内容は次のとおりLibpqxxを使用してPostgresに保存されているポリゴンのポイントにアクセスするにはどうすればよいですか?
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))
頂点列は、型多角形です。
私はlibpqxxライブラリをC++に使用しています。
私はC++でこれらのステートメントを実行します 、私は頂点列にポイントを取得し、アクセスしたいと仮定します。私はlibpqxxするのは非常に新しいです
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 がどのように動作するのかかなり分かりましたが、私はPolygonの種類に固執しています。私たちは実際にPostgresのポリゴンのための単純な ストレージが必要ですが、libpqxxを使って にアクセスする方法がわかりません。
ご意見ありがとうございます。 実際には、r [1] .c_str()を使用して文字列として取得できます。次に、文字列を解析して値を取得します。私たちが得る文字列は、((3,3)、(4,4)、(5,5))のようなものです。それから私達はそれを解析することができますが、私はこれを私の最後の手段として持っています。それが唯一の方法であれば、構文解析が答えです。しかし、libpqxxのためのリソースがあまりないので、それが最善の方法であるかどうかはわかりません。 –