跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Java操作Oracle空间信息介绍(SDE)

Java对sde操作,首先需要下载sde支持的jar包。jpe92_sdk.jar和jsde92_sdk.jar两个包,这两个包可以从安装的目录下找到。

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服务* @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;}立即学习“Java免费学习笔记(深入)

”;

对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 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 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信息删除操作

相关文章