怎样在ArcIMS 上实现专题图

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

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

ArcIMSParam.js文件包含大量的配置参数,可以通过调整里面的参数改变Viewer的外观,例如OverView窗口的位置,是否显示层信息,是否显示图例,是否显示指北针,指北针的形状等等。HTML页面包含了页面元素在浏览器中显示的信息。JavaScript目录下是HTML Viewer的JavaScript类库。类库中包含了大量的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()函数向服务器发请求。返回的ArcXML由processXML()函数处理,用户不用更改此函数,就可以得到查询结果。

怎样在ArcIMS 上实现专题图相关推荐

  1. arcmap制作地闪密度专题图

    arcmap制作地闪密度专题图 最近需要制作地闪密度专题图,笔者现有数据是历年闪电定位数据资料以及省的shape地图,在次记录下遇到的问题及解决方法. 1.历年闪电定位数据资料有70多W条 闪电定位数 ...

  2. 使用QGIS制作点密度专题图

    点密度图(Dot Density Map)是专题地图的一种,是用一定大小的.形状相同的点表示分散分布现象的分布范围.数量特征和分布密度的制图方法,又叫点值法或者点法,广泛应用于表示人口.农业.畜牧业等 ...

  3. 百度地图JS API制作专题图

    最近看了一份人民大学的报告,<中国城市政商关系排行榜2020>,https://new.qq.com/omn/20201230/20201230A0F3MY00.html. 讲的是中国各个 ...

  4. 地理信息系统(GIS)系列——专题图

    1.专题图简介 专题图是用于分析和表现数据的一种强有力的方式,用户可以通过使用专题图的方式将数据图形化,使数据以更直观的形式在地图上提现出来. 专题图种类 独立值专题图 点密度专题图 范围专题图 等级 ...

  5. ArcGIS基础:相同空间人口图层的人口数量字段转移至小区图层(核心:相交操作)及制作人口密度专题图

    本实验目标: 人口普查数据分配给小区(两个数据空间和属性不一样,人口普查数据含有人口数量字段.交通小区(交通小区只是一个普通小区的名字,不要纠结)数据没有人口数量字段): 把人口字段搞到交通小区数据图 ...

  6. Arcpy 通过mxd模版生成专题图

    GISutil.createJPEG(mxdPath, outputPath, outTIFPath, issue, cycle)###################下面代码新建文件命名为 GISu ...

  7. MAPBOX制作专题图

    最近看了一份人民大学的报告,<中国城市政商关系排行榜2020>,https://new.qq.com/omn/20201230/20201230A0F3MY00.html. 讲的是中国各个 ...

  8. 高德地图JS API制作专题图

    最近看了一份人民大学的报告,<中国城市政商关系排行榜2020>,https://new.qq.com/omn/20201230/20201230A0F3MY00.html. 讲的是中国各个 ...

  9. 遥感影像制作地形图,正射影像图或专题图时,影像成图比例尺的计算方法

    注册测绘师考试中,关于利用遥感影像制作地形图,正射影像图或者专题图时,为甚恶魔最大成图比例尺对应关系为此.下面将对计算方法告诉大家. 首先,要明白什么是影像分辨率和影像比例尺,成图比例尺的关系 影像分 ...

最新文章

  1. jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理
  2. 语音变音调和加速减速
  3. cpu性能排名学习笔记
  4. Linux下的帮助命令(man/help/info)
  5. BAT 批处理命令 - 解决cmd控制台中文乱码问题实例演示
  6. KnowledgeTree简体中文汉化包安装指导
  7. 不定积分24个基本公式_不定积分计算—典型题及解题技巧
  8. Git《一》简介及安装使用
  9. LeetCode 937. 重新排列日志文件(自定义排序)
  10. centos 6.5 zabbix 离线安装历程
  11. 程序员必杀技——《编程全能词典》即将震憾上市
  12. docfx daylybuild
  13. android file hascode,AndroidStudio集成Lombok
  14. 2021时间序列-对比学习必读的四篇论文
  15. 怎么反编译java dll_JAVA 反编译工具,如何在Java中调用DLL方法
  16. 在linux下安装TPLINK无线网卡驱动
  17. 3dmax如何建模(二)
  18. 三极管开关电路_9012三级管开关电路图大全
  19. c语言msgbox函数,msgbox函数的返回值类型为什么
  20. InsightFace-Paddle实现人脸比对

热门文章

  1. 飘逸的python - 字典合并值相加
  2. 从上云到云原生,如何用新技术应对突发事件?
  3. 机器学习重大挑战:坏数据和坏算法正在毁掉你的项目
  4. 老板:再用Log4j就收拾东西回家吧!
  5. 面试官:备战年终,这些面试考点,请你牢牢记住
  6. C++之父:比特币是用C++开发的,我为此感到遗憾。
  7. 去Oracle不仅是BAT的事,AWS彻底去O
  8. web前端vue问题小结及相关面试题总结
  9. JeeWx 捷微 2.2 发布,微信管家平台
  10. JAVA字符串占位符替换