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

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

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

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

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查询,来找到相关文章

以下贴一些代码

    /**
* 属性查询
*
* @throws Exception
*/
private void attrQuery() throws Exception {
//属性查询
//例子:查询名称为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);
}
}
 

超图supermap sdx数据库用sql实现空间查询的更多相关文章

  1. mysql数据库使用sql命令窗口查询的数据,改成sql语句导入到mysql数据库中

    1.查询语句为select * from t_table;导出的数据格式如下: 2.将数据文本备份,然后使用NOTEPAD++打开,然后只拷贝数据到新建txt中,然后进行如下替换: 1)将“ | ”分 ...

  2. 【数据库】sql连表查询

    SQL总结 连表查询 连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要. 只有真正了解它们之间的区别,才能正确使用. 1.Union UNION 操作符用于合并两 ...

  3. Oracle 数据库常用SQL语句(2)查询语句

    一.SQL基础查询 1.select语句 格式:select 字段 from 表名; 2.where 用于限制查询的结果. 3.查询条件 > < >= <= = != 4.与 ...

  4. 3. SQL Server数据库状态监控 - 可用空间

    原文:3. SQL Server数据库状态监控 - 可用空间 数据库用来存放数据,那么肯定需要存储空间,所以对磁盘空间的监视自然就很有必要了. 一. 磁盘可用空间 1. 操作系统命令或脚本.接口或工具 ...

  5. Oracle数据库之SQL基础(一)

    主要内容:用户与表空间:表与约束:查询语句. 一.概述 Oracle安装:访问官网,下载 二.用户与表空间 在安装Oracle时在开始菜单里可以用sql puls登录oracle. ★1.系统用户 s ...

  6. 实例讲解Oracle数据库设置默认表空间问题

    实例讲解Oracle数据库设置默认表空间问题   实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...

  7. oracle数据库元数据SQL查询

    oracle数据库经典SQL查询 .查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from ...

  8. 【数据库】SQL优化方法汇总

    最近在研究SQL语句的优化问题. 下面是从网上搜集的,有的地方有点老了,可是还是有很多可以借鉴的地方的. 如何加快查询速度? 1.升级硬件. 2.根据查询条件,建立索引,优化索引.优化访问方式,限制结 ...

  9. 用友金蝶SQL数据库误格式化恢复 SQL数据库修复 SQL数据库恢复 工具 方法

    用友金蝶SQL数据库误格式化恢复 SQL数据库修复 SQL数据库恢复 硬盘误格式化.重分区.重装操作系统覆盖 SQL数据解决方法 [客户名称]:贵州铜仁市开天驾驶人培训中心 [软件名称]:用友T3普及 ...

随机推荐

  1. Redis实现求交集操作结果缓存的设计方案

    Redis的集合操作 实话说,Redis提供的集合操作是我选择它成为内存数据库的一个主要理由,它弥补了传统关系型数据库在这方面带来的复杂度,使得只需要简单的一个命令就可以完成一个复杂SQL任务,并且交 ...

  2. 在VS中对WCF服务进行更新,但是配置文件没有更新解决办法

    取消下面的勾选框

  3. Redis使用的相关问题

    Redis用那些数据结构? 字符串类型String 字典Hash 列表List 集合Set 有序集合SortedSet HyperLogLog.Geo.Pub/Sub Redis Module.Blo ...

  4. putty连接虚拟机注意事项

    1,虚拟机ssh服务要开 2,虚拟机最好把防火墙关掉 3,虚拟机和主机的IP要在同一网段 4,大哥,putty上面那个才是要连接的远程主机IP啊!下面那个是会话名,写什么都行. 5,可以选择UTF8, ...

  5. spring-boot-starter-data-redis学习笔记01

    1.Redis在Unbuntu14开启, 进入安装的src目录: 1.修改redis.conf,因为redis默认是受保护模式. protected-mode yes   (改为no) bind 12 ...

  6. c#实现最简快速排序,你绝对可以看懂

    原创文章,转载请注明出处 算法对于程序员的重要性不言而喻,今天我和大家分享算法中的一个基础算法,快速排序.作为一名程序员,相信大家都不陌生,但是要大家徒手一次性写出来,我估计还是有难度的.那么废话不多 ...

  7. php 数值转多少年,多少天,多少时,多少分,多少秒

    function Sec2Time($time){ if(is_numeric($time)){ $value = array( "years" => 0, "da ...

  8. uoj#399. 【CTSC2018】假面(概率期望)

    传送门 记\(p_{i,j}\)为\(i\)还剩\(j\)滴血的概率,那么\(i\)最后血量的期望就是\[E_i=\sum_{j=0}^{m_i}j\times p_{i,j}\] 然后\(p\)数组 ...

  9. IT兄弟连 JavaWeb教程 使用AJAX发送GET请求并获取响应

    GET请求用于获取数据,有时候我们需要获取的数据需要通过"查询参数"进行定位,在这种情况下,我们会将查询参数追加到URL的末尾,令服务器解析. 使用Ajax发送GET请求非常简单, ...

  10. 剑指Offer的学习笔记(C#篇)-- 跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 一 . 解题思路. 由题目可知,青蛙一次可以跳一阶或者两阶.假设台阶为 ...