- 浏览: 225130 次
- 性别:
- 来自: beijing
文章分类
API:http://edndoc.esri.com/arcsde/9.2/api/japi/docs/index.html
介绍
ArcSDE Java API提供了一个开放的、高层次的编程接口,以处理与分析空间信息。它包含了三个java包:Client包、Geometry包、以及Projection包。
Client包提供了实现ArcSDE服务器相关的功能的类。利用这个包建立的应用程序,能建立一个到ArcSDE实例的连接,查询一个层,或者与ArcSDE服务器进行通讯。
Geometry包提供了实现OGC(开源GIS)几何学功能接口的类。
Projection包提供了定义一个坐标系统与在不同坐标系统中转换的功能的类。
下面的主题对ArcSDE Java API的功能进行了大体的介绍。
设置API
在ArcSDE客户端安装的时候安装了下列文件:
1. jsde90_sdk.jar- 包含了ArcSDE客户端, 几何学功能以及SG Java API的类文件。
2. jpe90_sdk.jar – 包含了ArcSDE Projection Engine Java API的类文件。
3. concurrent.jar – 这个文件在使用PeCSTransformationX()时必须要用到, PeCSTransformationX()的功能是转换坐标系统。
4. sdejavautil.dll (Windows平台下) - contains the native code portion of the com.esri.sde.sdk.client.SeInstance start function.
5. libsdejavautil.so (Unix platforms only, libsdejavautil.sl on HP-UX) - contains the native code portion of the com.esri.sde.sdk.client.SeInstance start function.
Java Doc(HTML格式的API功能参考文档)可以在ArcSDE Developer Help中链接到,这个文档可以在ArcSDE客户端安装的CD上以及ESRI的技术支持网站中找到。
要建立一个使用ArcSDE java API的应用程序,你必须要在系统中安装Java 2 Standard Edition SDK,1.4.0版本以上。你还必须在你的CLASSPATH环境变量中加上jsde90_sdk.jar, jpe90_sdk.jar and concurrent.jar的文件路径。如果你还要使用到com.esri.sde.sdk.client.SeInstance的Start 函数,你还要往你的系统路径(Windows平台 system path;所有的Unix平台system library path)中添加sdejavautil library。
连接到ArcSDE
使用ArcSDE软件的第一步是建立一个ArcSDE服务器连接。SeConnection类就是用来建立一个连接的。下面是一个建立连接的例子:
public static void main (String args[])throws Exception {
SeConnection conn = null;
String server = “sdeserver”;
int instance = 5151;
String database = “sdedb”;
String user = “user”;
String password = “passwd”;
try {
conn = new SeConnection(server, instance, database, user, password);
}catch (SeException e) {
e.printStackTrace();
}
}
注意:instance参数是ArcSDE服务器的端口号。例如:5151,而不是esri_sde。
连接与数据库信息
SeConnection类还提供了取得ArcSDE服务器信息的方法,这些信息包括:服务器的版本以及连接的信息。使用SeConnection类还可以取得存储在RDBMS上的数据的相关信息。下面的例子展示了如何取得存储与ArcSDE数据库内的的图层列表信息(假设连接已经建立)。
Vector layerList = conn.getLayers();
for( int index = 0 ; index < layerList.size() ; index++ ) {
SeLayer layer = (SeLayer)layerList.elementAt(index);
// Displays the layer’s name
System.out.println( layer.getName() );
// Displays the layer’s ID
System.out.println( layer.getID().longValue() );
// Displays the layer’s spatial column name
System.out.println( layer.getSpatialColumn() );
}
SeLayer对象包含了图层的所有相关信息ArcSDE Java API函数参考中还列出了其他的取得ArcSDE layer的属性的方法.
Fetching data
数据从一张表或者一个layer中查询得出。SeQuery对象则是用于准备并执行一个查询操作,建立并执行一个查询的步骤如下:
1.建立一个SeSqlConstruct对象,这个对象中有想要查询的table/layer的名字。你也可以在SeSqlConstruct的构造函数中指定一个where查询语句。
SeLayer layer = new SeLayer( conn, layerName, spatialColumn );
SeSqlConstruct sqlConstruct = new SeSqlConstruct( layer.getName() );
2.创建一个String数组以存储要查询的表的列名。
String[] cols = new String[2];
cols[0] = new String("ColumnOneName");
cols[1] = layer.getSpatialColumn();
3.定义,准备并执行查询。
// Create a query stream between the client and server
SeQuery query = new SeQuery( conn, cols, sqlConstruct );
query.prepareQuery();
query.execute();
4.取查询结果的第一行存入SeRow对象中。
SeRow row = query.fetch();
5.取得SeRow的列结构。
// Get the definitions of all the columns retrieved
SeColumnDefinition[] colDefs = SeRow.getColumns();
6.先获取第一列的数据类型,然后获取该单元上的数据。
//获取第一列的数据类型。
int colNum = 0;
int dataType = colDefs[colNum].getType;
//假定数据类型只有String和Shape两种。
//可以自己添加一些语句以支持ArcSDE列的所有数据类型。
// ( See Working with Layers Example )
switch( dataType ) {
case SeColumnDefinition.TYPE_STRING:
System.out.println(colDef.getName()+ row.getString(colNum));
break;
case SeColumnDefinition.TYPE_SHAPE:
System.out.println(colDef.getName() );
SeShape shape = row.getShape(colNum);
//调用一个函数以获取Shape的属性。
break;
}
7.关闭查询。
query.close();
注意:为了取出查询结果所有的行,可以反复的调用query.fetch直至SeRow对象返回为空值为止。
插入数据
可以使用SeInsert类来往一张表或者图层中插入数据。插入数据的步骤如下:
1. 建立一个String对象,以存储要添加数据的表的列名。注意数组索引值;这些索引值将在SeRow.set*中使用到。String类型的列的索引值是0,而Shape类型的列的索引值是1.
String[] cols = new String[2];
cols[0] = new String("ColumnOneName");
cols[1] = layer.getSpatialColumn();
2.使用当前的连接句柄Connection conn,创建一个SeInsert对象.这将建立一个从客户端到服务器的Insert数据流(Stream)。然后根据表或图层的列名来插入数据,设置SeInsert对象为可写模式(setWriteMode)。
SeInsert insert = new SeInsert(conn);
insert.intoTable(layer.getName(),cols);
insert.setWriteMode(true);
3.获取SeInsert对象中将要添加的SeRow对象。然后设置要插入的数据,这一步用到SeRow.set*方法。利用第一步中确定的索引值来作为set*方法中的columnPosition参数。
SeRow row = insert.getRowToSet();
row.setString(0, "Shape Number One");
row.setShape(1,shape);
4.调用SeInsert对象的execute()方法,将前面设置好的SeRow对象插入到图层中。最后关闭Insert数据流(Stream)结束这次插入的操作。如果不再使用到连接句柄Connection conn,也顺便把连接关闭。
insert.execute();
insert.close();
注意:数据只能插入到由用户创建并维护的列中,如果某个列被注册为
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE
则这个列的值将有ArcSDE自动生成并插入,另外object id在ArcCatalog建立一张表或者Feature class的时候就生成了,由ArcSDE维护,用户不能插入,删除或者修改这一列中的值
发表评论
-
利用工具将shp文件导入到oracle spatial中
2012-05-21 14:20 43331 下载shp2sdo 工具,将工具放在 oracle按照目录 ... -
oracle s
2012-06-20 09:18 920<pre name="code" c ... -
oracle spatial 空间数据学习
2012-05-17 16:09 1749最近项目使用 空间数据库 oracle spatial ... -
树-Oracle用Start with...Connect By子句递归查询
2010-12-23 15:41 1150转 。。。。。。。。。。。。。。。。。。。。。。。。。 St ... -
无聊写的oracle 存储过程
2010-09-27 11:37 930create or replace procedure qin ... -
oracle中判断某个字段是否存在
2010-08-30 16:43 4340oracle中判断某个字段是否存在 docum ... -
Oracle 10g for Solaris 安装
2010-07-26 16:25 10841 .首先设置核心系统参数 # vi /etc/sy ... -
Oracle job 的写法
2010-04-29 14:22 1340写了一个job 很简单的,一分钟内 想一个表内插入 一 ... -
drop>; truncate >; delete
2010-03-09 20:40 801注意:这里说的delete是指 ... -
sys_guid()
2010-02-01 21:26 995select sys_guid() from dual -
Oracle timestamp
2009-12-04 17:13 1927我们都知道date和timesta ... -
Oracle 数据双机热备
2009-09-11 13:48 1777XXX公司ORACLE双机热备份 ... -
Oracle 导出视图view中的数据
2009-09-11 13:33 8761众所周知 Oracle 中的view是不存储数据的,想导出视 ... -
Oracle中TO_DATE TO_CHAR格式
2009-03-26 11:05 1897TO_DATE格式(以时间:2007-11-02 13 ... -
安装Oracle 10g 出现的问题
2009-03-26 11:32 1017Oracle 10G 对Oracle 9i 来说是一个巨大的 ... -
Oracle10g EM 无法登录出现调试出现一系列问题的调试。
2009-03-27 22:52 2154实际操作成功过,真实有效。 友情提示:对于多网卡机器上安 ...
相关推荐
最新版本(ArcGIS Sde 10 )破解许可,仅供学习交流使用。
arcgis_SDE_for_Java样例
ArcGIS Runtime SDK for Java 100.12.0 的...如需在生产环境中使用ArcGIS Runtime SDK for Java,请联系ESRI公司获得授权,现在也有国产替代产品GeoScne Runtime SDK for Java,可以联系易智瑞公司获得相关资源和授权。
arcgis server for java简单例子
ARCGIS SDE 10 破解文件 授权文件,ARCGIS SDE 10 破解文件 授权文件
arcgissde9.2授权文件
arcgissde 授权码 arcgissde 授权码 arcgissde 授权码 arcgissde 授权码 arcgissde 授权码
ESRI中国(北京)有限公司出品,介绍arcgisSDE,绝对权威!
ArcGis创建SDE数据库发布地图 一、 找到创建SDE 二、 创建SDE数据库连接 三、 正在创建 四、 创建完成 五、 ArcMap连接数据库 六、 创建特征类(建立空间表) 七、 编辑图层 八、 添加服务 九、 注册SDE数据库和...
ArcGIS SDE 10.1 for Postgresql 服务连接配置
arcgis sde 10授权文件 for oracle11g
ArcGIS Engine9.3提供了丰富的GIS组件方便用户快速的定制开发一个GIS应用程序,无需写代码即可实现GIS数据加载,地图操作等功能甚至可以实现高级编辑以及空间分析功能。
ArcGIS 9.2 Desktop + ArcGIS 9.2 server + ArcGIS SDE 安装图解 安装详解 傻瓜式教你安装ArcGIS,图片加说明
arcgis SDE数据源直连 技术资料
该文档是介绍ArcGIS Server for Java 9.3的安装配置,以及出现错误的解决办法。
Arcgis SDE 10的安装许可 可用
ArcGIS SDE 10 许可,供大家学习之用 ,版权属于美国ESRI公司所有
arcgis for java api. arcgis jar. arcgis-runtime-sdk-java-100.5.0