欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap FreeTalk
   您现在位于: 首页技术专栏ArcGIS应用与开发ArcGIS其它 → 正文
怎样在ArcIMS 上实现专题图
07-10-15 10:20:25 作者:GIS雲中飛鹏 出处:GIS雲中飛鹏

在现实应用中,用户经常会需要用地理数据形成专题图。 ArcIMS用户会发现在用 ArcIMS Author定制地图服务时,并不能象在 ArcMap中那样通过定制图层属性实现专题地图,而是需要通过 ArcIMS的客户端的开发接口来实现。下面就以在 ArcIMSHTML Viewer中实现专题图为例阐述这个问题。

1 HTML Viewer的文件组织结构
通常情况下,用 ArcIMS Designer生成地图服务站点以后,会形成上面的目录结构。在虚拟目录的根目录下会有 ArcIMSParam.js以及大量的 HTML页面。同时还会生成两个子目录: JavaScriptImages。如果要做专题图,还需要手工将 aimsClassRenderParam.js放在此根目录下,在 JavaScript目录下添加 aimsClassRender.js

ArcIMSParam.js 文件包含大量的配置参数,可以通过调整里面的参数改变 Viewer的外观,例如 OverView窗口的位置,是否显示层信息,是否显示图例,是否显示指北针,指北针的形状等等。 HTML页面包含了页面元素在浏览器中显示的信息。 JavaScript目录下是 HTML ViewerJavaScript类库。类库中包含了大量的 JavaScript函数, HTML Viewer就是通过这些函数和后台服务器进行交互的。

2 、 开发步骤
1)用一种网页开发工具在 Viewer.htm中加一个新框架 FieldlistFrame。如下图所示:

 

FieldlistFrame.htm中动态加入当前活跃图层的字段名以及几个功能按钮。字段名主要用来选择要做专题图的字段,功能按钮主要用来触发一些特定的功能,如生成饼图,生成直方图,显示图例等。

2)在 Viewer.htm中定义 FieldVisible数组,并初始化。
var FieldVisible=new Array(); //define a new array and initialize it.
for (var i=0;i<100;i++)
{
FieldVisible[i]=0;
}
FieldVisible
保存了哪些字段用来做专题图,这样在刷新地图时字段信息不会被刷新。

3)设置当前活动层,并更新 FieldlistFrame中显示的字段信息。
toc.htm中,更改 setActiveLayer()函数,每次设置完当前活动层后,重新载入 FieldlistFrame中的内容
parent.FieldlistFrame.location.reload(); //refresh the content of FieldlistFrame.

这样,就保证了每次更改当前活动层时,当前字段值也会随着刷新。

4)在 MapFrame.htm中,在适当的位置加入如下两行:
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript" SRC="javascript/aimsClassRender.js"></SCRIPT>
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript" SRC="aimsClassRenderParam.js"></SCRIPT>

这样,当 MapFrame.htm被加入到浏览器中时,上面两个 JavaScript文件中的函数就被载入到当前页面中。 AimsClassRender.js中定义了一些做专题图时要用到的函数, aimsClassRenderParam.js中定义了一些做专题图时要用到的参数,开发人员可以自己定义所需要的参数。

5)设置 aimsClassRenderParam.js文件。
AimsClassRenderParam.js
文件需要用户根据实际情况手工编辑。
这里用的数据是 ArcIMS带的教学数据( d:\Program Files\ESRI\ArcIMS3.1\Samples\Viewers\Data\SanFrancisco)。

aimsClassRenderParam.js中存放了一些做专题图时要用到的参数,如图层的名称。

6)在 aimsClassRender.js中加如两个函数:
function startChart_Bar()
function startChart_Pie()
在这两个函数中设置 ClassRenderString[ActiveLayerIndex],使之等于一个 ArcXML字符串,这个字符串决定了地图的表现方法(分类,直方图,饼图等等)。然后调用系统提供的函数 sendMapXML()就可以向服务器发送 XML指令,并在客户端显示查询结果。

7)最终效果如下:

 

3. 总结:
HTML Viewer
通过 sendMapXML()函数向空间服务器发出请求,在此过程中会触发 writeXML()sendToServer()函数。开发的关键就是以 writeXML()为线索,找出要客户化的地图元素,用程序生成相应的 ArcXML代码,然后调用 sendMapXML()函数向服务器发请求。返回的 ArcXMLprocessXML()函数处理,用户不用更改此函数,就可以得到查询结果。
原文:http://www.cnblogs.com/gispeng/archive/2007/05/16/747988.html


(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  

    关于我们友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
     
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.
     

                   滇ICP备05006901号