在java中存储PostgreSQL/PostGIS“几何(多多边形)”数据类型
Posted
技术标签:
【中文标题】在java中存储PostgreSQL/PostGIS“几何(多多边形)”数据类型【英文标题】:Storing PostgreSQL/PostGIS "geometry(MultiPolygon)" data type in java 【发布时间】:2012-12-26 15:42:46 【问题描述】:我需要将 PostgreSQL 的几何(MultiPolygon)类型变量存储到 java 变量中 这是因为我试图将几何列添加到非空间表中以使用 mapserver 查询地图
我试图将它存储在一个导致错误的字符串中。
请建议我使用 Java 中的数据类型,以便我可以将值存储在空间数据库的几何列中。
这是我的代码 sn-p:
String query="select geom from apmandal where mandalname='"+mname+"'";
ResultSet rs=st.executeQuery(query);
rs.next();
Geometry geomval=rs.getXXX();
请建议一个 getXXX() 方法,以便我可以检索几何列值
提前致谢
从评论中编辑:
String query = "select geom from apmandal order by area desc;";
ResultSet rs = st0.executeQuery(query);
rs.next();
String geomval = rs.getString(1).toString();
String newquery = "insert into test(mname, geom) values('ZAHEERABAD','"+geomval+"');";
int tel = st1.executeUpdate(newquery);
System.out.println("inserted "+tel+" record");
【问题讨论】:
【参考方案1】:您可以简单地转换为text
表示:
String query="select geom<b>::text</b> from apmandal where mandalname='"+mname+"'";
然后你可以像对待任何其他文本一样对待它。 我引用PostGIS manual here:
至少从 PostgreSQL 8.3 开始 - 一切都可以转换为文本 (大概是因为神奇的未知类型),所以没有定义 CASTS 因为您需要将对象转换为文本。
【讨论】:
非常感谢@Erwin!我只是想通了,然后回来通知..我直接实现了Java..我的代码如下query="select geom from apmandal order by area desc;";
ResultSet rs=st0.executeQuery(query);
rs.next();
String geomval=rs.getString(1).toString();
String geomval=rs.getString(1).toString();
String newquery="insert into test(mname,geom) values('ZAHEERABAD','"+geomval+"');";
int tel=st1.executeUpdate(newquery);
System.out.println("inserted "+tel+" record");
现在我从你那里学到了新的查询.. 非常感谢 :)以上是关于在java中存储PostgreSQL/PostGIS“几何(多多边形)”数据类型的主要内容,如果未能解决你的问题,请参考以下文章