[postgis-users] How can I add one column to the table in my existing query?!
Wolf-E. Altmann
mailinglists at envitelligence.de
Fri Jul 26 10:13:11 PDT 2013
Am 25.07.2013 12:37, schrieb mane moshref:
> Hi all,
> I have one question.
> I wrote this query in my java code:
> "CREATE table many_line AS SELECT ST_AsText(St_makeline(sp, ep)) as line, gmlid, parent_id, root_id from (select st_pointN(geom, generate_series(1, ST_NPoints(geom)-1)) as sp, ST_PointN(geom, generate_series(2, ST_NPoints(geom) )) as ep, gmlid, parent_id, root_id FROM (SELECT (ST_Dump(ST_Boundary(geometry))).geom, g.gmlid, g.parent_id, g.root_id FROM surface_geometry g where (g.parent_id=15) ) AS linestrings ) AS segments"; It works perfectly but my problem is that I need also to have a unique id for each line in the created table. How can I include the column of line ids to this table?
>
> For more clarity I put my code here as well:
>
> public static void linstring(String url, String username, String password){
> Connection con = null;
> Statement st = null;
> ResultSet rs = null;
>
> String Query ="CREATE table many_line AS SELECT ST_AsText(St_makeline(sp, ep)) as line, gmlid, parent_id, root_id from (select st_pointN(geom, generate_series(1, ST_NPoints(geom)-1)) as sp, ST_PointN(geom, generate_series(2, ST_NPoints(geom) )) as ep, gmlid, parent_id, root_id FROM (SELECT (ST_Dump(ST_Boundary(geometry))).geom, g.gmlid, g.parent_id, g.root_id FROM surface_geometry g where (g.parent_id=15) ) AS linestrings ) AS segments";
>
>
> try{
>
> Class.forName("org.postgresql.Driver");
> con = DriverManager.getConnection(url, username, password);
> st= con.createStatement();
> rs=st.executeQuery(Query);
>
> while(rs.next()){
> System.out.println(rs.getString(1)+"/");
> System.out.println(rs.getString(2)+"/");
> System.out.print(rs.getInt(3)+"/");
> System.out.println(rs.getInt(4)+"/");
> }
>
> }catch (SQLException ex) {
> Logger lgr = Logger.getLogger(database.class.getName());
> lgr.log(Level.SEVERE, ex.getMessage(), ex);
>
> } catch (ClassNotFoundException e) {
> e.printStackTrace();
> }
>
> finally {
>
> try {
> if (rs != null) {
> rs.close();
> }
> if (st != null) {
> st.close();
> }
> if (con != null) {
> con.close();
> }
>
> } catch (SQLException ex) {
> Logger lgr = Logger.getLogger(database.class.getName());
> lgr.log(Level.WARNING, ex.getMessage(), ex);
> }
> }
>
> }
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
Hi Mane,
maybe it works, if you add "row_number() over () as ids" to your query
string, i.e.
String Query ="CREATE table many_line AS SELECT row_number() over () as ids, ST_AsText(St_makeline(sp, ep)) as line, gmlid, parent_id, root_id from (select st_pointN(geom, generate_series(1, ST_NPoints(geom)-1)) as sp, ST_PointN(geom, generate_series(2, ST_NPoints(geom) )) as ep, gmlid, parent_id, root_id FROM (SELECT (ST_Dump(ST_Boundary(geometry))).geom, g.gmlid, g.parent_id, g.root_id FROM surface_geometry g where (g.parent_id=15) ) AS linestrings ) AS segments";
Wolf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20130726/60a592d5/attachment.html>
More information about the postgis-users
mailing list