创建ArcIMS网站的步骤.docx
《创建ArcIMS网站的步骤.docx》由会员分享,可在线阅读,更多相关《创建ArcIMS网站的步骤.docx(19页珍藏版)》请在冰豆网上搜索。
创建ArcIMS网站的步骤
创建ArcIMS网站的步骤
简单地说,创建一个ArcIMS网站需要三个步骤:
将2-3页中的1、2、3步骤拷贝此处
应考虑的因素
在开始设计之前,先构思一下网站的外观,在这一步所需要考虑比在Author中生成AXL文件更多。
此外,你需要考虑终端用户能用的功能,以及网站的美观程度。
首先,要搞清网站用户的一般需求,他们仅仅是想要快速地得到一幅地图,还是需要一些更高级的GIS功能?
不同的用户在访问网站时所需地图服务的功能是不同的。
你可以决定是否允许用户进行查询、编辑、地图提示、数据集成,也可以将其中之一或所有的这些功能加入到视图功能中。
其次,必须考虑客户端用户使用哪些软件。
例如,用户如果需要要素数据流服务,他就必须装有Java2插件,并且有支持Javaapplets的浏览器,用户是否具备这些条件呢?
或者即使用户具备了这些条件,他们是否有耐心等待下载Javaapplets的时间呢?
最后,你还要考虑到你的地图服务在网站上看起来效果如何?
什么样的用户界面更便于用户使用?
还需决定是用ArcIMS视图模板,还是扩展自定义视图选项。
ArcIMS比喻:
地图服务
在使用Designer创建网站之前,必须已创建并启动地图服务。
所谓地图服务就是你在AXL文件中定义的将要发布的数据的视图。
地图服务并非硬盘上的一个物理文件,而是关于数据如何被显示(AXL文件),数据本身以及数据如何被传送到客户端等的一个结合物。
可以把地图服务比喻为餐馆菜单上的条目,顾客是通过这些菜单条目从服务员那里得到自己想要的食物和饮料的。
在ArcIMS中也一样——客户是通过地图服务来得到想要的影像和数据的。
我们知道,菜单上的菜可以分成不同的类别(食物、饮料、甜点、开胃菜),地图服务也可以分成影像地图服务和要素地图服务。
最后,正如菜单上每个菜都是根据一个特定的食谱来做成的一样,地图服务也是根据一个特定的AXL文件来显示地图的。
新建一个地图服务
前面已经讲到了如何创建地图服务。
通常使用Author后即可创建地图服务,且地图服务必须在设计网站前创建。
如果使用Manager,将自动创建地图服务。
创建一个地图服务都可以把它比喻成在餐馆的菜单中增加一种菜——地图服务一旦创建好了,客户就可以通过它向服务器请求服务。
值得注意的是,地图服务的名字是区别大小写的。
对HTML浏览器,所选择的地图服务名将出现在ArcIMSparam.js中,对于Java浏览器,在default.axl中,每个地图服务都指向一个且只有一个AXL文件。
对于影像地图服务,还需要四条额外的信息:
1. HTTP地址(URL)——客户端用来从服务器下载影像所用的路径,区分大小写;
2. 影像类型——尽管ArcIMS可以识别许多图像格式,但所有的地图在下载前都需要转换成.jpg、.gig或.png中的一种才行。
注意,.gif文件格式用于商业用途时,需要使用许可;
3. 文件路径——影像数据在服务器上的存储路径;
4. 服务器清空时间——即服务器自动清除某一路径下的影像的时间间隔。
系统默认时间间隔为10分钟。
在WindowsNT服务中的Tasker服务负责影像的删除。
创建网站
Designer中的第一个界面为CreateaWebSite面板。
Designer向导的界面和Manager中设计网站的界面基本上相同。
要设计一个新网站,首先输入新网站的名字和标题。
网站的名字创建的也是客户端中用来浏览你的网站的URL地址中的最后一部分,它不一定要和AXL文件或地图服务的名字相同。
在设计网站的过程中,你都可以点击设计面板中的Back按纽返回到前面的步骤修改设置。
但是要注意,如果在Manager中运行Designer,其运行时与网页浏览器相似,如果你在设计完成之前退出就会丢失前面的一切信息,所以一定要完成全部的过程再退出。
此外,设计一个网站时可能不会看到所有的面板。
这是因为ArcIMSDesigner引导你设计网站的过程依赖于你前面在Author中的的设定。
例如,如果前面没有创建预定义查询,在Designer中就不会看到StoredQuery面板。
MapService面板
MapService窗口是Designer中的第二个面板。
这个面板是用来选择你想要在网站上显示的地图服务。
地图服务可以驻留在网络上的任何地方,甚至可以放在一台远程机上。
MapService面板上默认显示的是本地机上的地图服务。
如果要连接远程机上的地图服务,输入网络上该机器的名字,然后点击Connect。
要记住的一点是,网站的地图服务必须在Designer处理之前启动。
如果你的地图服务并没有被列出来,可以运行一下Administrator检查其状态。
要选择一个或多个地图服务,先点击选中它,然后点击Add按纽将其加入到右边列表框。
利用相反的方法可以删除该地图服务。
一个网站上可以发布多个影像和要素地图服务的组合,这视应用的需要而定。
WebSiteTemplate面板
接下来将让你选择使用哪种网站模板。
无论你选择的地图服务是什么,WebSiteTemplate面板都将出现。
这一面板可以决定网页元素在网页上出现的位置及你的网站的布局。
这里,视不同的地图服务而定,有三种ArcIMS浏览器模板可供选择。
JavaCustum模板允许用HTML和JavaScript进行定制,可以使用影象地图服务和要素地图服务。
视图模板支持影象数据流和要素数据流,要求客户端有Java2插件,所以要求客户端机器上装有JavaRuntimeEnvironment(JRE)并且其浏览器要能够支持Java。
JavaStandard模板与JavaCustum模板不太一样,它没有自定义功能。
但是,它和JavaCustum一样也能够同时支持影像和要素地图服务。
在客户端也要求有Java2插件。
选择了这一面板后,Designer将立即进入最后一个面板。
HTML面板是一个不支持Javaapplets的模板。
HTML模板只支持一个影像地图服务。
因此,只有影象数据才能够传送到HTML浏览器。
程序员可以通过HTML和JavaScript编程进行完全定制。
PageElements面板
接下来就要决定显示哪些页面元素了。
系统默认显示全部页面元素。
其中,地图元素总是被包含的,你可以改变地图的背景色,但却不能删除它。
工具栏元素也是如此。
图例、比例尺和概略图元素是可选的。
其中图例和比例尺的前景色能够影响文本的颜色。
要不显示它们中的任何一个,只许取消对其前面的复选框的选择即可。
如果没有把图例元素选中,就会出现其它一些面板来为活动图层选择某些工具。
要改变任何一种背景色,前景色或轮廓色,只需点击相应的颜色框就可以打开颜色选择对话框,点击预设的颜色、RGB值或HSB值即可进行设置。
MapExtent面板
MapExtent面板是用来定义用户进入网站后看到的地图的初始范围和最大范围。
首先,为你的地图选择一个初始范围,这将是客户第一次打开该地图时看到的范围。
系统默认的初始范围是所有地图服务的全部范围。
ExtentofselectedMapService选项用来限制用户所见地图范围为所选择的地图服务范围,超出此范围的任何信息将不下载到客户端。
接下来,可以设置一个显示范围限制,使得超出此范围的数据对用户都不可见。
注意,对要素地图服务来说,不仅可以指定一个地图服务,而且可以指定该地图服务中的一个图层。
这在使用影像地图服务时是不行的。
VisibleLayer面板
这个面板允许程序员选定用户可见的图层。
地图服务可能包含不止一个图层,有时你可能希望某些图层对用户不可见(比如当两个地图服务有重复的图层时)。
这一面板只对要素地图服务有效,在影像地图服务中不能选择单个图层。
你可以从下拉列表中选择一个地图服务。
对每一个地图服务都只能分别设定它们的可见图层。
系统默认地图服务的所有图层都是可见的。
若要使某些图层不可见,在图层列表中点击该图层的名字,然后在Visible列中取消对其复选框的选择。
如果想要使所有的图层都可见,直接在选中SelectAllLayers框即可。
在选择可见图层时,要考虑到你的数据的许多因素。
如果图层具有很多要素并且范围很大,系统处理过程及下载的时间就会明显长得多。
这种情况下,设置其可见比例尺范围,使其在小比例尺时不见会很有帮助。
OverviewMap面板
如果你想在你的网站上放置一个概略图窗口,这个面板可以帮助你确定概略窗口用何地图服务。
从下拉列表中选择一个地图服务(别忘了可以从远程机上调用影像地图服务!
)即为其设定了概略图。
一般说来,覆盖最大地图范围的地图服务将被选中用来显示概略地图。
但是,可以在Designer中对其进行改变。
Scalebar面板
如果要在站点中使用比例尺,这一步将帮助您设定比例尺的参数。
DataSourceUnits中必须选择一个和源地图投影相同的地图单位。
因此,你要事先知道源地图使用的坐标系统和投影类型。
此外还应注意,如果客户端用户想把他们的数据和你网站上的数据进行集成,那么他们的数据的投影就必须和你的数据一致,否则数据就不能正确匹配。
从下拉列表中选择了一个合适的源数据单位(十进制经纬度,米,英尺)后,再选择想用的地图比例尺单位。
比例尺是用比率来表示的,即1个屏幕单位(英寸或厘米)长度相当于现实世界中多少单位(英里,英尺,米或千米)。
ToolbarFunctions面板
ToolbarFunctions面板允许用来选择网站上可以使用的工具。
有时候,你可能只希望为那些非专业用户快速地显示一幅地图,这时用少量的工具即可。
相反,有时候可能需要为那些GIS专业用户实现一些复杂的分析操作提供所有的工具。
可以向用户提供所有的工具或任何工具的子集。
比如,如果你觉得用户不太可能使用本机数据与网站上的数据进行集成,你可以去年Addlayer按钮。
系统默认选择所选模板的所有的漫游和缩放工具及查询工具。
如果某个工具变成了灰色,说明你的地图服务里的数据不支持这种操作。
例如,影像地图服务就不支持MapTips,EditNotes以及LayerProperties等工具。
MapTips面板
这一面板用来设置地图提示的图层及其字段。
地图提示有助于快速地访问某些特定的要素信息。
设置地图提示后,用户把鼠标放在某个要素上时,将出现设定的提示信息。
地图提示仅对要素地图服务的图层有效,且每个图层只能把一个字段设置为地图提示。
请注意不要把MapTipa面板和前面的MapTips工具相混淆了。
工具栏上的MapTips工具是用来改变地图提示的。
要设置地图提示,首先从下拉列表中选择一个地图服务,然后复选你想要进行地图提示的图层复选框,最后在MapTipField中选择一个用来提示的字段。
选择SelectAllLayers将使地图服务的所有图层都设置地图提示。
StoredQuery面板
StoredQuery面板允许你在网站上加入预定义查询。
这样,客户端用户就可以使用你在Author中定义好的带有变量的查询语句对要素进行查询。
只有在AXL文件中定义好了预定义查询才会出现这个面板。
从下拉列表中选择一个地图服务,然后选择该地图服务的一个图层,并复选已命名查询的复选框。
SelectAllQueries复选框能将该层的所有预定义查询都加入。
重复操作,可以加入其它地图服务的预定义查询。
IdentifyResults面板
IdentifyResults面板用来设定用户在使用Identify工具时可用哪些属性字段。
首先,选择一个地图服务和图层,然后对每个字段后面的IsDisplayed列中的复选框进行选择。
系统默认选择所有的字段。
如果有多个地图服务,重复上述操作即可。
需注意的是,网站只须向用户提供他们需要的信息即可,这有助于提高网站的运行效率。
也可以在AliasFieldName中输入字段的别名,这在字段名很长或不太容易理解时很有帮助。
ArcIMS比喻:
MapNotes和EditNotes
MapNotes和EditNotes反映一种协作性GIS的思想。
其中MapNotes提供了一种客户间协作交流的方式,而EditNotes提供了一种客户端用户与服务器端管理员之间交流协作的方式。
MapNotes允许多个客户使用“虚拟地理公告牌”进行交流。
互相连接的某个用户可以看到其它用户的注释,甚至可以用空间数据进行注释。
可以把MapNotes比喻成餐馆里的顾客之间的谈话。
MapNotes存储在服务器端的某个特殊目录下。
EditNotes允许用户把他们的修改意见传送给服务器端的管理人员。
数据管理人员可以根据其选择接收或忽略修改意见。
MapNotesTool面板
前面提到过,MapNotes反映了协作性GIS的思想——它不仅允许用户共享数据,还可以分享关于数据的看法和观点。
MapNotes工具允许在地图上添加文本或图形元素。
因此可以把MapNotes看成是每个人都能看到的地理公告牌。
它使得人们可以用同样的数据来表达对该地图数据的看法。
如果你在前面的ToolbarFunction面板中加入了MapNotes工具,MapNotesTool面板将要求为MapNotes确定一个地图服务和目录。
MapNotes以文本和图形的形式保存C/S结构中的中间件管理的文件夹中。
因此,这个文件夹可以放在网络上的任何地方,包括远程机中。
这些文件夹是由Administrator程序来创建和维护的。
下一章将详细讲述MapNotes的有关内容。
EditNotesTool面板
和MapNotes一样,EditNotes也反映了协作性GIS的思想。
它可以对数据的空间和属性要素进行编辑,编辑的结果可以发送给其他人参考,但是只有数据管理员才有权决定是否采纳编辑修改的建议。
EditNotesTool面板的出现也是需要在ToolbarFunction面板中选择了EditNotes工具,这里你必须指定一个地图服务并且为EditNotes创建一个文件夹。
和MapNotes一样,EditNotes也是存储在由C/S结构中的中间件组件维护的文件夹中。
因此,这个文件夹也可以放在网络上的任何地方,包括远程机。
这些文件夹是由Administrator程序来创建和维护的。
下一章将详细讲述EditNotes的有关内容。
WebSiteLocation面板
至此,你已经完成了网站的设计,ArcIMS将使用在安装过程中指定的默认的文件夹位置为当前网站的位置。
但你可以在这里点击Change按纽来改变存储文件夹的位置。
一切都好了以后,点击CreateWebSite按纽即可。
如果没有点击这个按纽就退出的话,所有的都将前功尽弃。
WebSiteSummary面板
WebSiteSummary面板表明设计的网站已经建立,并显示其使用的网站名、网站位置及所使用的地图服务等等。
这些信息可以作为元数据记录下来,以便编辑此网站或创建其它网站时使用。
如果你想改变前面的某些设置,点击Back按纽返回去修改即可,但一定要点击CreateWebSite按纽才能保存修改的结果。
如果你想接着设计另一个网站,点击DesignAnother。
如果想测试一下网站能否正常运行,可以在网页浏览器中输入你的网站的URL地址:
http:
////
例如,如果你创建了一个名为Canada的网站,并且使用的是默认的安装目录,你的网站的URL地址应该是:
http:
///Website/canada
Designer的输出结果
Designer的设计过程完成以后,将在你的网站目录下将生成一系列的文件。
这些文件视选用的不同的浏览器模板而定。
但是应该注意到,ArcIMS所有的模板文件都有一个共同的默认起始页——default.htm。
一些以HTML为后缀的HTML文件也将创建,这些文件组成了网页上不同的页面元素。
对于HTML和JavaCustum模板来说,还创建了一些.js文件,这些文件定义了网站的参数或选项的JavaScirpt文件,可以通过编辑文件来定制自己的网站。
本章后面还将详细讲到如何通过JavaScript文件来定制网站。
所有的模板创建的网站目录下,至少有两个文件夹。
其中images文件夹存储了网站上要用到的所有图片,包括工具图标和指针样式,而meta-inf文件夹里保存了你可能想要添加到网站上的元数据信息。
guest2006-07-2720:
21
aimsLayers.js
变量定义含义,知道这些,我们自己写arcXML请求时,不用把图层具体信息硬编码到程序中。
比如要知道图层的字段,我们可以从这些数组中得到,而不要写到程序中。
varlayerCount=0;//图层数量
varLayerName=newArray();//图层名称
varLayerID=newArray(); //ID
varLayerVisible=newArray();//是否可见
varLayerType=newArray(); //图层类型
varLayerIsFeature=newArray();//是否为矢量图层
varLayerExtent=newArray(); //图层显示范围 以|分界的字符串
varLayerMinScale=newArray();//最小比例
varLayerMaxScale=newArray();//最大比例
varLayerRenderString=newArray();
varLayerShapeField=newArray(); //SHAPE字段的名称为#SHAPE#
varLayerIDField=newArray(); //主键字段名称 MAPUSER..OBJECTID
varLayerFieldList=newArray(); //字段名称以,隔开的字符串
varLayerFieldTypeList=newArray(); //字段类型以,隔开的字符串
varLayerFieldSizeList=newArray(); //字段长度以,隔开的字符串
varLayerFieldPrecisionList=newArray(); //精确度 以,隔开的字符串
varLayerFields=newArray(); //活动图层的字段名称
varLayerFieldType=newArray(); //活动图层的字段类型
varLayerFieldCount=0; //活动图层的字段数量
varActiveLayer=""; //活动图层的ID
varActiveLayerType=""; //活动图层的类型
varlayerLeft=0; //没用
varlayerRight=0; //没用
varlayerTop=0; //没用
varlayerBottom=0; //没用
varfieldIndex=0; //没用
varFeatureLayerCount=0; //矢量层的数量
//fieldaliasesarrays
varAliasFieldName=newArray(); //没用
varAliasFieldAlias=newArray(); //没用
varLayerListOpen=false;
varqueryOpen=false;
vardisplayLayerInfoButton=false;
varsetLayerVisible=newArray();
这些是ims中放大操作的坐标转换。
有什么问题再问我。
varx1,y2; //起点 坐标
vary1,x2; //对角点坐标
//开始拉框。
由鼠标点击触发
functionstartZoomBox(e){
//把地图所在的
移动到初始位置。
moveLayer("theMap",hspc,vspc);
//得到开始的屏幕坐标(相对与地图的哦)mouseX mouseY
getImageXY(e);
//判断是否在地图中点击 地图宽度iWidth 地图高度iHeight
if((mouseXif(zooming){//zooming表示正在放大中
stopZoomBox(e);//停止拉框
}else{
x1=mouseX;//开始点x
y1=mouseY//停止点y
x2=x1+1;//表示你画的框的宽度
y2=y1+1;
zleft=x1;//你画的框左边的位置
ztop=y1;//你画的框上边的位置
zbottom=y1;//你画的框下边的位置
zright=x1//你画的框右边的位置
boxIt(x1,y1,x2,y2);//画红框,dhtml实现
zooming=true; //表示正在放大中
}
}
returnfalse;
}
//拉框中,移动鼠标
functionmouseStuff(){
x2=mouseX;//得到当前鼠标坐标
y2=mouseY;//得到当前鼠标坐标
if(x1>x2){//判断起点终点x坐标大小,重新给zrightzleft附值
zright=x1;
zleft=x2;
}else{
zleft=x1;
zright=x2;
}
if(y1>y2){//判断起点终点yzbottomztop附值
zbottom=y1;
ztop=y2;
}else{
ztop=y1;
zbottom=y2;
}
//如果起点终点不是一个点时,画框
if((x1!
=x2)&&(y1!
=y2)){
boxIt(zleft,ztop,zright,zbottom);
}
}
//停止拉框,鼠标释放触发事件
functionstopZoomBox(e){
zooming=false;//表示放大完成
//当我们拉框太小,小于线的宽度时,就当作点放大。
if((zrightzoomin(e);
}else{//拉框放大
vartempLeft=lastLeft;
vartempRight=la
展开阅读全文