zoukankan      html  css  js  c++  java
  • arcIMS 客户端 连接器的选择

     客户端选择。
       就IMS来说提供了 HTML Viewer ,Java Standard Viewer Java Custom Viewer

       Java Standard Viewer,Java Custom Viewer功能差不多。 对于程序员、中国客户来说。Java    
    Standard Viewer基本不用。典型的胖客户端,Image 和Feature MapServices 都要下载APPLET,客户端还要装jre。随着微软IE对applet的抵制 和 Arcgis Server(远程数据分析,Feature MapServices的替代)成熟,估计这种胖客户端没什么大用了,至少我觉得在中国是这样的。就我接触的webgis项目中,applet的应用不是很多,政府部门更是因为安全性,很少用。(http://www.668map.com/)用applet,但是假如我们对于大数据量的gis应用,有还多业务查询、分析。估计把数据放到缓冲中的做法就悬了。还有假如我要加遥感应用,数据量大的更是可怕。 我个人对Java Viewer前景不是看好。另外AJAX技术的成熟,applet基本没什么地位了。
       HTML Viewer:AJAX的成熟。随着web程序的流行,xhtml,javascript,css的成熟(对不同浏览器有统一标准就完美了,不过客户端 IE就现在还是老大)。arcgis server的客户端也是html view(没办法.net,j2ee还是以浏览器为主要客户端的)。另外html,xhtml是如此的轻便,页面是可以如此的漂亮,扩展,维护也不用编译什么的。虽然不支持Feature MapService,但Feature MapService的应用可以由arcgis server实现。http://maps.google.com

    连接器选择。
    .NET Link 、ActiveX 、AppServerLink 、ColdFusion 、General、Java 、Servlet 、WMS
    思想就是把ArcXML封装了,再向ArcIMS发送请求,客户端展示。
    下面以arcIMS提供了例子探讨一下Servlet Connector ,javaconnector。请自行配置htmlview和javasconnector的例子。
    Servlet Connector:修改viewer.htm,使jsForm.htm 可以在页面中看到。(<FRAMESET ROWS="30,*,30,50"—)
    jsForm.htm加载地图前代码
    ......
    function passXML() {
    }
    ......  
    加载地图后代码
    ......
    function passXML() {
    var XMLResponse='<?xml version="1.0" encoding="UTF-8"?><ARCXML
    version="1.1"><RESPONSE><IMAGE><ENVELOPE minx="116.325273231549" miny="39.9126536248245"
    maxx="116.741417757427" maxy="40.08" /><OUTPUT url="http://zhangkj:8080/Output/txzy_ZHANGKJ188425841.jpg" /></IMAGE></RESPONSE></ARCXML>';
    parent.MapFrame.processXML(XMLResponse);
    }
    ........
    在aimsXML.js中看函数function htmlSendToServer(URLString,XMLRequest,theType)和function
    processXML(theReplyIn) 一目了然了,htmlSendToServer把我们组合的arcXML发送到com.esri.esrimap.Esrimap?ServiceName,返回的XMLResponse由processXML显示出来。
    核心代码就这些,你在javascript文件夹中的大部分js文件是 组合请求的arcXML字符串 和解析从arcIMS返回的arcXML字符串。其他js文件是DHTML,参数,公有函数等。看上去挺吓人的。我个人觉得htmlview例子里的js代码可重用性很高。但必须很熟悉这些代码,函数。和其他连接器比较,htmlview可以说是最简单的了。熟悉html,熟悉javascript,有arcXML文档,这就够了。
    剩下的是用 javascript构造不同的arcXML,请求arcIms, 用dhtml,javascript显示返回arcXML.
    (大家可以看一下jspForm.jsp,用com.esri.aims.mtier.io.ConnectionProxy类来请求IMS服务。和上面的流程差不多。http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.gateway&p=16&pf=217上面讲的都不错,从更深的角度讲了各个连接)
    javaconnector:把arcXML文档用java对象封装起来。组合arcXML的工作由纯面向对象的java语言来做,
    com.esri.aims.mtier.io.ConnectionProxy 对象请求ims服务器,返回java对象的响应。servlet connector 是字符串,而java connector是java对象。这样java语言的优势,java对象的可操作性,易用性,方便性就显露出来拉。javaconnector对 arcIMS服务动态增加等。
    Map map=new Map();
    map.initMap(mapCon,750,false,false,false,false);
    map.setHeight(500);
    map.setWidth(400);
    map.refresh();  
    String url=map.getMapOutput().getURL();
    Map对象封装ArcXML,map.refresh() 请求IMS服务。 请求完了Map对象包括响应的内容。(其实map.initMap也触发了一次请求 GET_SERVERINFO。javaconnector的类库设计的有问题。)
    servlet connector 和 javaconnector比较
    一、性能
       servlet connector: 用户下载javascript文件。组合arcXML在客户端执行。如果用户机器不是太慢的话,性能应该是最好的,服务器压力也小。据说ims 群集安装,系统配置的好的话,可以支持几百万用户。
       javaconnector:比不上servlet connector。1、java对象的封装,在服务器端运行。(不过可忽略)2、Map对象建立的性能损耗。map.initMap(), map.refresh()都要触发请求ims。操作一次地图 新建一个map对象的做法是不可能的。有两个解决 把map对象放到Session中和 map对象池。 把map对象放到Session,用户多的时候,web服务器压力很大,多用户时不可行。 map对象池 ,map对象的钝化,激活(EJB的提法)操作复杂。因为不同用户当前操作状态不一样(在arcgis9 server中,状态保存是个值得研究的地方)。运用javaconnector 性能问题得考虑。(个人觉得javaconnector类库建立的有问题,用反编译工具看,代码设计有改进的地方,可以解决map对象初始化问题)。
    二、功能:
       servlet connector: arcXML的所有功能。 问题在 组合arcXML和显示响应的arcXML的环节上。因为这些用javascript实现。有一定局限性。 比如,我要把 响应arcXML 的查询结果排序。实现起来费事。(arcXML查询不支持order by ).不可以对ims服务操作。
       javaconnector:arcXML的所有功能。可以用java语言的优势处理很多问题。比如前面排序。动态图层、与遥感影象图的叠加实现起来都比较方便。还可以结合arcSDE的java接口处理元数据。
    待续.....
    发表于 2006-02-10 15:14 原创专栏 开源学习 阅读(2320) 评论(13)  编辑  收藏 所属分类: gis地图服务

    -->评论
    # re: arcIMS 客户端 连接器的选择
    请问一下现在做webgis的公司多吗?
    chan 评论于 2006-02-17 16:30  回复  更多评论    
    # re: arcIMS 客户端 连接器的选择
    期待续文...
    chan 评论于 2006-02-17 16:31  回复  更多评论    
    # re: arcIMS 客户端 连接器的选择
    @chan
    北京最多
    上海也有.
    其他地方好象不多.

    原创专栏 开源学习 评论于 2006-04-18 21:49  回复  更多评论    
    # re: arcIMS 客户端 连接器的选择
    请问一下,用arcxml请求 ,是把请求的内容写在哪个文件里? 是新建个.js文件,还是.axl文件 ,写arcxml请求?
    另外,若用java viewer客户端,则在internet网上访问站点时?要下载插件和arc viewer怎么要进入好几个页面手动下载,那么麻烦。 请问有什么解决方法么? 或说说流程的机理。谢谢
    duan 评论于 2006-05-13 09:10  回复  更多评论    
    # re: arcIMS 客户端 连接器的选择
    @duan

    请问一下,用arcxml请求 ,是把请求的内容写在哪个文件里? 是新建个.js文件,还是.axl文件 ,写arcxml请求?
    在js文件中构造arcxml请求字符串,是动态构造的。

    若用java viewer客户端,则在internet网上访问站点时?要下载插件和arc viewer怎么要进入好几个页面手动下载,那么麻烦。 请问有什么解决方法么? 或说说流程的机理。
    要下载jrejava运行环境。你安装就可以了吧。另外还要安装java viewer客户端,你可以在安装文件夹中找到(website里面)。

    原创专栏 开源学习 评论于 2006-05-13 09:46  回复  更多评论    
    # re: arcIMS 客户端 连接器的选择
    请问一下,用arcxml请求 ,是把请求的内容写在哪个文件里? 是新建个.js文件,还是.axl文件 ,写arcxml请求?
    在js文件中构造arcxml请求字符串,是动态构造的。

    若用java viewer客户端,则在internet网上访问站点时?要下载插件和arc viewer怎么要进入好几个页面手动下载,那么麻烦。 请问有什么解决方法么? 或说说流程的机理。
    要下载jrejava运行环境。你安装就可以了吧。另外还要安装java viewer客户端,你可以在安装文件夹中找到(website里面)。

    现在的问题是 我在一台什么arc ims软件都没有安装的机器上,按照提示安装了jre 1.3 还下载了aejava.exe文件,安装了,但是还是显示不了地图,而在我自己的安装有arcims的机器上却能显示地图,这是什么原因?谢谢!
    另外,arcxml的请求,是怎么动态生成的?我用的是feather service ,没有生成javascript这个文件夹,也没有几个.js文件。这个arcxml 具体点改怎么写? 非常感谢。

    duan 评论于 2006-05-14 14:01  回复  更多评论    
    # re: arcIMS 客户端 连接器的选择
    java viewer 客户端与ims交互用java applet.与js文件无关。
    如果要定制开发javaviewer,定制不了太多东西,因为你无法反编译.class文件。

    可能你用的是机器名,你改成ip试试
    原创专栏 开源学习 评论于 2006-05-14 16:36  回复  更多评论    
    # re: arcIMS 客户端 连接器的选择
    我就是用的ip,可是还是不能显示,就显示过一次,在刷新就没有了,常报错:time out。就是说地图很难显示了,而,有一个网站也是java viewer客户端,却能显示,http://host119.yakama.com/Website/conjavacustom2/frame.htm所以我怀疑是我自己做的这个地图数据量太大了,以致常出错。不知是否对。谢谢!
    duan 评论于 2006-05-14 19:23  回复  更多评论    
    # re: arcIMS 客户端 连接器的选择
    我是刚开始在一个公司里做gis的。
    用的是arcims 地图服务和jsp及servlet建立webgis服务 ,
    arcgis地图工具也用来制作和修改地图。
    我们是买别人的一套系统,然后再做开发。
    关于arcgis,特别是arcims的帮助(中文)的很少。
    本人英文水平很一般,
    希望能和您多多的交流。
    关于其他gis以外的java我不怕,但是我刚接触webgis确实有点
    力不从心,希望我们能共同进步,互相学习。
    谢谢。
    我的qq:316451618
    邮箱:zhoubing5181@yahoo.com.cn
    生命元素(qq:316451618) 评论于 2006-07-17 16:02  回复  更多评论    
    # 初学者的问题,急
    怎么定制htlmviewer实现查询?利用已经有的查询query的工具,在textFrame

    界面中有'>','<'这类的符号,填写后得到get querystring,到底这些查询由

    哪个js文件来处理,我应该修改哪些js文件?数据库表中怎么设计?比如查图层

    , 再查某个地点,怎么设计数据库啊?求哪位大侠帮个忙,指点下,我是初学者,

    做个查询弄了好久.
    邮箱francesses-45@163.com


    fran 评论于 2007-04-22 20:16  回复  更多评论    
    # 初学者的问题(急)
    怎么定制htlmviewer实现查询?利用已经有的查询query的工具,在textFrame

    界面中有'>','<'这类的符号,填写后得到get querystring,到底这些查询由

    哪个js文件来处理,我应该修改哪些js文件?数据库表中怎么设计?比如查图层

    , 再查某个地点,怎么设计数据库啊?求大侠帮个忙,指点下,我是初学者,

    做个查询弄了好久.

    fran 评论于 2007-04-22 20:16  回复  更多评论    
    # 初学者的问题(急)
    怎么定制htlmviewer实现查询?利用已经有的查询query的工具,在textFrame

    界面中有'>','<'这类的符号,填写后得到get querystring,到底这些查询由

    哪个js文件来处理,我应该修改哪些js文件?数据库表中怎么设计?比如查图层

    , 再查某个地点,怎么设计数据库啊?求大侠帮个忙,指点下,我是初学者,

    做个查询弄了好久.

    我的邮箱francesses-45@163.com
    qq:125050910

    fran 评论于 2007-04-22 20:26  回复  更多评论    
    # re: arcIMS 客户端 连接器的选择
    有问题帮我解决一下 谢谢了
    http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=8967&extra=page%3D1
    coderchang@yahoo.com.cn
    火凤凰 评论于 2007-05-08 17:55  回复  更多评论
  • 相关阅读:
    委托、Lamda表达式
    springcloud-feign的hystrix支持
    springcloud-断路器hystrix
    Java原子性、可见性、内存模型
    volatile特性
    synchronized实现可见性
    Js四则运算精度问题处理
    docker 简单安装java web项目
    elasticsearch 分布式集群搭建
    logstash-input-jdbc同时同步多个表
  • 原文地址:https://www.cnblogs.com/googlegis/p/2979115.html
Copyright © 2011-2022 走看看