CIMS经验总结.docx
- 文档编号:8960413
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:24
- 大小:32.96KB
CIMS经验总结.docx
《CIMS经验总结.docx》由会员分享,可在线阅读,更多相关《CIMS经验总结.docx(24页珍藏版)》请在冰点文库上搜索。
CIMS经验总结
第一讲
当规划一个ArcIMS的站点时,第一个面临的问题就是“我要选择什么样的客户端?
”这是一个很难回答的问题。
ESRI提供了三种viewer以供选择。
然而,通过选择不同的连接器——Servlet、ActivX、ColdFusion或AppServerLink连接器——可以获得一个不同寻常的客户端。
所以,当我们考虑使用什么Viewer时,选择什么样的连接器同样是一个需要仔细考虑的问题。
下面的讨论可以帮助ArcIMS的用户,开发商和管理员决定最合适的连接器和Viewer的组合。
ArcIMS客户端组件
Viewers决定了ArcIMS站点的功能和外观,决定了提供哪些空间、属性查询工具和显示工具。
ArcIMS提供了三种Viewer选择。
HTMLViewer
HTMLViewer由一组HTML和JavaScript程序组成。
它比任何一种JavaViewer都更轻巧,但不是最瘦的viewer。
Viewer的胖或瘦代表了需要下载到浏览器的数据量。
选择HTMLViewer的一个主要原因是它的功能的可扩展性。
通过DHTML,JavaScript,XML和其他技术,我们可以对已有的功能进行扩展。
不需使用任何ArcIMS连接器,我们仍然可以在HTMLViewer中使用ActiveServerPages(ASP),ColdFusion和Java技术。
但是,HTMLViewer同时只能显示一个ImageMapService。
ImageMapService将结果以JPG,GIF或PNG格式发到客户端——与FeatureMapService数据流的发送方式不同。
JavaViewer
ArcIMS提供两种JavaViewers——JavaStandardViewer和JavaCustomViewer。
JavaViewer通过Javaapplets提供地图服务和信息查询。
Javaapplet不同于servlet,它运行在客户端,不是服务器端,并且必须下载到客户端。
因此,Java客户端比其他的客户端更胖。
通过Javaviewer浏览网站,用户必须首先下载两个plug-ins。
JavaStandardViewer无法定制工具或布局。
而JavaCustomViewer可以通过HTML和JavaScript调用applets进行定制。
因为Netscape不支持applet编程,因此JavaCustomViewer不能在Netscape浏览器中使用。
所有的JavaViewers都可以支持Image和FeatureMapServices,并且支持同时使用多个MapServices。
FeatureMapService使用数据流,因此可以支持客户端的用户交互和分析功能。
应用服务器连接器
ArcIMS应用服务器连接器连接了Web服务器和ArcIMS应用服务器。
其中Servlet连接器——ArcIMS的默认连接器——可以用在ArcIMS的所有三个Viewers中。
ColdFusion和ActiveX连接器通过定制的客户端将各自的语言翻译为ArcXML,用来和ArcIMS的应用服务器进行通讯。
AppServerLink是Java应用向ArcIMS应用服务器发送ArcXML请求的通道。
它可以用于独立的Java应用,或网站调用的Javaapplet,或构建网站的JavaServerPagers(JSP)中。
ServletConnector
Servlet是运行在服务器端的Java应用。
如果使用servlet,需要ServletEngine软件的支持。
如果WebServer本身不包含ServletEngine,则需要第三方的ServletEngine软件。
通过ServletConnector建立的站点几乎可以支持任何WebServer和Viewer的组合。
通过ArcIMSDesigner可以创建ServletConnector连接的站点,而且只需要很少的编程工作就可以建立一个基本的,但稳固的站点。
ActiveXConnector
通过ActiveXConnector,可以使用ASP进行网站的开发。
VBScript、HTML、JavaScript和XML可以用来定制网站。
ASP在服务器端解释并被以只读的格式传送到浏览器。
客户端不需要下载任何东西。
ActiveXConnector定制的客户端与HTML或JavaViewer相比是更瘦的客户端。
ActiveXConnector需要基于MicrosoftWindows的服务器,WebServer必须是MicrosoftInternetInformationServer(IIS)。
客户端可以是任何浏览器,不需要插件支持。
ActivXConnector还可以被用在独立的VB应用中,使用方式类似于MapObjects的应用。
在开发文档中,ESRI提供示例程序和对象模型图。
但是,它的功能没有HTML或JavaViewer那么强大。
ColdFusionConnector
ColdFusionConnector非常类似于ActiveXConnector,因为它的代码位于服务器,并被翻译为浏览器可以识别的格式。
ColdFusion使用ColdFusion标记语言(CML),一种类似于HTML的可以被ColdFusion服务器解释的标记。
该连接器可以用于Windows或UNIX服务器上的大部分WebServer。
WebServer上必须安装ColdFusion服务器。
ColdFusionConnector定制的客户端与HTML或JavaViewer相比是更瘦的客户端,也不需要插件的支持。
可以通过ColdFusion标签,HTML,JavaScript和XML搭建ColdFusion站点。
ESRI提供入门示例帮助建立站点,但功能没有HTML或JavaViewer强大。
可以通过安装ColdFusionStudio——ColdFusion的开发环境,使得开发过程变得更容易。
AppServerLink
AppServerLink为开发基于Java的ArcIMSViewers提供了更多的选择。
通过AppServerLink,可以编写Java独立应用,applets和JSP。
搭建Java独立应用的过程很类似于编写MapObjects的应用。
象Java版本的ArcExplore一样,Java的独立应用可以使用ArcIMS的数据和信息;还可以应用applets建立类似于JavaViewers的站点,但这种方法提供了更灵活的定制手段。
最后,通过AppServerLink,还可以使用JSP——JavaServlet技术的扩展——建立类似于ASP和ColdFusion的站点。
通过JSP和Java,HTML,JavaScript和XML编写全部的代码。
服务器将代码解释成浏览器可读的格式。
JSP是另外一种不需要任何浏览器插件支持的瘦客户端,但它需要服务器端的Servlet引擎的支持。
但是,因为ArcIMS需要Servlet引擎,因此不需要额外的资源。
ESRI提供java类的API,以及应用JavaBeans使用AppServerLink的一些Java和JSPViewer的示例。
如何做出选择
当考虑如何选择连接器和Viewer时,面对的用户和所需的功能是需要重点考虑的两个问题。
站点是建立在Intranet还是Internet?
用户使用什么浏览器?
用户的GIS背景?
需要使用什么功能?
定制的工作量有多大?
如果要建立一个Intranet站点,JavaViewer可能是个明智的选择。
在一个机构内部,要求用户事先安装插件或在桌面端下载并安装插件相对容易。
JavaViewer支持更丰富的功能,如MapNotes和EditNotes,这是HTMLViewer所不支持的。
一旦客户端加载了applets,地图的显示和查询速度将非常快,但相对于其他的Viewers,JavaViewer的定制功能非常有限。
如果要建立一个Internet站点,可以考虑HTMLViewer、ActiveXConnector、ColdFusionConnector或AppServerLink。
使用HTMLViewer的主要原因是不需定制,就可以获得强大的功能。
ArcIMSDesigner输出了一组预先定义好的功能。
HTMLViewer的文档详细描述了它的功能,变量和方法。
并且HTMLViewer支持所有平台的客户端和服务器。
开发者只需熟悉HTML和JavaScript就可以通过HTMLViewer建立站点。
HTMLViewer的主要缺点是它比其他连接器的客户端胖,响应时间慢,特别是当访问大数据量时。
其他定制连接器建立的客户端更瘦,因为代码位于服务器端并且不需下载到客户端。
我们可以根据两个主要因素——环境和资源——选择连接器。
如果使用Windows服务器上的MicrosoftIIS,可以选择ActiveXConnector;如果不是,选择任何连接器都是可行的。
对于UNIX服务器,可以选择ColdFusion或AppServerLink连接器,但ActiveXConnector不行。
选择Connector的另一个重要因素是你所掌握的开发手段。
如果熟悉VB,可以使用ActiveXConnector。
同样地,如果开发人员掌握ColdFusion,则ColdFusionConnector可能成为最佳选择。
对于所有连接器,HTML和JavaScript简单易学,是必须掌握的开发手段。
所以如果你不熟悉其他的开发方式,HTML和JavaViewer是最佳的选择。
如果使用AppServerLink,则需要Java编程的经验。
而对于初学者来说,Java不是很容易入门。
虽然所有的连接器都备有开发文档,但ServletConnector的文档是最完整的。
第二讲
这篇文章假设读者熟悉使用ArcIMSManager工具(包括三个部分:
Author、Administrator和Designer)创建一个简单站点的过程,现在希望使用ArcXML实现更多的功能或改变地图的显示——ArcXML是ArcIMS用来在各组件之间进行通信的文件格式。
这篇文章除了详细介绍如何通过在地图配置文件中添加ArcXML元素扩展ArcIMS功能外,还概括介绍了ArcXML的结构和语法。
在ArcUserOnline站点上提供了三个循序渐进的教学例子。
请登录站点
当用ArcIMS程序创建基本的ArcIMS站点时,Author把用户选择的数据(例如:
Shapefile、coverage、ArcSDE层、图象等)整理成地图的图层;设置显示比例尺,要素表现特性,和地理编码;并输出一个用ArcXML写的地图配置文件。
Administrator用这个地图配置文件生成一个Mapservice。
ArcIMS空间服务器解析用户请求并进行相应的处理,根据地图配置文件中的定义把这些数据组织在一起发送给客户端。
ArcXML源于XML和HTML有相似的地方,是SGML的子集;它是一种发展了的标记语言;描述结构数据的内容而不是数据的表现。
ArcXML文件是文本文件,以.axl结尾,可以编辑。
ArcXML定义了MapService的内容以及从客户端发出的请求,ArcIMS响应,各业务逻辑层和服务器之间的通信的内容。
通过在地图配置文件里手工添加元素和元素的属性,可以实现一些不能通过Author实现的功能,例如更多的表现方法和标注选项,数据源,表联接以及其他的功能。
ArcXML结构和语法
所有的ArcXML语句由元素和属性组成,这些元素和属性以等级结构组织在一起。
在这种等级结构下,元素被分为父元素和子元素,子元素嵌在父元素的里面。
多数的元素都有一个或多个由名称/值对组成的属性。
一些ArcXML元素要求必须指定一些属性。
如果在地图配置文件里没有指定元素的属性,系统会使用缺省属性。
当写元素和属性时,必须严格遵守ArcXML语法,否则不能创建Mapservice。
元素必须被大写,并象HTML一样用小于(<)大于(>)号封闭。
属性必须小写,属性值必须用双引号括起来。
一次只能定义一个属性值。
ArcXML程序员参考指南
元素和属性的用法可以参考“ArcIMS程序员参考手册”。
这本手册以PDF格式随ArcIMS发送,是用户了解和学习ArcXML元素和属性的非常有帮助的资料。
它列出了所有的ArcXML元素以及与之相关的属性的详细描述。
每一个元素的必要属性用粗体表示。
所有的属性都列出了定义的值或值的类型。
例如,对元素HASHLINESYMBOL的描述包括有效定义的值(如,type属性的foreground和background值)和允许的值的类型(如,color属性值从0,0,0到255,255,255)。
属性默认值用方括号括起来。
元素介绍开头的地方都有指向父元素和子元素的超联接。
必要的子元素用粗体表示。
另外,该手册还包含了一些如何使用ArcXML元素和属性的例子。
在ArcOnline站点上也可以得到“ArcIMS程序员参考手册”。
给地图配置文件中添加要素
可以使用简单的文本编辑器或XML编辑器编辑地图配置文件,例如微软的Wordpad、notepad或Altova公司的XMLSpy或IBM的Xeena(如在中文环境下,则需要支持unicode的文本编辑器,如emeditor)。
除非在Administrator里刷新了Mapservice,对地图配置文件的修改不能立即显示在客户端。
刷新MapService会使地图配置文件被重新读入,并把所做的改变反映在MapService里面。
编辑地图配置文件时,必须严格遵守ArcXML语法,地图配置中的任何错误都会导致Mapservice不能被刷新,并且会导致Mapservice从Administrator中被删除。
消息控制台可以从Author或者Administrator中的Help->MessageConsole菜单进入。
消息控制台是用来显示ArcIMS产生的错误和警告。
下面的部分用来描述怎样通过使用符号化、标注和图形元素来改变地图的显示或者查询数据和连接表。
改变要素符号化
有三个ArcXML元素用来表示如何符号化点线面数据。
要素数据用下列的元素表示:
SIMPLERENDERER使用同样的符号画所有的要素,
VALUEMAPRENDERE使用表里的一个字段画要素,
SCALEDEPENDENTRENDERER仅仅画一个特定比例尺范围里的要素。
一层里的多个表现方法元素必须包含在一个GROUPRENDERER里。
每一个表现方法元素都包含了一个子元素,用来定义要素如何显示。
有多种符号元素,符号元素对要被表现的要素类型来说是特定的,例如;SIMPLEMARKERSYMBOL只能用于点要素,虽然HASHLINESYMBOL元素在Author里可以用来表示铁路,但是一些属性例如宽度和间隔可以在地图配置文件中修改,这些改变可以覆盖它的默认属性,从而重新定义如何画HASHLINESYMBOL元素。
要素的符号化也能基于一个字段。
VALUEMAPRENDERER元素能够根据一个字段的值为一层要素分类,根据这个分类,它可以使用连续的或者唯一的符号表现数据。
EXACT、RANGE、和OTHER这三个和VALUEMAPRENDERER一起使用的子元素指定了要被符号化的值。
使用EXACT元素用一个特定的值表现要素,然而使用RANGE时使用一个范围来表现要素。
OTHER元素用来表现不包含一个特定值的要素,例如一个特定的TRUETYPE符号用来表示首府城市,其他的城市都用一个简单的点符号表示。
有些符号元素,例如GRADIENTFILLSYMBOL和TRUETYPEMARKERSYMBOL元素在Author界面上无法定义,只能使用ArcXML定义。
通过ArcXML可以使用ESRI定义的许多点符号。
标注要素
标注属性用两个标注元素来定义(SIMPLELABELRENDERER和VALUEMAPLABELRENDERER)前者为所有的要素设置了同样的标注属性,后者根据一个数据库里的值定义标注属性。
Author能够设置层的标注属性,例如标注子段,标注位置和字体特征。
在层属性对话框中只能指定一个字段。
Author也能够为标注元素添加子元素,例如为文本标注添加TEXTSYMBOL和为高速公路标注添加SHIELDSYMBOL。
手工编辑地图配置文件为标注提供了很大的灵活性。
例如:
使用外边框和箭头标注要素的CALLOUTMARKERSYMBOL元素有一些包括箭头的长度在内的定义字体和外边框的符号的属性。
表现方法元素属性能改变标注出现的位置和频率。
当使用SIMPLELABELRENDERER元素时允许使用多个字段做标注。
以同样的过程,使用VALUEMAPLABELRENDERER元素的labelfield属性连接标注。
点要素的labelpriorities属性用于点要素的标注定位,labelbufferratio属性在每一个标注周围建一个缓冲区,这样其他标注就不能放置在离它一定距离之内的范围。
Howmanylabels属性控制了要画的标注的方法——是一个要素图形一个还是要素每个部分都标,或一个要素名称标一个。
使用图形元素
把LAYER的type属性设置为acetate可以在地图上面加一个图形层。
Acetate层在数据层上又添加了一个图形层,它只能用于HTMLViewer。
缺省情况下,Acetate层里的OBJECT子元素有:
指北针,比例尺和版权文字。
通过往地图配置文件里添加新的LAYER元素可以往acetate层添加新的OBJECT对象。
每一个新的LAYER元素的type属性必须设置为acetate。
在LAYER元素里有一个或多个OBJECT子元素,每个OBJECT元素都有一个units属性,其值可以是pixel或database。
如果units属性被设置成pixel,对象将使用以地图左下角坐标为原点的像素坐标。
如果units属性设置为database,对象将使用地图服务的地图坐标。
除了指北针和比例尺,一些点线面图形或文本都可以添加到acetate层,并允许把一些由文字和徽标组成的标题添加到新的LAYER元素里。
通过往POINT元素里添加RASTERMARKERSYMBOL元素可以添加图像。
POLYGON元素可以包含SIMPLEPOLYGONSYMBOL元素,通过把它的overlap属性设置为false可以防止标注压盖acetate层的边框。
还有一些对象,如复制地图坐标网格线的LINE对象元素,也可以添加到地图显示中来。
查询数据和联接表
基于空间条件或关系数据库查询数据是GIS的基本功能。
空间查询和数据库表查询能够通过使用SPATIALQUERY元素实现。
这个元素根据空间查询或表查询或两者结合查询的结果在地图上画要素。
SPATIALQUERY还能实现一些简单的表联接。
表查询的语句放在SPATIALQUERY元素的where属性里,格式和SQL语句里的WHERE子句一样,所有满足where属性条件的要素将被画在地图上。
在要用到符号的查询语句里,如大于小于号,必须在where属性里使用这些符号的代替值。
空间过滤器定义了空间查询的范围。
范围可以是一个矩形,点,多边形或缓冲区。
所有的在空间过滤器里的要素都将被画在地图上。
SPATIALFILTER元素用在SPATIALQUERY里面,一般定义为使用矩形空间过滤的ENVELOPE元素或定义为使用顶点定义的多边形。
无论哪一种都指定了空间过滤器的范围。
SPATIALFILTER元素的relation属性指定了空间过滤器是个围绕在图形周围的矩形(envelopeintersection)还是就是图形本身的区域(areaintersection)。
SPATIALQUERY元素还能够用来联接dBASE(DBF)文件和shapefiles或用来联接ArcSDE的表。
Shapefile的层只能和同一目录下的DBF文件相连,ArcSDE的表只能和同一DBMS下的表相连。
在SPATIALQUERY元素里要指定主表(TO表),字段名,连接表(join表),字段名以及联接类型。
Exact联接适合于一对一或多对一关系。
Scan联接对一对多或多对多最有效。
结论
通过了解ArcXML的结构,元素和属性,我们知道ArcIMS的功能可以通过修改地图配置文件里的元素来进行扩展。
ArcUser站点提供了三个用来展示如何手工修改地图配置文件的教学例子。
请登录Programmer´sReferenceGuide》。
第三讲
怎样设置ArcIMS的权限验证
ArcIMSServletConnector允许为MapService(地图服务)设定访问权限,这样只有被授权的用户才能访问他们。
这个过程被称为权限验证。
默认的,不进行权限验证,ServletConnector将所有请求发给ArcIMSApplicationServer(应用服务器)。
但是,你可以通过配置ServletConnector来验证客户端:
*是否有有效的用户名和密码
*是否可以从特定的机器(通过IP地址判断)访问MapService
*是否有未过期的访问权限(如未服务设定了有效期)
*是否有特定请求的访问权限(如是否能执行地址匹配功能)
当接到从客户端发来的请求,ServletConncctor首先检查是否为MapService设定了权限验证。
如果设定了,ServletConncector从客户端获取必要的信息——如用户名,密码——然后确定是否满足条件。
如果条件满足,请求将被发给ApplicationServer。
否则,将会提示用户无权访问该MapService。
ServletConncctor通过访问控制列表(ACL)来管理限定的和非限定的MapServices以及权限验证信息。
ACL有两种格式:
基于文件的ACL和基于JDBC的ACL。
基于文件的ACL的主要优点是容易建立,不需要其他的部件支持。
基于文件的ACL将权限信息保存在XML文件中,该文件可以通过任何文本编辑器建立。
在这个文件中,你可以定义哪个MapServices被限定以及如何访问他们——如包含所需的用户名和密码。
当Servlet初始化时,这个文件的内容被加载进内存。
因此,如果你编辑了ACL文件,需要重新启动servletengine(如果servletengine嵌入web服务器,则需要重启web服务器)使你的更改生效。
而且,在ACL文件中定义的用户数量的增加会导致web服务器的内存使用量的增加。
基于JDBC的ACL将权限信息保存在通过JDBC驱动程序访问的关系型数据库中。
JDBC的ACL可以比文件的ACL管理更大量的用户和MapService。
而且,如果你需要频繁更改ACL,基于JDBC的ACL可以不终止服务,即不需要重新启动servletengine,而使更改立即生效。
为了使用基于JDBC的ACL,你必须运行一个关系型数据库(如Oracle),并且有它的JDBC驱动。
注意:
只有通过ArcIMSServletConnector处理的HTTP请求,才可以使用权限管理,其他连接器(如ActiveXConne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CIMS 经验总结