在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“几何(多多边形)”数据类型的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle 中调试 Java 存储过程

java 8中存储的静态变量在哪里? [重复]

java:把查询结果存储到resultSet对象中,在把该对象的数据放置在一个JTable对象中

通过 Java 在 Windows 中存储密码的位置

将 Java 库与 DB2 Java 存储过程捆绑在一起

用java在天蓝色表存储中存储复杂数据类型的正确方法是啥?