阅读:1355回复:1
怎样在ArcIMS 3.1上实现专题图
<FONT face=黑体>怎样在ArcIMS 3.1上实现专题图</FONT>
<P align=left><EM><b> </b></EM>在现实应用中,用户经常会需要用地理数据形成专题图。<FONT face=Arial>ArcIMS</FONT>用户会发现在用<FONT face=Arial>ArcIMS Author</FONT>定制地图服务时,并不能象在<FONT face=Arial>ArcMap</FONT>中那样通过定制图层属性实现专题地图,而是需要通过<FONT face=Arial>ArcIMS</FONT>的客户端的开发接口来实现。下面就以在<FONT face=Arial>ArcIMS</FONT>的<FONT face=Arial>HTML Viewer</FONT>中实现专题图为例阐述这个问题。</P> <P align=left><FONT face=Arial>1</FONT>、<FONT face=Arial>HTML Viewer</FONT>的文件组织结构<IMG src="http://www.esrichina-bj.cn/library/chinanews/image/new10-19.gif" align=right> 通常情况下,用<FONT face=Arial>ArcIMS Designer</FONT>生成地图服务站点以后,会形成上面的目录结构。在虚拟目录的根目录下会有<FONT face=Arial>ArcIMSParam.js</FONT>以及大量的<FONT face=Arial>HTML</FONT>页面。同时还会生成两个子目录:<FONT face=Arial>JavaScript</FONT>和<FONT face=Arial>Images</FONT>。如果要做专题图,还需要手工将<FONT face=Arial>aimsClassRenderParam.js</FONT>放在此根目录下,在<FONT face=Arial>JavaScript</FONT>目录下添加<FONT face=Arial>aimsClassRender.js</FONT>。</P> <P align=left><FONT face=Arial>ArcIMSParam.js</FONT>文件包含大量的配置参数,可以通过调整里面的参数改变<FONT face=Arial>Viewer</FONT>的外观,例如<FONT face=Arial>OverView</FONT>窗口的位置,是否显示层信息,是否显示图例,是否显示指北针,指北针的形状等等。<FONT face=Arial>HTML</FONT>页面包含了页面元素在浏览器中显示的信息。<FONT face=Arial>JavaScript</FONT>目录下是<FONT face=Arial>HTML Viewer</FONT>的<FONT face=Arial>JavaScript</FONT>类库。类库中包含了大量的<FONT face=Arial>JavaScript</FONT>函数,<FONT face=Arial>HTML Viewer</FONT>就是通过这些函数和后台服务器进行交互的。 </P> <P align=left><FONT face=Arial>2</FONT>、 开发步骤 (<FONT face=Arial>1</FONT>)用一种网页开发工具在<FONT face=Arial>Viewer.htm</FONT>中加一个新框架<FONT face=Arial>FieldlistFrame</FONT>。如下图所示:</P> <P align=center><IMG src="http://www.esrichina-bj.cn/library/chinanews/image/new10-20.gif"></P> <P align=left>在<FONT face=Arial>FieldlistFrame.htm</FONT>中动态加入当前活跃图层的字段名以及几个功能按钮。字段名主要用来选择要做专题图的字段,功能按钮主要用来触发一些特定的功能,如生成饼图,生成直方图,显示图例等。</P> <P align=left>(<FONT face=Arial>2</FONT>)在<FONT face=Arial>Viewer.htm</FONT>中定义<FONT face=Arial>FieldVisible</FONT>数组,并初始化。 <FONT face=Arial>var FieldVisible=new Array(); //define a new array and initialize it. for (var i=0;i<100;i++) { FieldVisible=0; } FieldVisible</FONT>保存了哪些字段用来做专题图,这样在刷新地图时字段信息不会被刷新。 </P> <P align=left>(<FONT face=Arial>3</FONT>)设置当前活动层,并更新<FONT face=Arial>FieldlistFrame</FONT>中显示的字段信息。 在<FONT face=Arial>toc.htm</FONT>中,更改<FONT face=Arial>setActiveLayer()</FONT>函数,每次设置完当前活动层后,重新载入<FONT face=Arial>FieldlistFrame</FONT>中的内容 <FONT face=Arial>parent.FieldlistFrame.location.reload(); //refresh the content of FieldlistFrame.</FONT></P> <P align=left>这样,就保证了每次更改当前活动层时,当前字段值也会随着刷新。 </P> <P align=left>(<FONT face=Arial>4</FONT>)在<FONT face=Arial>MapFrame.htm</FONT>中,在适当的位置加入如下两行: <FONT face=Arial><SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript" SRC="javascript/aimsClassRender.js"></SCRIPT> <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript" SRC="aimsClassRenderParam.js"></SCRIPT> </FONT></P> <P align=left>这样,当<FONT face=Arial>MapFrame.htm</FONT>被加入到浏览器中时,上面两个<FONT face=Arial>JavaScript</FONT>文件中的函数就被载入到当前页面中。<FONT face=Arial>AimsClassRender.js</FONT>中定义了一些做专题图时要用到的函数,<FONT face=Arial>aimsClassRenderParam.js</FONT>中定义了一些做专题图时要用到的参数,开发人员可以自己定义所需要的参数。 </P> <P align=left>(<FONT face=Arial>5</FONT>)设置<FONT face=Arial>aimsClassRenderParam.js</FONT>文件。 <FONT face=Arial>AimsClassRenderParam.js</FONT>文件需要用户根据实际情况手工编辑。 这里用的数据是<FONT face=Arial>ArcIMS</FONT>带的教学数据(<FONT face=Arial>d:\Program Files\ESRI\ArcIMS3.1\Samples\Viewers\Data\SanFrancisco</FONT>)。</P> <P align=left>在<FONT face=Arial>aimsClassRenderParam.js</FONT>中存放了一些做专题图时要用到的参数,如图层的名称。 </P> <P align=left>(<FONT face=Arial>6</FONT>)在<FONT face=Arial>aimsClassRender.js</FONT>中加如两个函数: <FONT face=Arial>function startChart_Bar()</FONT>和<FONT face=Arial>function startChart_Pie() </FONT>在这两个函数中设置<FONT face=Arial>ClassRenderString[ActiveLayerIndex]</FONT>,使之等于一个<FONT face=Arial>ArcXML</FONT>字符串,这个字符串决定了地图的表现方法(分类,直方图,饼图等等)。然后调用系统提供的函数<FONT face=Arial>sendMapXML()</FONT>就可以向服务器发送<FONT face=Arial>XML</FONT>指令,并在客户端显示查询结果。 </P> <P align=left>(<FONT face=Arial>7</FONT>)最终效果如下: </P> <P align=center><IMG src="http://www.esrichina-bj.cn/library/chinanews/image/new10-21.gif"></P> <P align=left><FONT face=Arial>3.</FONT>总结: <FONT face=Arial>HTML Viewer</FONT>通过<FONT face=Arial>sendMapXML()</FONT>函数向空间服务器发出请求,在此过程中会触发<FONT face=Arial>writeXML()</FONT>和<FONT face=Arial>sendToServer()</FONT>函数。开发的关键就是以<FONT face=Arial>writeXML()</FONT>为线索,找出要客户化的地图元素,用程序生成相应的<FONT face=Arial>ArcXML</FONT>代码,然后调用<FONT face=Arial>sendMapXML()</FONT>函数向服务器发请求。返回的<FONT face=Arial>ArcXML</FONT>由<FONT face=Arial>processXML()</FONT>函数处理,用户不用更改此函数,就可以得到查询结果</P> |
|
|
1楼#
发布于:2004-09-27 08:44
<FONT face=黑体> 那么在ArcIMS 4.0里怎么实现呢?</FONT>
|
|