java操作oracle空间信息介绍(SDE)
2013-07-04 10:19
435 查看
sde是Spatial Database Engine简写,中文全称:空间数据库引擎。
SDE是一种客户/服务器软件,可使空间数据在工业标准的数据库管理系统中存储、管理和快速查询检索。把GIS数据放在RDBMS中,但是一般的RDBMS都没有提供GIS的数据类型(如点、线、多边形、以及这些feature之间的拓扑关系和投影坐标等相关信息),RDBMS只提供了少量的数据类型支持:int,float,double,Blob,Long ,char等,一般都是数字,字符串和二进制数据几种。并且RDBMS不仅没有提取对GIS数据类型的存储,也没有提供对这些基础类型的操作(如:判断包含关系,相邻、相交、求差、距离、最短路径等)
JAVA对sde操作,首先需要下载sde支持的jar包。jpe92_sdk.jar和jsde92_sdk.jar两个包,这两个包可以从安装的目录下找到。
下面是java获的sde的链接代码:
对sde数据进行添加,点线面的新增
sde查询接口实现
SDE信息删除操作
SDE是一种客户/服务器软件,可使空间数据在工业标准的数据库管理系统中存储、管理和快速查询检索。把GIS数据放在RDBMS中,但是一般的RDBMS都没有提供GIS的数据类型(如点、线、多边形、以及这些feature之间的拓扑关系和投影坐标等相关信息),RDBMS只提供了少量的数据类型支持:int,float,double,Blob,Long ,char等,一般都是数字,字符串和二进制数据几种。并且RDBMS不仅没有提取对GIS数据类型的存储,也没有提供对这些基础类型的操作(如:判断包含关系,相邻、相交、求差、距离、最短路径等)
JAVA对sde操作,首先需要下载sde支持的jar包。jpe92_sdk.jar和jsde92_sdk.jar两个包,这两个包可以从安装的目录下找到。
下面是java获的sde的链接代码:
/** * 连接sde服务 * @return */ public SeConnection getConnection () { SeConnection conn = null ; try { conn = new SeConnection(SDE_SERVER_IP, SDE_PROT, SDE_DATEBASE_SID, SDE_USERNAME, SDE_PASSWORD); } catch (SeException e) { return null; } return conn; }
对sde数据进行添加,点线面的新增
/** * 添加资源信息点到sde中 * @param pointBean 坐标点 POJO * @param tbName 图层名称 * @param String typeName 所画的类型 1 点 2 线 3 面 * @return Long sde的id * @throws Exception */ public Long addPointObject(PointBean pointBean, List columnList, String tableName, String typeName) throws Exception { SeLayer insertLayer = null; SeConnection conn = null; Long intsertRowID = null; SeInsert insert = null; try { conn = this.getConnection(); insertLayer = new SeLayer( conn, tableName, "SHAPE"); if (insertLayer == null) { throw new Exception("找不到空间表:" + tableName); } conn.startTransaction(); int arrayLength = columnList.size() + 1 ; String[] cols = new String[arrayLength]; cols[0] = "SHAPE"; for (int i = 0 ;i<columnList.size() ; i++) { ColumnBean columnBean = (ColumnBean)columnList.get(i); cols[i+1] = columnBean.getName(); } insert = new SeInsert(conn); insert.intoTable(insertLayer.getName(), cols); insert.setWriteMode(true); SeCoordinateReference coordref = (SeCoordinateReference) insertLayer.getCoordRef(); SeShape shape = new SeShape(coordref); if ("1".equals(typeName)) { this.addPoint(pointBean, shape); } else if ("2".equals(typeName)) { this.addLine(pointBean, shape); } else if ("3".equals(typeName)) { this.addPolygon(pointBean, shape); } SeRow row = insert.getRowToSet(); row.setShape(0, shape); for (int i = 0 ;i<columnList.size() ; i++) { ColumnBean columnBean = (ColumnBean)columnList.get(i); if (columnBean.getTypeObject() == 1) { row.setNString(i+1, String.valueOf(columnBean.getValObject())); } else if (columnBean.getTypeObject() == 2) { row.setInteger(i+1, Integer.parseInt(columnBean.getValObject().toString())); }else if (columnBean.getTypeObject() == 3) { row.setDouble(i+1, Double.parseDouble(columnBean.getValObject().toString())); } } insert.execute(); intsertRowID = new Long(insert.lastInsertedRowId().longValue()); conn.commitTransaction(); } catch (Exception ex) { ex.printStackTrace(); conn.rollbackTransaction(); } finally { if (insert != null) { insert.close(); } if (conn != null) { conn.close(); } } return intsertRowID; }
sde查询接口实现
/** * 查询sde * @param productId 产品id * @throws SeException */ public SeQuery searchSde (Long productId, String tableName) throws SeException { SeConnection conn = getConnection(); SeLayer layer = new SeLayer( conn, tableName, "SHAPE"); SeSqlConstruct sqlConstruct = new SeSqlConstruct(layer.getName()); if (productId != null) { sqlConstruct.setWhere("yid="+productId.intValue()); } String[] cols = null; if (tableName.equals("YU_AN_POINT") || tableName.equals("FANG_AN_POINT")) { cols = new String[4]; cols[0] = new String("OBJECTID"); cols[1] = layer.getSpatialColumn(); cols[2] = new String("NAME"); cols[3] = new String("IMAGETYPE"); } else { cols = new String[3]; cols[0] = new String("OBJECTID"); cols[1] = layer.getSpatialColumn(); cols[2] = new String("NAME"); } System.out.println("cols.length : " + cols.length); SeQuery query = new SeQuery(conn, cols, sqlConstruct ); query.prepareQuery(); query.execute(); return query; }
SDE信息删除操作
/** * * 删除 通过列对应的值 * @param id 值 * @param column 列 * @param tbName 表名 * @throws SeException */ public void deletePointObject(String id, String column, String tbName) throws SeException { SeConnection conn = null; SeLayer layer = null; SeDelete delete = null; try { conn = this.getConnection(); layer = new SeLayer(conn, tbName, "SHAPE"); // 得到对应图层 if (layer == null) { throw new Exception("找不到空间表:" + tbName); } conn.startTransaction(); delete = new SeDelete(conn); delete.fromTable(layer.getName(), column + "='" + id+"'"); conn.commitTransaction(); } catch (Exception ex) { conn.rollbackTransaction(); } finally { if (delete != null) { try { delete.close(); } catch (SeException e) { e.printStackTrace(); throw e; } finally { if (conn != null) { conn.close(); } } } } }
相关文章推荐
- java操作oracle空间信息介绍(SDE)
- java操作oracle空间信息介绍
- java操作oracle空间信息介绍
- java操作oracle空间信息介绍
- 【Java】【Oracle】Java操作Oracle 12c数据库基本步骤介绍——从零开始#1
- 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询。这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧!
- ORACLE 传输表空间介绍与实验操作
- oracle 数据库imp操作导入dmp文件时表空间问题
- Oracle用户信息查询操作语句
- 查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件)
- ORACLE中的日期加减操作实例介绍
- Oracle 用户信息查询,操作语句
- java+oracle+web(第六天) tomcat介绍 (三)建立虚拟目录
- 直接使用SQL操作Oracle空间数据的原理以及配置方法
- Oracle_spatial的空间操作符介绍
- 微信支付—1.总结可用信息—java前后操作支付
- 【oracle】 表名,表字段,表空间等的操作
- 使用java操作oracle的blob字段
- 实时显示指定教学区的课表信息(Java+Oracle)
- 对ORACLE的TEMP和UNDO空间的操作集合