【ArcGIS/Java】利用ArcGIS的java API连接SDE库、sql操作
2017-07-31 14:11
435 查看
本文主要讲解一下怎么使用ArcGIS的Java API来连接SDE数据库,以及怎么实现空间数据的查询。
前提:
ArcGIS的空间数据库SDE连接到Oracle的空间数据库中。
java API使用 arcgis
9.2版:http://edndoc.esri.com/arcsde/9.2/api/japi/docs/overview-summary.html
10.0版:http://help.arcgis.com/en/geodatabase/10.0/sdk/arcsde/api/japi/docs/index.html
1,对于取值的问题
row = query.fetch();//只是取一行数据,因此需要循环取值
while(row!=null) {
//other codes
row = query.fetch()
}
2,对于取哪一列
row.getShape(1);
row.getShape(int rownum)//rownum是指第几列
3,整个步骤流程
其中上面的:
这里的PropertiesUtil.getProperties()方法是笔者自己写的,读者也可以自己写一部分。
这几个参数配置格式示例如下:
SDEserver=192.168.106.109
SDEinstance=5151
SDEdatabase=orcl
SDEuser=sde
SDEpassword=password
前提:
ArcGIS的空间数据库SDE连接到Oracle的空间数据库中。
java API使用 arcgis
9.2版:http://edndoc.esri.com/arcsde/9.2/api/japi/docs/overview-summary.html
10.0版:http://help.arcgis.com/en/geodatabase/10.0/sdk/arcsde/api/japi/docs/index.html
1,对于取值的问题
row = query.fetch();//只是取一行数据,因此需要循环取值
while(row!=null) {
//other codes
row = query.fetch()
}
2,对于取哪一列
row.getShape(1);
row.getShape(int rownum)//rownum是指第几列
3,整个步骤流程
package test; import java.net.MalformedURLException; import java.sql.Blob; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.esri.sde.sdk.client.SeConnection; import com.esri.sde.sdk.client.SeException; import com.esri.sde.sdk.client.SeLayer; import com.esri.sde.sdk.client.SeQuery; import com.esri.sde.sdk.client.SeRow; import com.esri.sde.sdk.client.SeShape; import com.esri.sde.sdk.client.SeSqlConstruct; import com.esri.sde.sdk.geom.Point; import db.DBConnectionCreater; import net.sf.json.JSONArray; import util.PropertiesUtil; import entity.TaxiInfoBean; public class sdetest { public JSONArray getLocation(){ String server=PropertiesUtil.getProperties("Database", "SDEserver"); String instance=PropertiesUtil.getProperties("Database", "SDEinstance"); String database=PropertiesUtil.getProperties("Database", "SDEdatabase"); String user=PropertiesUtil.getProperties("Database", "SDEuser"); String password=PropertiesUtil.getProperties("Database", "SDEpassword"); SeConnection seconn=null; SeQuery query=null; SeRow row=null; try { seconn=new SeConnection(server,instance,database,user,password);//第一步,连接数据库 SeLayer layerzrq = new SeLayer(seconn, "ZDDX_TAXI", "SHAPE"); String layernamezrq = layerzrq.getName(); SeSqlConstruct sqlConstruct = new SeSqlConstruct(layernamezrq);//第二步,生成sql sqlConstruct.setWhere("class=5 or class=7");//第三步,设置条件 String[] cols = new String[2]; cols[0] = new String("NAME"); // cols[1] = layerzrq.getSpatialColumn(); cols[1] = new String("SHAPE"); query = new SeQuery(seconn,cols,sqlConstruct);//第四步,查询 query.prepareQuery(); query.execute(); row = query.fetch();//第五步,取值 SeShape shape=null; double x,y; while (row!=null) { // shape = row.getShape(1). // double x = row.getShape(1).asPoint().generateLabelPoint().getX();//取点坐标 // double y = row.getShape(1).asPoint().generateLabelPoint().getY(); double[][][] coor = row.getShape(1).getAllCoords();//对于任意形状(点,线,面)三种数据,取坐标 x = coor[0][0][0]; x = coor[0][0][1]; String name = row.getString(0); row = query.fetch(); // System.out.println(x+","+y); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { query.close();//关闭查询 seconn.close();//关闭连接 } catch (SeException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; } }
其中上面的:
String server=PropertiesUtil.getProperties("Database", "SDEserver"); String instance=PropertiesUtil.getProperties("Database", "SDEinstance"); String database=PropertiesUtil.getProperties("Database", "SDEdatabase"); String user=PropertiesUtil.getProperties("Database", "SDEuser"); String password=PropertiesUtil.getProperties("Database", "SDEpassword");
这里的PropertiesUtil.getProperties()方法是笔者自己写的,读者也可以自己写一部分。
这几个参数配置格式示例如下:
SDEserver=192.168.106.109
SDEinstance=5151
SDEdatabase=orcl
SDEuser=sde
SDEpassword=password
相关文章推荐
- 利用JavaAPI对HBase操作
- 利用Java+sqlserver 实现对数据库的操作
- java中连接数据库操作的语句,获得执行sql语句对数据库进行操作
- 利用javaApI【eclipse】操作HBase时,出现异常的解决方案
- 利用JDBC实现java与MySQL数据库的连接及相关操作
- 利用P6SPY +SQL Profiler记录、统计web app对数据库的操作。 - 每日E读 - BlogJava
- JAVA的JDBC连接与sql操作
- 利用hdfs的java api进行文件操作注意事项
- Java连接MySQL数据库和Oracle数据库并进行简单的SQL操作的一次尝试
- 利用C#对远程服务进行操作,如MSSQLSERVER等。
- 利用Java的默认权限来操作成员变量
- 利用P6SPY +SQL Profiler记录、统计web app对数据库的操作。
- jdbc (java和sql的连接)
- 利用JAVA操作EXCEL文件
- 使用EJB3 Java 持久化API来标准化Java的持久化操作
- 利用SQL中的递归返回多行数据的连接
- jexcelapi java对excel的操作
- 利用JAVA操作EXCEL文件
- java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver Eclipse3.1 数据库连接测试程序(SQL Server 2000 Driver for JDBC Service Pack 3 安装测试)
- 利用JAVA操作EXCEL文件(JAVA EXCEL API)