lixaokui
路人甲
路人甲
  • 注册日期2003-12-25
  • 发帖数768
  • QQ28796446
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1355回复:1

怎样在ArcIMS 3.1上实现专题图

楼主#
更多 发布于:2004-09-22 15:45
<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>
喜欢0 评分0
西门吹血,有了鼓风机,就不用吹啦!
bleeding
路人甲
路人甲
  • 注册日期2004-08-02
  • 发帖数6
  • QQ
  • 铜币130枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-09-27 08:44
<FONT face=黑体> 那么在ArcIMS 4.0里怎么实现呢?</FONT>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部