当前位置: 首页 > news >正文

arcims 两种连接方式(java connector,servlet connector)的一些比较- -

arcims 两种连接方式(java connector,servlet connector)的一些比较- -

(1) java connector主要是利用ims自封装的一些java类(ConnectionProxy,Map)来实现,通过api方法进行调用,
举例如下:

ConnectionProxy mapCon=new ConnectionProxy();
if(connectiontype.equalsIgnoreCase("http"))
{
mapCon.setConnectionType(ConnectionProxy.HTTP);
URL url = new URL(host);
mapCon.setUrl(url);
}
else if (connectiontype.equalsIgnoreCase("tcp"))
{
mapCon.setConnectionType(ConnectionProxy.TCP);
mapCon.setHost(host);
}
mapCon.setPort(port);
mapCon.setService(datasource);
mapCon.setDisplayMessages(true);
map=new Map();
map.initMap(mapCon,750,false,false,false,false);

map.setHeight(option.getHeight());
map.setWidth(option.getWidth());
.................

map.refresh();
String mapurl=map.getMapOutput().getURL();
String legendurl=map.getLegend().getLegendOutput().getURL();

在此过程中,Map对象的方法主要工作为构造arcxml request,并解析arcxml response
优点:基于api接口实现起来方便易用
缺点:解析map对象,影响速度。且调用map.refresh()方法,默认为做两次arcims request. 第一次为遍历axl的request,第二次为实际的request.
(2)servlet connector主要通过向servlet地址发送请求,然后获得返回的url流,得到响应
举例如下:
String serverUrl=" http://localhost:8888/servlet/com.esri.esrimap.Esrimap?ServiceName=SantaClara";
URL imsURL =new URL(serverUrl);
URLConnection connection=imsURL.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream());
OutputStreamWriter out = new OutputStreamWriter(bos, "UTF8");
out.write(arcimsRequest, 0, arcimsRequest.length());
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF8"));
String ln;
String tempString=null;
while ((ln = in.readLine()) != null)
{
if (tempString == null)
{
tempString = ln;
}
else
{
tempString = tempString + ln;
}
}
arcxmlReponseStr = tempString.trim();
out.close();
in.close();
其中arcimsRequest格式如下:
Arcxml request:
<?xml version="1.0" encoding="UTF-8"?>
<ARCXML version="1.1">
<REQUEST>
<GET_IMAGE autoresize="false">
<ENVIRONMENT>
<SEPARATORS cs=" " ts=";"/>
</ENVIRONMENT>
//scalebar is set
<LAYER id="8" name="LayerName" type="acetate" visible="true">
<OBJECT units="pixel">
<SCALEBAR antialiasing="true" barcolor="255,255,255" bartransparency="1.0" barwidth="12" coords="100.0 3.0" distance="0.0" font="Arial" fontcolor="0,0,0" fontsize="10" fontstyle="regular" mapunits="degrees" mode="cartesian" outline="255,255,255" overlap="true" precision="2" round="0.0" scaleunits="meters" screenlength="40" texttransparency="1.0"/>
</OBJECT>
</LAYER>
<PROPERTIES>
<ENVELOPE maxx="-121.87677055355464" maxy="37.33222499720282" minx="-121.90701583922555" miny="37.316082232930746"/>
<IMAGESIZE dpi="750" height="350" scalesymbols="false" width="500"/>
<BACKGROUND color="215,215,215"/>
<OUTPUT type="jpg"/>
<LEGEND antialiasing="false" autoextend="true" cansplit="false" cellspacing="2" columns="1" display="true" font="宋体" height="300" layerfontsize="12" reverseorder="false" splittext="(cont)" swatchheight="14" swatchwidth="18" title="图例" titlefontsize="15" valuefontsize="10" width="125"/>
<LAYERLIST dynamicfirst="false" nodefault="false" order="true">
<LAYERDEF id="0" name="boundary" visible="true"/>
<LAYERDEF id="1" name="tract" visible="true"/>
<LAYERDEF id="2" name="sc_streets" visible="true"/>
<LAYERDEF id="3" name="rivers" visible="false"/>
<LAYERDEF id="4" name="hospital" visible="true"/>
<LAYERDEF id="5" name="cities" visible="true"/>
<LAYERDEF id="6" name="topoq24" visible="false"/>
// scalebar is set
<LAYERDEF id="8" name="LayerName" visible="true"/>
</LAYERLIST>
</PROPERTIES>
</GET_IMAGE>
</REQUEST>
</ARCXML>
返回的arcxmlReponseStr ,格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<ARCXML version="1.1">
<RESPONSE>
<IMAGE>
<ENVELOPE minx="-121.907015839225" miny="37.3135677650819" maxx="-121.876770553554" maxy="37.3347394650516" />
<OUTPUT file="C:\oc4j\j2ee\home\default-web-app\output\SantaClara_CHXW24002560270.jpg" url=" http://chxw:8888/output/SantaClara_CHXW24002560270.jpg" />
<LEGEND file="C:\oc4j\j2ee\home\default-web-app\output\SantaClara_CHXW24002568263.jpg" url=" http://chxw:8888/output/SantaClara_CHXW24002568263.jpg" />
</IMAGE>
</RESPONSE>
</ARCXML>
通过xml parse解析即可得到输出url.
优点:向arcims应用服务器,只需请求arcxml request一次,只需调用自己的建构的arcimsrequest对象,此类对象为开源,可实现自优化
缺点:需要自己定义arcims request 对象,没有java connector简洁明了。
优化:可直接进行socket通信,通过tcp协议实现。

相关文章:

  • gps卡尔曼滤波 matlab,opencv – 如何使用卡尔曼滤波器来预测介于两者之间的gps位置...
  • matlab计算最大特征向量,MATLAB求最大特征值和特征向量
  • “赞助开源项目跟踪”无奈的外包——CSDN外包实践(63)
  • matlab home选项卡 tu,在使用MATLAB“绘图”选项卡中的命令按钮绘图之前,需要( )。...
  • 下一代 Windows 需要哪些改进
  • python温度传感器,基于python经过树莓派获取温度传感器的温湿度
  • 微软最走运、最倒霉的十个瞬间
  • php九大函数,PHP函数整理(一)
  • OSPF路由协议在CISCO路由器上的应用
  • wpcomments post.php,垃圾评论带来的流量流失
  • H3C基本命令学习
  • Linux下oracle em安装,手动安装em(redhat 5/oracle 11g)
  • 马宁的Windows Mobile开发培训概述
  • oracle非归档恢复,非归档模式恢复数据库__oracle_ORA_DISK_channel_dbf_PROD__169IT.COM
  • 错误:文件被数字签名策略拒绝(File was rejected by digital signature policy)
  • bootstrap创建登录注册页面
  • golang中接口赋值与方法集
  • gops —— Go 程序诊断分析工具
  • Javascript Math对象和Date对象常用方法详解
  • Linux下的乱码问题
  • PAT A1017 优先队列
  • Solarized Scheme
  • vue总结
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 好的网址,关于.net 4.0 ,vs 2010
  • 简析gRPC client 连接管理
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 探索 JS 中的模块化
  • 项目管理碎碎念系列之一:干系人管理
  • 以太坊客户端Geth命令参数详解
  • 译米田引理
  • 06-01 点餐小程序前台界面搭建
  • gunicorn工作原理
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • "无招胜有招"nbsp;史上最全的互…
  • #HarmonyOS:基础语法
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (4)事件处理——(7)简单事件(Simple events)
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (笔试题)分解质因式
  • (层次遍历)104. 二叉树的最大深度
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)认识微服务
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .net framework profiles /.net framework 配置
  • .net refrector
  • .net反混淆脱壳工具de4dot的使用
  • :中兴通讯为何成功
  • @FeignClient注解,fallback和fallbackFactory