1 引言
在 ArcIMS 的二次开发中 ArcXML 作为客户端和服务器端的通信语言,其灵活性和可扩展性有目共睹。也许大家还不知道在配置 ArcIMS 地图服务时,不仅可以使用特殊的 ArcXML 标签符号编辑 axl 文件,实现 Author 不能完成的定制功能,还可以根据地图标注的特点,通过灵活的手工配置实现单一 ArcXML 标签所不能实现的地图展现功能。
2 特殊的展现实现
在基于 ArcXML 的地图服务的配置中,没有符合中国铁路标记的地图符号,作为线形符号又不能简单使用 < TRUETYPEMARKERSYMBOL > 符号进行标记,因为这样标记的地图展现的效果会非常差;同样在道路的线形符号的标记中通过使用 Author 或者简单使用 ArcXML 标签也不能实现双线路的效果,而如果使用地图标记层(即制作面的道路层)显然又不符合地图数据制作的规范;另外在一般的地图点形符号的标注中如果单纯使用 ArcXML 的配置标签,单一符号只能配置一种颜色,如果要不同的颜色就不好实现。下面就针对以上问题进行实现介绍
2.1 铁路地图符号实现
通过使用线形地图符号叠加的效果实现符合中国地图习惯的铁路符号。
1. 使用 Author 或者简单手工配置后的效果:
图一

ArcXML 配置代码如下:
1<layer id="0" name="railway" type="featureclass" visible="true">
2<dataset name="SDE. railway " type="line" workspace="sde_ws-16"></dataset>
3<grouprenderer>
4<simplerenderer>
5<simplelinesymbol captype="round" width="2"></simplelinesymbol>
6</simplerenderer>
7<simplelabelrenderer field="NAME" linelabelposition="placeabove">
8<textsymbol font="arial" fontsize="12" fontstyle="regular"></textsymbol>
9</simplelabelrenderer>
10</grouprenderer>
11</layer>
2. 通过特殊定制后的展现效果:
图二

ArcXML 配置代码如下:
1<layer id="0" name="railway" type="featureclass" visible="true">
2<dataset name="SDE. railway " type="line" workspace="sde_ws-24"></dataset>
3<grouprenderer>
4<grouprenderer>
5<scaledependentrenderer lower="1:1" upper="1:7000000">
6<simplerenderer>
7<simplelinesymbol color="0,0,0" width="3"></simplelinesymbol>
8</simplerenderer>
9</scaledependentrenderer>
10<scaledependentrenderer lower="1:1" upper="1:7000000">
11<simplerenderer>
12<simplelinesymbol color="255,255,255" width="1"></simplelinesymbol>
13</simplerenderer>
14</scaledependentrenderer>
15<scaledependentrenderer lower="1:1" upper="1:7000000">
16<simplerenderer>
17<simplelinesymbol captype="round" color="0,0,0" type="dash" width="1"></simplelinesymbol>
18</simplerenderer>
19</scaledependentrenderer>
20</grouprenderer>
21<scaledependentrenderer lower="1:1" upper="1:100000">
22<simplelabelrenderer field="NAME" linelabelposition="placeabove">
23<textsymbol font="Arial" fontsize="14" fontstyle="bold" interval="7"></textsymbol>
24</simplelabelrenderer>
25</scaledependentrenderer>
26</grouprenderer>
27</layer>
2.2 特殊道路符号实现
为了实现较为符号中国人看图习惯的双线路,同时又不增加地图展现的空间数据,使用线形符号叠加的效果实现双线路。
1. 使用 Author 或者简单手工配置后的效果:
图一

ArcXML 配置代码如下:
1<layer id="0" name="SDE.road" type="featureclass" visible="true">
2<dataset name="SDE. road " type="line" workspace="sde_ws-36"></dataset>
3<grouprenderer>
4<simplerenderer>
5<simplelinesymbol captype="round" color="0,0,255" width="2"></simplelinesymbol>
6</simplerenderer>
7<simplelabelrenderer field="NAME" linelabelposition="placeabove">
8<textsymbol font="Arial" fontsize="14" fontstyle="regular"></textsymbol>
9</simplelabelrenderer>
10</grouprenderer>
11</layer>
2. 通过特殊定制后的展现效果:
图二

ArcXML 配置代码如下:
1<layer id="72" name=" SDE .road" type="featureclass" visible="true">
2<dataset name="SDE.road " type="line" workspace="sde_ws-32"></dataset>
3<grouprenderer>
4<grouprenderer>
5<scaledependentrenderer lower="1:50000" upper="1:7000000">
6<simplerenderer>
7<simplelinesymbol captype="round" color="253,201,0" width="2"></simplelinesymbol>
8</simplerenderer>
9</scaledependentrenderer>
10<scaledependentrenderer lower="1:20000" upper="1:50000">
11<simplerenderer>
12<simplelinesymbol captype="round" color="244,128,0" width="8"></simplelinesymbol>
13</simplerenderer>
14</scaledependentrenderer>
15<scaledependentrenderer lower="1:20000" upper="1:50000">
16<simplerenderer>
17<simplelinesymbol captype="round" color="253,201,0" width="6"></simplelinesymbol>
18</simplerenderer>
19</scaledependentrenderer>
20<scaledependentrenderer lower="1:5000" upper="1:20000">
21<simplerenderer>
22<simplelinesymbol captype="round" color="244,128,0" width="16"></simplelinesymbol>
23</simplerenderer>
24</scaledependentrenderer>
25<scaledependentrenderer lower="1:5000" upper="1:20000">
26<simplerenderer>
27<simplelinesymbol captype="round" color="253,201,0" width="12"></simplelinesymbol>
28</simplerenderer>
29</scaledependentrenderer>
30<scaledependentrenderer lower="1:10" upper="1:5000">
31<simplerenderer>
32<simplelinesymbol captype="round" color="244,128,0" width="22"></simplelinesymbol>
33</simplerenderer>
34</scaledependentrenderer>
35<scaledependentrenderer lower="1:10" upper="1:5000">
36<simplerenderer>
37<simplelinesymbol captype="round" color="253,201,0" width="18"></simplelinesymbol>
38</simplerenderer>
39</scaledependentrenderer>
40</grouprenderer>
41<grouprenderer>
42<scaledependentrenderer lower="1:50000" upper="1:100000">
43<simplelabelrenderer field="NAME" linelabelposition="placeontop">
44<textsymbol font="Arial" fontsize="13" fontstyle="bold" interval="1"></textsymbol>
45</simplelabelrenderer>
46</scaledependentrenderer>
47<scaledependentrenderer lower="1:10000" upper="1:50000">
48<simplelabelrenderer field="NAME" linelabelposition="placeontop">
49<textsymbol font="Arial" fontsize="14" fontstyle="bold" interval="1"></textsymbol>
50</simplelabelrenderer>
51</scaledependentrenderer>
52<scaledependentrenderer lower="1:3000" upper="1:10000">
53<simplelabelrenderer field="NAME" linelabelposition="placeontop">
54<textsymbol font="Arial" fontsize="15" fontstyle="bold" interval="1"></textsymbol>
55</simplelabelrenderer>
56</scaledependentrenderer>
57<scaledependentrenderer lower="1:1" upper="1:3000">
58<simplelabelrenderer field="NAME" linelabelposition="placeontop">
59<textsymbol font="Arial" fontsize="16" fontstyle="bold" interval="1"></textsymbol>
60</simplelabelrenderer>
61</scaledependentrenderer>
62</grouprenderer>
63</grouprenderer>
64</layer>
注:以上代码同时实现地图的变比例缩放效果,标签为 < SCALEDEPENDENTRENDERER > 。
对于点型要素的符号标记原理类似于以上介绍的两种情况在此不做赘述,感兴趣的朋友可以自己做作练习。
需要说明的是,以上的配置仅仅是增加了地图服务配置文件的大小,地图实际加载的空间数据的容量没有任何增加,因此并不会影响地图数据加载的速度,同时由于以上地图符号展现的配置实现遵循了地图定制的原则,因此在达到地图展现要求的同时不会影响地图的美化效果。
3 总结
在 ArcIMS 二次开发中,配置地图服务除了可以使用 Author 进行一般的参数配置,也可以通过简单的手工配置实现常用的功能,但要取得更加丰富的显示效果,就需要根据地图符号的特性灵活地使用 ArcXML 标签,以提供强大的地图服务定制功能,达到完美展现地图服务的效果,满足不同用户的需求。