环境:1.安装arcgis客户端(百度有)

2.在该路径下ArcGIS\Desktop10.2\java\lib 找到arcobject.jar  这是java对arcgis二次开发所需的jar包,添加到工程中(百度有)

3.SDE本人采取的直连oracle的方式,也是查询资料后推荐的方式(需要本地安装oracle客户端,具体见百度)

以上环境准备好直接上代码:

注意:!!!!!

1.这里是很关键的地方,java在使用arcobject.jar时需要在VMOptions中添加一个java命令,目的是告诉jvm去寻找arcgis的dll组件,因为java不能像C#完美调用本地客户端服务

-Djava.library.path="C:\Program Files (x86)\ArcGIS\Desktop10.2\bin"  -Dfile.encoding=UTF8

路径写自己的arcgis安装路径。

2.java调用arcgis服务时必须先初始化ArcEngine环境,这会在代码中体现,个人猜测应该是调用组件的引擎

代码:

先讲下代码思路:shapefile-->shapefile的featureClass,SDE-->SDE的featureClass,shpFeatureClass插入到SDEFeatureClass中

初始化ArcEngine:

private staticAoInitialize ao= null;/*** 初始化ArcEngne* java操作arcgis必须先初始化ArcEngne环境 否则报错**/public static voidinitializeArcGISLincenses(){

/*所有AE10的与AE10.1以后版本的对应关系esriLicenseProductCodeArcInfo ==》esriLicenseProductCodeAdvancedesriLicenseProductCodeArcEditor==》esriLicenseProductCodeStandardesriLicenseProductCodeArcView ==》esriLicenseProductCodeBasic*/EngineInitializer.initializeVisualBeans();EngineInitializer.initializeEngine();try{

ao= newAoInitialize();if(ao.isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeAdvanced) == esriLicenseStatus.esriLicenseAvailable){

ao.initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);}else{

System.out.print("lincense failed");ao.checkOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst);ao.checkOutExtension(com.esri.arcgis.system.esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);ao.checkOutExtension(com.esri.arcgis.system.esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);ao.initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);ao.initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);ao.initialize(esriLicenseProductCode.esriLicenseProductCodeStandard);ao.checkOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);System.out.println("arcgis>>>...");}

}catch(Exception e){

e.printStackTrace();}

}

连接SDE:

public classConnectSDE {

/*** 连接SDE 返回SDE工作空间*@return*@throwsIOException*/public staticIWorkspace openSDE() throwsIOException{

IPropertySet iPropertySet = newPropertySet();iPropertySet.setProperty("AUTHENTICATION_MODE","DBMS");iPropertySet.setProperty("DB_CLIENT","ORCL");iPropertySet.setProperty("IS_GEODATABSE","true");iPropertySet.setProperty("DB_CONNECTION_PROPERTIES","ORCL");iPropertySet.setProperty("SERVER","192.168.80.35");//1、oracle$后是客户端配置的实例名时 IP(SERVER)可以不设置 随便设置一个IP也可以//2、oracle$后是服务器IP【:端口(如1521)】/服务器实例名 时 IP(SERVER)一定要填且必须对// sde:oracle$orcl(客户端配置的实例名) 或者 sde:oracle$127.0.0.1[:1521]/orcl(默认端口不报错)iPropertySet.setProperty("INSTANCE","sde:oracle:ORCL_192.168.80.35");iPropertySet.setProperty("USER","dsnjgeo");iPropertySet.setProperty("PASSWORD","gtis");//pPropertySet.SetProperty("VERSION", "SDE.DEFAULT");//默认版本可以不设置IWorkspaceFactory workspaceFactory = newSdeWorkspaceFactory();IWorkspace workspace = workspaceFactory.open(iPropertySet,0);if(workspace.exists()){

returnworkspace;}else{

return null;}

}

}

获取shapefile要素集:

/*** 获取shapefile要素集*@parampath //shapefile文件dizhi*@paramname featureClass的名称*@return*@throwsIOException*/private staticFeatureClass getFeatureClass(String path,String name) throwsIOException{

FeatureClass featureClass = null;try{

ShapefileWorkspaceFactory swf = newShapefileWorkspaceFactory();Workspace workspace = newWorkspace(swf.openFromFile(path,0));featureClass = newFeatureClass(workspace.openFeatureClass(name));

}catch(IOException e){

System.out.println("Couldn't access feature class :"+ name + " in "+ path);throwe;}

returnfeatureClass;}

开始导入:

/*** 批量导入*@paramshapePath*@paramfeatureClassName*@paramtargetFeatureName SDE中目标表名称*@throwsIOException*/public static voidshfToSDE(String shapePath,String featureClassName,String targetFeatureName) throwsIOException{

//初始化AE环境initializeArcGISLincenses();//获取shapefile要素集IFeatureClass shpFeature = getFeatureClass(shapePath,featureClassName);//获取SDE工作空间IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)ConnectSDE.openSDE();//指定SDE要素集IFeatureClass sdefeatureClass = featureWorkspace.openFeatureClass(targetFeatureName);//IFeatureCursor接口可用来访问要素类的一系列要素IFeatureCursor featureCursor = shpFeature.search(null,true);//NextFeature方法第一次调用时,实际指向第一条记录,之后每一次调用都是指向下一条记录//获取第一个featureIFeature feature = featureCursor.nextFeature();IFeatureCursor sdeFeatureCursor = sdefeatureClass.IFeatureClass_insert(true);IFeatureBuffer sdeFeatureBuffer = null;while(feature != null){

sdeFeatureBuffer = sdefeatureClass.createFeatureBuffer();IField shpField = null;IFields shpFields = feature.getFields();for(inti=0;i; i++){

shpField = shpFields.getField(i);intindex = sdeFeatureBuffer.getFields().findField(shpField.getName());if(index != -1){

sdeFeatureBuffer.setValue(index,feature.getValue(i));}

}

sdeFeatureCursor.insertFeature(sdeFeatureBuffer);sdeFeatureCursor.flush();feature = featureCursor.nextFeature();}

featureWorkspace = null;}

Java调用arcgis导入shape,java for arcgis 之——将shapefile导入SDE相关推荐

  1. java调用exe_要精通Java,先研究它的执行原理

    对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者叫底层机制)不失为一种良好的方式. 在本篇文章中,将重点研究java源代码的执行原理,即从程序员编写JAVA源代码,到最终形成产品,在整个过 ...

  2. java调用wcf_详解JAVA调用WCF服务的示例代码

    这一篇将要解决java中调用WCF的问题,使用的依旧是上一篇中托管在IIS中的WCF服务,本来我是打算用axis来写这篇文章的,可就在我开始之前,无意中发现了在java包中自带的wsimport工具 ...

  3. android java 调用js,Android中Java和JavaScript交互实例

    Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本.本文将介绍如何实现Java代码和Javascript代码的相互调用. 如 ...

  4. java调用exe_Windows系统中Java调用cmd命令及执行exe程序的方法

    Java调用cmd命令,并输出显示信息: package com.anxin.cmd.test; import java.io.BufferedReader; import java.io.Input ...

  5. java调用linux设备,使用Java调用Linux系统命令

    有时候,咱们在使用Java作一些操做时,可能性能上并不能达到咱们满意的效果,就拿最近工做中的遇到的一个场景来讲,须要对大量的小文件进行合并成一个大文件.java 最开始的想法是使用Java作文件操做, ...

  6. Java调用动态库 缺点,Java调用动态库所需要关心的有关问题

    Java调用动态库所需要关心的问题 标签: 无标签 利用JNative实现Java调用动态库(转) http://cctv663.blog.163.com/blog/static/1011921220 ...

  7. java 调用c 的dll,java如何调用C的dll

    java怎么调用C的dll 我做了1个java调用c++的dll 想做一个java调用C的dll就不知道怎么做了 在xx.c里 写 JNIEXPORT jint JNICALL Java_testdl ...

  8. java调用批处理文件_有关java调用批处理文件

    1 例子 java调用批处理文件 public classRunJarBat {public static voidrunJarBat() {//调用控制台 Runtime rt =Runtime.g ...

  9. java调用接口速度慢,Java 调用 webservice 接口,为什么这么慢

    Java 调用 webservice 接口,为什么这么慢,有没有好的优化方案,本人目前改成 http 方式发 soap 消息调用,速度依旧很慢,维持在平均 100ms 下不来. 之前用 cxf 的 J ...

最新文章

  1. windows下安装cygwin及配置
  2. 上班族漫画(转收藏)
  3. intellijidea课程 intellijidea神器使用技巧 6-1 Spring的关联
  4. NETSH WINSOCK RESET这条命令的含义和作用?
  5. HBase从入门到精通系列:误删数据如何抢救?
  6. mysql 连接其他数据库_普通用户从其他主机连接MySQL数据库
  7. 十多年前国内的三大杀毒软件瑞星、江民和金山毒霸的现状如何?
  8. VMware开启虚拟化实现CentOS创建KVM
  9. vue init download template_Webpack(四)Vue
  10. YUV422转RGB并显示于Qlabel
  11. 室外3D建图定位(0)Loam-3D激光定位算法的一些思考
  12. 人人网主页登录_“人人”归来!有人想找前女友,有人想删“黑历史”
  13. 【云原生】—— 学习云计算应用开发你需要掌握的五大技能
  14. js 数字不足位数补0
  15. wan端口未连接怎么弄_路由器WAN口未连接解决方法,WAN口未连接怎么办
  16. 正睿OI DAY12 ks5
  17. SAP_FI统驭科目
  18. NLP入门_自然语言处理_AI分支
  19. 并购Opera,360之蜜糖,猎豹之砒霜
  20. uni-app 滑到一定位置固定某个元素在顶部 吸顶解决方案 APP端 H5端

热门文章

  1. c语言实现天气预报步骤,天气预报的制作流程
  2. 直接赋值和使用new赋值
  3. mingw c语言编译器集合,MinGW-GNU工具集合-MinGW下载 v5.1.6官方版-完美下载
  4. go基础之map-增和改(二)
  5. 操作系统1—4章(最全复习题)
  6. 佛说:你给别人的一切,都会回到你自己身上。
  7. 我所了解的羌族之三:羌族服饰
  8. 分布式和集中式版本控制的区别
  9. 南桥芯片和北桥芯片的作用!
  10. 清华团队通过监督贝叶斯嵌入,对单细胞染色质可及性数据进行细胞类型注释...