supermap mysql_超图supermap sdx数据库用sql实现空间查询

本文介绍了如何使用SQL对超图SuperMap的sdx数据库进行空间查询,对比了iObject和REST接口的方法,并强调SQL方式在性能上的优势。内容涵盖了超图对PostGIS的支持,以及如何利用OpenGIS标准的PostGIS空间查询接口进行操作。同时提供了属性查询的代码示例。
摘要由CSDN通过智能技术生成

在此介绍用sql对超图的空间数据库(sdx)进行空间查询,优点如下:

1。超图推荐的方式是用iobject,此方法要引入iobject

2。超图另一个推荐的方式是用iserver的REST接口,但web接口缺点在于性能一般,尤其是返回数据比较多以及并发频繁的情况下性能不好

超图空间数据库支持多种数据库产品(DBMS),可这种方式只支持PostGIS,也即是下图的

9c54a2b1719107702242967d2028e280.png

PS:注意在超图sdx的体系,Postgresql和PostGIS是两种数据库,而开源空间数据库PostGIS依赖于postgresql,可以说空间数据库PostGIS也是postgresql,注意区别

PS:超图idesktop部分版本不支持PostGIS,例如我只在idesktop 9D java 2019(9.1.0)能成功使用

当超图PostGIS数据库建好后,建立好jdbc连接(本文略,总之按postgresql建连接就行),然后就可以用sql做空间查询,以及输出几何对象

sql中使用空间查询的“接口”跟开源空间数据库PostGIS是一样的,原理是超图PostGIS也兼容开源PostGIS的功能

开源PostGIS的空间查询接口遵循OpenGIS标准,以下是开源PostGIS的官方文档,有接口的详细说明:https://postgis.net/docs/manual-dev/reference.html

另外个人也可以baidu关键词:postgis查询,来找到相关文章

以下贴一些代码

/*** 属性查询

*

*@throwsException*/

private void attrQuery() throwsException {//属性查询//例子:查询名称为f1的字段,值等于 面1 的要素(数据/行)//图层名//sde数据库带空间属性的表叫图层,因此图层跟表类似

String layerName = "polygon1";//获取默认数据库连接

Connection conn =JdbcConnConfigUtil.getDefaultConn();//查询使用的是sql,就是普通的sql//select至from之间是输出的字段,其中ST_AsText(smgeometry)是输出几何对象并转成wkt格式,smgeometry代表几何对象,ST_AsText是一个函数可以把几何对象转成wkt格式的字符串//ST_开头的函数属于开源空间数据库PostGIS的功能,可以理解为写在sql语句里的一些函数,详细api在这https://postgis.net/docs/manual-dev/reference.html

String sql = "select f1,ST_AsText(smgeometry) as wkt" +

" from " + layerName + " t " +

//查询条件,本demo是属性查询因此跟一般sql一样

"where t.f1='面1'";//查询代码,跟jdbc一样的用法

PreparedStatement pst = null;

ResultSet rs= null;try{

pst=conn.prepareStatement(sql);//执行查询

rs =pst.executeQuery();//while循环变量查询结果

while(rs.next()) {//通过字段索引获取字段值,注意:索引从1开始!!!!//获取几何对象,wkt格式//wkt格式既可以构建几何对象(如何构建后面有说),也可以输出到前端供前端使用

String wkt = rs.getString(2);//获取普通字段的值

Long f1 = DataConvertUtil.strToLong(rs.getString(1));

}

}finally{//关闭连接,清除各种对象

DbUtils.closeQuietly(conn, pst, rs);

}

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值