关于JSP发布地图服务

js

<b>关于JSP发布地图服务</b>
首先介绍下用于发布地图服务的ArsIMS
ArsIMS是一个由Presentation层,Business Logic层,data层组成的多层架构,另外,它还有一个用于管理地图网页发布的应用程序集.
(1)presentation 层是ArcIMS的客户端,可以获得,浏览和分析地理数据(geographic data)
(2)business logic 层的组件用于请求处理和ArcIMS的网页管理
(3)data 层包含了所有ArcIMS可用的数据源
(4)应用程序集 为business logic层Authoring, Designing,Adminisering ArcIMS Service 提供入口

business logic 层是整个ArcIMS的核心,是负责客户端和数据源交互的中间过程,包括服务启动和处理请求(request)和反应(response).
一个请求处理的过程是:
当一个包含地理数据分析的请求从客户端到达WebServer(Tomcat,IIS等)时,WebServer需要将请求传送给ArcIMS Application Server,它是一个后台执行的程序,传递请求到ArcIMS Spatial Server,并列出ArcIMS Spatial Server正在运行的服务.后者处理请求,返回一个Response,这个Response逆序传到客户端,由客户端解析
(parse)并呈现.
这个过程中由于WebServer从客户端获得的请求可能是多种语言形式的,而ArcIMS Application Server和ArcIMS Spatial Server之间的交互是通过ArcXML(an implementation of XML used with ArcIMS)来进行的.所以在WebServer和ArcIMS Application Server之间需要有一个connector作为ArcXML的翻译器,ArcIMS自带了四种可选的connector:
ArcIMS Servlet Connector ArcIMS默认的connector,HTML, Java Custom, and Java Standard 视图均可.ArcIMS自带的ArcExplorer, ArcMap, 和ArcPad也用这个connector.
ArcIMS ColdFusion Connector 不懂
ArcIMS ActiveX Connector 支持ASP
ArcIMS Java Connector 支持JSP

采用什么connector这里面除了有个选择的开发语言外,还有性能的问题(即Client Side versus Server Side Processing).
选用ArcIMS Servlet Connector,是Client Side Processing,应该就是所谓的"胖客户"吧,客户端产生直接ArcXML形式的请求,connector没有任何解析作用,只是传递ArcXML请求和回应,客户端需要解析ArcXML回应以呈现地图.
选用Java Connector,是所谓的"瘦客户",ArcXML的所有处理,包括请求和回应,都是在服务器端完成的.Jsp传递一个请求,WebServer先接受这个请求,Java Connector将这个请求翻译为ArcXML,然后传交给Application Server和ArcIMS Spatial Server.当ArcIMS Spatial Server产生回应,原路返回到 Java Connector时,Java Connector又将这个ArcXML形式的回应翻译为JSP的回应,再通过WebServer传给客户端,并动态更新JSP.

很明显使用Java Conector客户端的速度会快很多,因为地图的矢量数据比较大,所有的请求和回应都在客户端进行将影响性能.

下文讨论用JSP发布地图网页的两种形式.
使用Java框架来发布ArcIMS,需要有JavaVM,WebServer和Servlet引擎.在我的电脑上,使用的是java1.4sdk,Tomcat,Java Connector.
由于我自己对Servlet了解不深,说一点自己的见解,以期抛砖引玉.
<b>Servlet是嵌入在WebServer中的,通过一组servlet API使JavaVM和WebServer连接起来,以完成对JSP等包含JAVA语言的请求的处理.</b>所以这里的JavaVM不能使用JRE(Java Runtime Enviroment),因为它只运行java的class文件,不进行编译,而需要JDK(Java Developing Kit).
ArcIMS中自带了Java Connector,它是以.jar形式存在的,使用时应将它放在WEB-INF下的lib文件下.

Java Connector自带了一组JavaBean和一个JSP Tag 库.两者总的功能都是将JSP的请求转化成ArcXML.
这些Javabean是编写独立和可重用的组件成为可能.它们都有一系列良好封装的Set, Get方法,我们可以利用这些JavaBean和它们的方法来实现地图的各种显示功能,描画地图符号(点,线等),增加动态图层,查询相关数据,管理和鉴别服务等,我的理解是ArcGIS等地理绘图软件可以做到的功能,在这些JavaBean中均可找到相应的方法.这些JavaBean构成了ArcIMS Java Connector Object Model.
JSP Tag 库是建立在ArcIMS Java Connector Object Model上的JSP 标记的集合.这些标记提供了Object Model的接口.我们可以认为这个标记是JavaConnector中的Connector.因为它连接了JSP和JavaBean.用这种标记语言 Tag的写的JSP请求由JSP Tag 库转化成JavaBean能够识别的对象,这些JavaBean再将请求转化成ArcXML.
JSP Tag 库包含标记(Tag)的名称,属性,以及嵌套的标记(Tag).
下面给出一个使用JSP Tag 库的JSP例子,能够用JSP发布一幅地图有放大功能.

example.jsp
<%@page contentType="text/html"%>
<%@taglib uri="arcims_taglib.tld" prefix="aims" %>
<%
String theMapAction = request.getParameter("mapaction");
String x = request.getParameter("map.x");
String y = request.getParameter("map.y");

String mapMaxX =null;
String mapMaxY =null;
String mapMinX =null;
String mapMinY =null;

if (request.getParameter("maxx") != null) {
if (!request.getParameter("maxx").equalsIgnoreCase("")) {
mapMaxX = request.getParameter("maxx");
mapMaxY = request.getParameter("maxy");
mapMinX = request.getParameter("minx");
mapMinY = request.getParameter("miny");
}
}
%>

<aims:tcpConnection id="myConnection" host="localhost" port="5300" debug="true"/>
<aims:mapService id="myMapService" connectionId="<%=myConnection%>" name="NetUniversity" loadEnvelope="false" loadExtensions="false" loadRecordset="false" loadRenderer="false"/>
<aims:map id="myMap" serviceId="<%=myMapService%>" width="500" height="350" envelope="myEnvelope" >
<%
if (request.getParameter("maxx") != null) {
if (!request.getParameter("maxx").equalsIgnoreCase("")) { %>
<aims:envelope minx="<%=mapMinX%>" miny="<%=mapMinY%>" maxx=">%=mapMaxX%<" maxy="<%=mapMaxY%>" />
<%
}
}

if(theMapAction != null){
if(theMapAction.equals("zoomin")){
%>
<aims:zoom factor="2" x="<%=x%>" y="<%=y%>" />
<%
}
}
%>
</aims:map>

<html><head><title>Simple Zoom In</title></head><body>
<p align="center">
<form action="example.jsp" method="post">
<table border="1" cellpadding="5" width="500" align="center">
<tr><td align="center">
<input type="image" name="map" src="<%=myMap%>">
</td></tr>
</table>
<input type="hidden" name="mapaction" value="zoomin" >
<input type="hidden" name="maxx" value="<%=myEnvelope.getMaxX()%>">
<input type="hidden" name="maxy" value="<%=myEnvelope.getMaxY()%>">
<input type="hidden" name="minx" value="<%=myEnvelope.getMinX()%>">
<input type="hidden" name="miny" value="<%=myEnvelope.getMinY()%>">
</form>
</p>
</body>
</html>

用JSP发布地图优势是明显的,连接Oacle数据库只需写一个数据库连接的JavaBean就可以实现,也可以读取地图上Symbol的信息作为查询条件,想象的前景是美好的.

暂时先写到这里,由于库中JavaBean较多,相关方法也不清楚,也许是清楚方法不能写程序,现在非常郁闷.还请大家特别是师兄们给我指点迷津.

时间: 2024-10-10 12:50:58

关于JSP发布地图服务的相关文章

ArcGis Engine10.1发布地图服务到Arcgis Server,出现了错误,如下

问题描述 ArcGis Engine10.1发布地图服务到Arcgis Server,出现了错误,如下 服务成功发布到了Server上,但是无法启动服务,求助大牛... 代码如下: string serverName = "http://localhost:6080/arcgis/admin"; string mxdFilePath = @"D:southGisDataxyz.mxd"; string serviceName = "tiles02223&q

10 1 arcpy-arcgis 10.1,使用arcpy发布地图服务,怎么同时指定启用wms服务呢?

问题描述 arcgis 10.1,使用arcpy发布地图服务,怎么同时指定启用wms服务呢? arcgis 10.1,使用arcpy发布地图服务,怎么同时指定启用wms服务呢? 解决方案 已解决,具体见官方帮助:http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#//00s30000006q000000 解决方案二: 已解决,具体见官方帮助:http://resources.arcgis.com/zh-cn/help/main/

动态创建地图文档MXD并发布地图服务

原文:动态创建地图文档MXD并发布地图服务  1.动态创建MXD private bool CreateMxd(string MxdPath, string MxdName) { IMapDocument pMapDocument = CreateObject("esriCarto.MapDocument") as IMapDocument; if (MxdPath.Substring(MxdPath.Length - 1) != @"\") MxdPath +=

ArcGIS Server发布地图服务后,服务权限 问题

问题描述 各位大侠,本人在WindowsServer2008上安装完ArcGISServer后发布一个ManageServer服务后,服务的权限始终是锁着的,使用URL访问时,也访问不到. 解决方案

arcgis-ArcMap发布地图时,提示:00037 无法将底图图层直接发布到地图服务

问题描述 ArcMap发布地图时,提示:00037 无法将底图图层直接发布到地图服务 ArcMap发布地图时,提示:00037 无法将底图图层直接发布到地图服务. 我的地图含底图图层,帮助文档说将底图图层和业务图层分开发布,最后在聚合在一起,请问怎么聚合在一起呢,具体怎么操作?或者有别的解决方案没? ArcGIS版本10.2 解决方案 ## 求解答 求教育 求抱大腿_

A股上市的地图服务企业四维图新昨天晚间发布公告

5月22日上午消息,A股上市的地图服务企业四维图新昨天晚间发布公告,称公司控股股东中国四维已经收到国资委批复,同意 腾讯 公司收购四维图新7800万股股份. 四维图新于5月6日发布公告称,中国四维与腾讯签署<股份转让协议>,协议转让所持有的7800万股无限售条件流通股,单价为15.04元/股,股份转让总价为11.73亿元. 此次交易完成后,中国四维持有四维图新8699.4019万股股份,占总股本的12.58%:腾讯持有7800万股,占总股本的11.28%. 四维图新今天复牌即涨停,报16.92

诺基亚发布跨平台地图服务Here:支持iPhone

新浪科技讯 北京时间11月14日早间消息,诺基亚周二发布了 基于云计算的跨平台地图服务Here,在地图服务的基础上增添探索周边等地理位置服务,支持iPhone和Android手机.诺基亚CEO史蒂芬·埃洛普(Steven Elop)表示:地图和位置体验激发我们感知世界.而诺基亚正在开发更具个性化的地图,改变人们探索生活的方式.他同时表示:我们希望任何人通过任何设备都可以使用该服务,这将是全行业最好的位置平台.而开放性将是Here区别于其他地图服务的最主要不同.诺基亚宣布,将于2013年第一季度发

通过sqlview动态发布地图图层

1.SQL Views简介 Geoserver+postgresql+openlayers(leaflet)是目前主流的gis开发工具.Postgresql用于存储地图数据,geoserver用于发布地图数据,openlayers或者leaflet用于访问发布地图.正常情况下当shapefile格式的数据导入postgresql数据库中之后,我们需要通过geoserver把所有的数据发布出去,这样才能访问.常规情况下这种操作方式是没有问题的,因为地图作为基础服务,一旦发布出去是不会变化的.但是对

利用OpenStreetMap(OSM)数据搭建一个地图服务

图 利用OSM数据简单发布的北京地图服务   一.OSM是什么        开放街道图(OpenStreetMap,简称OSM)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图(wiki:http://wiki.openstreetmap.org/wiki/Main_Page).尤其值得称道的是,osm数据开源,可以自由下载使用. 二.OSM数据结构        OpenStreetMap包括空间数据以及属性数据.其中空间数据主要包括三种:点(Nodes).路(Way