J2EE(java)后台调用ArcGIS Engine(AE)的部署和代码
arcgis的BS开发解决方案一直是个坑,主推的地图服务查询速度慢,需要异步,功能少。相对来说主要用于CS的AE功能更强大全面,只是部署有点复杂
本文软件环境:
win7 sp1 64位
MyEclipse 10,jdk 1.6.45 32位,tomcat 6.0.41 32位,ArcGIS Desktop 10.0(或ArcGIS Engine)
1.1.1. 安装软件
ArcGIS Desktop或ArcGIS Engine Runtime
建议装desktop,因为AE Runtime安装文件不容易找,另外desktop功能也强大些,本文也以Desktop为例
1.1.2. arcobjects.jar
arcobjects.jar是ao的jar包,要把此文件放在我们代码的lib文件夹里
1.1.2.1. arcobjects.jar的提取说明:
arcobjects.jar是ao的jar包,这个jar包在desktop和engine runtime都有提供(可是ao sdk没有)
在我们的系统中,用desktop提供的,这个jar包在desktop安装目录的java\lib下,例如我的是D:\Program Files (x86)\ArcGIS\Desktop10.0\java\lib

1.1.3. VM Arguments配置
1.1.3.1. 开发环境Eclipse配置
此配置在开发调试时有效
打开window>preferences

在输入arcgis desktop的bin路径:
-Djava.library.path="D:\Program Files (x86)\ArcGIS\Desktop10.0\Bin"
此路径每台机可能不同
1.1.3.2. 运行环境Tomcat配置
此配置在双击运行startup.bat启动tomcat时有效
打开tomcat\bin的catalina.bat,在
set "CURRENT_DIR=%cd%"
的下方插入一行

arcgis desktop的bin路径:
-Djava.library.path="D:\Program Files (x86)\ArcGIS\Desktop10.0\Bin"
此路径每台机可能不同
hello world
以下是一段简单的代码,连接SDE并对图层查询,跟C#调AE没太大区别,这里关键的是类AoInitUtil

以下是类AoInitUtil的initializeEngine函数
其中第11行的函数的两个参数是配置当前程序的环境,也就是说在团队里可以装不同的arcgis版本(但相信仅限于10.x)
public AoInitialize initializeEngine(AoInitialize aoInit) {
try {
EngineInitializer.initializeEngine();
// 设置使用的arcgis产品和版本,使ao能运行在不同的arcgis环境下
// 下面这行代码会报错,可是VersionManager又要在AoInitialize实例化前运行,而且这个错不影响代码运行,所以暂时不管
VersionManager versionManager = new VersionManager();
// 第一个参数是arcgis产品编号:1=desktop,2=engine,5=server
// 此参数可以通过枚举查看esriProductCode
// versionManager.loadVersion(1, "10.0");
versionManager.loadVersion(Integer.parseInt(ConfigProperties
.getByKey("aoRuntimeProduct")), ConfigProperties
.getByKey("aoRuntimeVersion"));
aoInit = new AoInitialize();
// 下面虽然有Engine和ArcInfo两种产品,但在本系统只有Engine才能用,ArcInfo会出错
if (aoInit
.isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine) == esriLicenseStatus.esriLicenseAvailable)
aoInit.initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
else if (aoInit
.isProductCodeAvailable(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeArcInfo) == com.esri.arcgis.system.esriLicenseStatus.esriLicenseAvailable)
aoInit.initialize(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeArcInfo);
return aoInit;
} catch (Exception e) {
e.printStackTrace();
return aoInit;
}
}
后话:
PS:无论是java还是.net版本AE,其jar或dll只是个中介,AE的核心AO是COM,出了问题可以往COM方面去想
PS2:不知道是java还是BS的原因,比我们C#+winform上用AE要不稳定很多
J2EE(java)后台调用ArcGIS Engine(AE)的部署和代码的更多相关文章
- Java后台调用gcc编译C语言代码
想做一个能够在线编译代码运行的平台,Java和SQL已经支持了,因为是用Java写的后台,所以Java和SQL挺容易就实现了,做到支持C的时候就卡住了,网上搜了一下这种帖子好像很少. 我采取的办法是就 ...
- java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)
项目开发中难免遇到外部接口的调用,小生今天初次接触该类,跟着API方法走了一遍,如有不对的地方,还请哆哆指正,拜谢! 1 package com.cplatform.movie.back.test; ...
- md5签名加密(用于java 后台调用短信平台接口实现发短信)
MD5Util 方法 package com.funcanteen.business.action.pay.util; import java.security.MessageDigest; publ ...
- java后台调用url无协议
url格式不正确,可能有"www.baidu.com" "这个不能有 // 下载pdf public void downpdf(String URL, String ...
- 解决ArcGIS Engine AE 读取shapefile中文属性乱码的一条偏方
最近写一个程序,AE+C#,读shp字段属性,其中读到中文就乱码了 这个问题比较奇怪,用AE很多年了,怎么突然就乱码呢,用Arcmap打开,没乱码,证明不是数据问题 网上搜搜,很多人说是许可初始化的问 ...
- java后台调用url
版权声明:本文为博主牟云飞原创文章,未经博主同意不得转载. https://blog.csdn.net/myfmyfmyfmyf/article/details/32690757 QXOutStrea ...
- java后台调用http请求
1:代码 @Value("${sms.username}") 可以将sms.properties配置文件中的值注入到username //这种方式是将sms.properti ...
- java后台调用文件上传接口
借鉴:https://blog.csdn.net/yjclsx/article/details/70675057 /** * 调用流程上传文件接口上传文件 * @param url * @param ...
- C#调用ArcGIS REST服务
ArcGIS REST API提供了简单.开放的接口来访问和使用ArcGIS Server发布的服务.使用ArcGIS REST API通过URL可以获取和操作每一个服务中的所有资源和操作. 1.使用 ...
随机推荐
- tomcat Manger App
转发链接,嘿嘿http://simeon.blog.51cto.com/18680/58877
- JSTL获取list的大小,jstl获取list 的长度,EL表达式获取list的长度,EL表达式获取list大小
在jsp页面中不能通过${list.size}取列表长度,而是 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" pref ...
- MySQL修改root密码的几种方法
方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:my ...
- Php 笔记1-----request和 response
不能大于2KB 第一次学习 php, 因为以前习惯了 .net, 所以 刚开始总是按照.net的 思路去思考, 怎么获取 客户端发过来的 request对象啊, 怎么设置response啊.. ...
- 网页元素定位神器之Xpath详解
摘要: 经常在工作中会使用到XPath的相关知识,但每次总会在一些关键的地方不记得或不太清楚,所以免不了每次总要查一些零碎的知识,感觉即很烦又浪费时间,所以对XPath归纳及总结一下. ... ...
- 使用FTP搭建YUM
VSFTP搭建YUM源 1.安装FTP [root@FTP kel]# rpm -qa |grep vsftp vsftpd-2.2.2-6.el6_0.1.x86_64 首先需要安装的ftp软件为v ...
- 数往知来 ADO.NET <八>
ADO.NET基础 学习目的:通过程序访问数据库 ,ADO.NET就是一组类库, -->connection 用来连接数据库的类 语法:首先需要一个连接字符串 -->以SQL serv ...
- 【IDE】SharpDevelop
SharpDevelop 这个轻型的开发工具支持多种程序语言,包括C#.java以及VB.NET,同时还支持多种语言界面,象任何爱好者开发的工具一样.这个编辑器的界面风格类似于Office XP以及V ...
- 把一个序列转换成非严格递增序列的最小花费 POJ 3666
//把一个序列转换成非严格递增序列的最小花费 POJ 3666 //dp[i][j]:把第i个数转成第j小的数,最小花费 #include <iostream> #include < ...
- js遇到这样基础题,看你能不能作对呢
var a = (function() { return typeof arguments; })(); alert(a); //Object var b = (function(x) { delet ...