sde是Spatial Database Engine简写,中文全称:空间数据库引擎。
SDE是一种客户/服务器软件,可使空间数据在工业标准的数据库管理系统中存储、管理和快速查询检索。把GIS数据放在RDBMS中,但是一般的RDBMS都没有提供GIS的数据类型(如点、线、多边形、以及这些feature之间的拓扑关系和投影坐标等相关信息),RDBMS只提供了少量的数据类型支持:int,float,double,Blob,Long ,char等,一般都是数字,字符串和二进制数据几种。并且RDBMS不仅没有提取对GIS数据类型的存储,也没有提供对这些基础类型的操作(如:判断包含关系,相邻、相交、求差、距离、最短路径等)
JAVA对sde操作,首先需要下载sde支持的jar包。jpe_sdk.jar和jsde_sdk.jar两个包,这两个包可以从安装的目录下找到。c:/arcgis/server10.0/java/lib/sde/
下面是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(); } } } } }
相关推荐
本文将详细介绍如何利用Oracle提供的`MDSYS.CS_SRS`表以及`sdo_cs`包来进行空间坐标的转换,并提供实用的操作步骤和示例。 #### 二、理解坐标系统 在讨论具体的转换方法之前,我们首先需要了解两个基本概念:大地...
导入时,根据导出的文件,在新的环境中重新创建SDE连接并导入数据,恢复原有的地理空间信息。 总结来说,创建和管理SDE数据库是GIS工作流中的关键环节。从创建数据库连接、建立空间表,到发布地图服务、注册数据库...
本文将详细介绍如何配置SQL空间查询ST_Geometry,以便于更好地利用ArcGIS进行空间数据查询。 #### 二、ST_Geometry的优势 ST_Geometry是一种专门设计用于存储和处理空间数据的数据类型。它提供了以下几方面的优势...
ARCGISSDE9.2是GIS(地理信息系统)领域中一个重要的版本,它为用户提供了强大的空间数据管理和分析功能。此版本的出现,进一步提升了地理信息系统的实用性和易用性,尤其在授权key和ARCGISSDK的支持下,开发者和...
标题中的“远程上传shp文件后添加到SDE已有的FeatureClass里”涉及到GIS(地理信息系统)技术,其中SDE通常指的是ESRI的ArcSDE,一个用于存储和管理地理空间数据的数据库扩展。这个过程涵盖了几个关键步骤,包括文件...
这包括对硬件配置(如处理器速度、内存大小和磁盘空间)的要求,以及软件环境,如Oracle数据库版本、操作系统兼容性(如Windows或Unix)、Java运行环境(JRE或JDK)等。安装前还需要准备好所有必要的许可证文件和...
SDE是Esri开发的一种数据库管理系统,用于处理和管理大量地理信息,支持多种主流的关系型数据库系统,如Oracle、SQL Server和PostgreSQL等。 二、C API详解 C API是ArcSdeSDK的基础,为开发者提供了原始的、高性能...
它提供了与多种数据库系统的接口,如Oracle、SQL Server、IBM DB2等,使得GIS(地理信息系统)软件能够高效地处理大规模的空间数据。在Java环境下开发ArcSDE应用,通常会用到SDK提供的jar包。以下是关于这些jar包的...
本文档将详细介绍如何在Redhat 5.5 x64操作系统上安装和配置ArcSDE 9.3.1与Oracle 10g的集成。 ### 第一章 系统环境准备 **1.1 系统版本号** 确保操作系统为Redhat 5.5 x64,这是一个支持64位计算的Linux发行版,...
ST_Geometry是ESRI公司开发的一种空间数据类型,它符合国际标准化组织(ISO)和开放地理信息系统协会(OGC)的标准。它以用户自定义数据类型(user-defined data types)的形式被集成到数据库管理系统中,比如Oracle...
2. **SDE(ArcSDE)**:ArcSDE(Spatial Database Engine)是Esri提供的一个中间件,用于在关系数据库管理系统(RDBMS)中存储、管理和操作地理空间数据。它支持多种数据库平台,如Oracle、SQL Server、PostgreSQL等...
Geotools是一个Java库,它提供了处理地理空间数据的能力,包括读取、写入和操作多种数据格式,如Shapefile(.shp)。而Oracle数据库则是一款强大的关系型数据库管理系统,支持存储和管理大量的地理空间数据。 当...
本教程将详述如何在您的计算机上安装ArcGIS 10.1、Oracle 11g数据库以及WebLogic 10.3.6服务器,这是一套完整的地理信息系统(GIS)解决方案,用于数据管理和Web应用程序部署。 ### 1. 系统要求 #### 1.1 受支持的...
4. 查询操作:利用sde_execute_query()函数执行SQL查询,获取地理空间数据。此外,还可以使用sde_fetch_rows()来获取查询结果中的行数据。 5. 错误处理:在进行操作时,必须注意错误处理。ArcSDE C API返回的错误...
ArcSDE(Spatial Database Engine)是Esri开发的数据存储和管理工具,它为各种关系型数据库管理系统(如Oracle、SQL Server、PostgreSQL等)提供了空间数据支持。ArcSDE将复杂的GIS功能集成到数据库中,实现大规模...
它提供了在多种关系数据库管理系统(如Oracle、SQL Server、PostgreSQL等)中存储和管理地理信息的功能,支持大规模的地理数据管理和复杂的空间分析。 而Geoserver则是一款基于Java的开源地理信息系统服务器,遵循...
- 配置数据库类型为Oracle,并指定数据库名称、主机地址、端口号以及先前创建的表空间等信息。 2. **建立SDE连接**: - 在ArcCatalog中,选择“数据库连接”,点击新建SDE连接。 - 输入连接详情,包括数据库名称...
在实际应用中,这些组件协同工作,使得用户能够进行复杂的地理空间数据操作,如数据编辑、地图制作、空间分析、服务发布等。例如,ArcSDE用于存储大规模的空间数据,ArcServer则负责将这些数据转化为可在线访问的...
5. **ArcSDE开发**:对于开发人员,手册将介绍如何利用ArcSDE的API(如Java、.NET)进行应用开发,创建定制的GIS功能。包括连接数据库、执行SQL查询、处理地理特征等操作。 6. **数据迁移与整合**:了解如何将现有...
SDE允许用户高效地处理大规模的地理信息,并且可以与多种关系型数据库管理系统(如Oracle、SQL Server等)无缝集成。在本课程的第7章中,你将学习如何配置和使用SDE,包括创建、连接和管理地理数据库,以及进行版本...