ArcXML学习笔记
一、概论:
配置文件分为四种:
1>用于Image Service和Feature Service的地图配置文件(map configuration file),
由ArcIMS Author生成,输出为ArcXML;
2>用于ArcMap Server的地图配置文件(map configuration file),
由ArcMap生成,输出为ArcMap文件( *.mxd , *.pmf )
3>Viewer configuration file
4>default.axl
1. AXL用于客户浏览器与ArcIMS服务器之间通讯,由ArcIMS的author编辑、输出;
2. 每一个地图服务指向一个AXL文件;
用于Image Service和Feature Service的地图配置文件
一般来说,地图配置文件作为对ArcIMS服务的输入,提供图层默认的属性和表现方式,而Request的参数则会覆盖地图配置文件中图层默认的属性和绘图方式,但Request的如果没有相应参数指令覆盖的话,ArcIMS service将使用地图配置文件中的默认值。
** 对含非英文字符的Layer Name或font Name必须用Author或XML编辑器编辑;
** 地图配置文件不包含数据源(Data Source),文件中只有对其的引用,地图配置文件只包含默认的 对地图的属性操作和绘图方式;
地图配置文件的构成:
1><?xml version="1.0" encoding="UTF-8"?> :prolog(序),通用XML文件开头的定义
2><ARCXML version="1.1">元素,出现在所有ArcXML文件中;
3><CONFIG>元素对,表示是配置文件;
|
4> |-- <ENVIRONMENT>元素对,包含本地配置;
| |-- <LOCALE\>
| |-- <UIFONT\>
| |-- <SEPARATORS\>
| |-- <SCREEN\>
|
5> |-- <MAP>元素对,包含地图配置。
|-- <PROPERTIES>
| |-- <ENVELOPE> //范围
| |-- <MAPUNITS> //单位
|
|-- <WORKSPACES>
| |-- <SHAPEWORKSPACE> //纪录所有Shape文件所在目录
| | (某图层所对应的具体Shape文件在<LAYER>中记录)
| |-- <IMAGEWORKSPACE>
| |-- <SDEWORKSPACE> //纪录所有SDE表所在服务器信息
| |(某图层所对应的SDE表名在<LAYER>中记录)
|-- <LAYER>
<ENVIRONMENT>详解:
包含:<LOCALE\> 定义 国家、语言
<UIFONT\> 定义 ArcExplore4,Java Viewer默认字体
<SEPARATORS\>定义 ts属性定义所有坐标(x , y)点之间的分隔符;
cs属性定义分隔x坐标和y坐标的分隔符;
<SCREEN\> 定义 默认客户端分辨率所用参数;dpi="96"为 1024 x 768
例子:
<ENVIRONMENT>
<LOCALE country="CN" language="zh" variant="" />
<UIFONT color="0,0,0" name="Arial" size="12" style="regular" />
<SEPARATORS cs=" " ts=";"/>
<SCREEN dpi="96" />
</ENVIRONMENT>
<MAP>
包含:<PROPERTIES> 提供定义一个ArcIMS service所需属性框架,包含地图图像初始长度与宽度,最大长宽范围,单位,当前投影等。
<WORKSPACES> 提供创建地图图层所需数据的存放路径
<LAYER> 每一个LAYER元素应用于一个图层,包含此图层数据如何符号化信息。
<PROPERTIES>详解:
必须包含<ENVELOPE>,在地图配置文件中<ENVELOPE>定义长宽范围
<ENVELOPE>通过定义x、y坐标的最大值和最小值定义了一个四边形
<ENVELOPE minx="115.16805678807434"
miny="39.39748735639008"
maxx="117.50695799536"
maxy="41.0590057298794"
name="Initial_Extent" />
name="Initial_Extent"时,说明第一次访问地图图像时的初始大小;
name="Extent_Limit"时,说明地图最大可放大限度。Extent_Limit在含有GET_IMAGE和GET_FEATURES的requests中将被忽略,SERVICEINFO的Response中有效
<MAPUNITS>定义地图中所用数据的单位
units ="decimal_degrees" 经纬度
units ="feet" 英尺
units ="meters" 米
<PROPERTIES>包含FEATURECOORDSYS and FILTERCOORDSYS 时
<MAPUNITS>由ArcIMS Spatial Server自动选择,地图配置文件中<MAPUNITS>被忽略。
<WORKSPACES>详解:
包含:<SHAPEWORKSPACE
name="shp_ws-0" //WORKSPACE的名字,在数据集中必须唯一
directory="c:\ESRIDATA" //包含Shape文件的路径
/>
<IMAGEWORKSPACE
name="jai_ws-1"
directory="c:\ESRIDATA" //包含Image文件的路径
/>
<SDEWORKSPACE
name="sde_ws-314"
server="172.18.2.6"
instance="port:5151" //SDE Instance的port号,
//格式为"port:端口号"。
//如为SDE直接连接,
//则格式为"sde:<database_vendor>"
//目前有: "sde:oracle" (Oracle 8i),
// "sde:oracle9i" (Oracle 9i),
// "sde:sqlserver".
database=""
user="mapuser"
encrypted="true" //访问ArcSDE Instance的password是否加密
password="QKWRIEUXAEFIJT"
//如为SDE直接连接,则密码后必须加
//"@<net8 service name>"
geoindexdir="C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\"
//geocoding index 创建的目录,
//Windows下默认的目录是"temp"
//Unix下默认的目录是 /tmp
/>
由<map>元素定义地图的配置,map由图层组成,用<layer>元素表示,图层layer包含两个问题
1,从哪些数据集里得到数据;
2,这些数据如何绘制出来;
从而包括了:
1,dataset定义图层使用的数据集;
2,renderer定义在客户端如何显示图层;
dataset可以是一个图层,也可以是一组图层组合起来这样会使用partition元素
SimpleRenderer 使用同样的符号画所有的要素,
ValueMapRenderer 根据图层表某列的不同值,或不同范围的值分别规定描绘的方法
ScaleDependentRenderer 仅仅画一个特定比例尺范围里的要素。
一层里的多个表现方法元素必须包含在一个GroupRenderer里。
关系如下图:
符号化:
将矢量信息转化为要表示的符号
基本上包含:
将点对象转化为相关符号 --SimpleMarkerSymbol
将线对象转化为相关符号 --SimpleLineSymbol
将面对象转化为相关符号 --SimplePolygonSymbol
各个Renderer元素包含各种Symbol元素;
详解:
layer包含:
id、name
type= featureclass地图要素
/acetate 临时层(相当于一个铺在地图上的透明塑料布)
/image 图像
maxscale/minscale 最大/最小比例尺
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL fillcolor="0,208,0" boundary="false" />
</SIMPLERENDERER>
定义了对于简单多边形的填充颜色、不显示边界;
而GroupRenderer将不同的绘制方式组合起来;
ValueMapRenderer指范围图,比如根据数据库某一个字段值来给该区域填充对应的颜色
比如有表示犯罪性质图层表有列:
code
====
1 一级谋杀
2 诈骗
3 偷盗
4 。。
将一级谋杀以三角形表示;诈骗以圆形表示;
<VALUEMAPRENDERER lookupfield="CODE">
<EXACT value="1" label="Type 1">
<SIMPLEMARKERSYMBOL color="27,127,27" type="triangle" width="6" />
</EXACT>
<EXACT value="2" label="Type 2">
<SIMPLEMARKERSYMBOL color="227,27,27" type="circle" width="10" />
</EXACT>
<EXACT value="3" label="Type 3">
<TRUETYPEMARKERSYMBOL transparency="1.0" glowing="0,255,255" font="ESRI Cartography" fontstyle="bold" character="252" fontcolor="255,255,0" fontsize="16" />
</EXACT>
<OTHER>
<SIMPLEMARKERSYMBOL type="square" width="4" />
</OTHER>
</VALUEMAPRENDERER>
这样一个图层,可根据他所在表某列的不同值,或不同范围的值分别描绘
<VALUEMAPRENDERER lookupfield="AREA">
<RANGE lower="0.0" upper="1000000.0" label="Small">
<GRADIENTFILLSYMBOL type="horizontal" startcolor="255,0,0" finishcolor="0,255,0" overlap="true" />
</RANGE>
<RANGE lower="1000000.001" upper="3000000.000" label="Medium">
<SIMPLEPOLYGONSYMBOL filltype="cross" fillinterval="4" fillcolor="255,146,0" />
</RANGE>
<RANGE lower="3000000.001" upper="10000000" label="Large">
<SIMPLEPOLYGONSYMBOL filltype="bdiagonal" fillinterval="6" fillcolor="255,37,0" />
</RANGE>
<OTHER>
<SIMPLEPOLYGONSYMBOL filltype="solid" fillcolor="128,128,128" />
</OTHER>
</VALUEMAPRENDERER>
valueMaplabelrender 就是多了一个标注的字段