Ich möchte die Punkte eines Polygons abrufen, die in der Postgres-Datenbank gespeichert sind. Der Inhalt der db ist:Wie kann ich mit Libpqxx auf die in Postgres gespeicherten Punkte des Polygons zugreifen?
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))
Die Vertices Spalte ist vom Typ Polygon.
Ich benutze libpqxx Bibliothek für C++.
Angenommen, ich möchte abrufen und die Punkte in der Scheitel Spalte zuzugreifen, ich diese Aussagen in C ausführen würde ++:
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..)
}
Sorry, ich bin sehr neu libpqxx. Ich habe ziemlich verstanden, wie die libpqxx funktioniert, aber ich bin mit den Polygontypen fest. Wir brauchen eigentlich nur einen einfachen Speicher für unsere Polygone in Postgres, aber ich bin mir nicht sicher, wie man mit libpqxx auf diese zugreifen kann.
Hallo danke für deinen Kommentar. Wir können es tatsächlich als eine Zeichenfolge abrufen, die das r [1] .c_str() verwendet. Dann parsen wir die Zeichenfolge, um die Werte zu erhalten. Die Zeichenfolge, die wir erhalten, ist ungefähr so: ((3,3), (4,4), (5,5)). Daraus können wir es analysieren, aber ich halte dies als meinen letzten Ausweg. Wenn dies der einzige Weg ist, ist das Parsen die Antwort. Aber da es nicht viel Ressource für libpqxx gibt, bin ich mir nicht sicher, ob das der beste Weg ist .... –