arcgis server 9.3初步

最近开始学习arcgis server了,刚好拿到最新版本9.3 for java,所以就从它说起。

废话少说,下面是我在实际应用中做的一些总结,由于目前关于arcgis server 9.3 java edition的资料不多,所以先放到这里,也算滥竽充数了。

1.先说安装。

由于9.3不与其他版本的arcgis兼容,所以在安装前应该完全卸载所有其他版本的arcgis,包括arcgis desktop等。如果没有完全卸载,可能会无法安装arcgis server 9.3。另外,arcgis的卸载比较麻烦,如果没卸干净无法安装的话,可以去esri下一个叫93ConflictDetector.exe(Uninstall_Previous_Products_93)的清理工具来准备好环境。

 

安装完arcgis server 9.3 for java 后进行登录时,输入在post install 中创建的帐户和密码,可能无法登陆,提示: incorrect login information,无法登陆。解决办法如下:
在资源管理器中 选择“文件夹-选项”,去掉“启用简单文件共享”,再重新登陆就可以了(可能还需要重启或其他操作)。http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=3942&extra=&page=1
这是因为简单文件共享会启用特别的WINDOWS认证方式,该认证方式与AGS Server的不兼容。
http://support.microsoft.com/kb/307874/zh-cn

2.在arcgis manager中进行地图发布时,首先需要用一张地图创建一个服务service,然后才能用这个服务创建应用application。

 

3.在自己的html页面中用arcgis server里的服务来显示地图前,还需要做如下准备:

  1)要找到服务的地址:在浏览器打开http://rzf:8399/arcgis/rest/services/就可以看到当前可用的服务列表了,随
  便打开一个就可以得到其地址,例如:http://rzf:8399/arcgis/rest/services/test_1/test_1/MapServer。注意:  
  所有服务地址的最后均为MapServer,其前就是服务的名字。
  2)先在浏览器里打开这两个地址
  http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.1
  http://serverapi.arcgisonline.com/jsapi/arcgis/1.1/js/dojo/dijit/themes/tundra/tundra.css
  然后将他们作为文件分别保存到当前目录下,名字分别为default.js和tundra.css,在显示地图时将要用到这两个文件。

4.显示地图
  下面一段代码即演示如何显示地图(来自esri):
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  <html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title>巴西地图</title>
  <link rel="stylesheet" type="text/css" href="tundra.css">
  <script type="text/javascript" src="default.js"></script>
  <script type="text/javascript">
  dojo.require("esri.map");  
  function init() {
  var map = new esri.Map("map");
  var dynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer ("http://rzf:8399/arcgis/rest/services/test_1/test_1/MapServer");
  map.addLayer(dynamicMapServiceLayer);
  }
  function showExtent(extent) {
  var s = "";
  s = "XMin: "+ extent.xmin + " "
  +"YMin: " + extent.ymin + " "
  +"XMax: " + extent.xmax + " "
  +"YMax: " + extent.ymax;
  dojo.byId("info").innerHTML = s;
  }

  dojo.addOnLoad(init);
  </script>
  </head>
  <body class="tundra">
  <div id="map" style="width:100%; height:38%; border:1px solid #000;"></div>
  <div id="info" style="display:none"></div>
  </body>
</html>


5.需要注意的是,如果直接从esri网站上拷例子,很有可能是能够显示esri提供的在线地图服务,却不能打开自己本地的地图
  服务,这是因为esri上的例子在加载地图时init函数里用到的是如下代码:
  function init() {
  esriConfig.defaults.io.proxyUrl = "ProxyPage_Java/proxy.jsp"; 
  var map = new esri.Map("map");
  var layer = new esri.layers.ArcGISTiledMapServiceLaye("http://server.arcgisonline.com/ArcGIS/rest
  /services/ESRI_StreetMap_World_2D/MapServer");
  map.addLayer(layer);
  }
  这是事先将地图切分好,做了缓存的加载方式,而我们自己的地图服务有可能没有事先切分,所以需要用ArcGISDynamicMapServiceLayer来动态加载。


6.在tomcat里显示地图
  在做实际应用时,可能发生这样的情况:一个html页面如果直接在浏览器里打开的话能够正常显示地图,但是如果把它加入到tomcat工程里,
  通过url地址来访问时,却不能显示地图。一个简单的例子:
  我有一个页面:E:\soft\Tomcat 6.0\webapps\JSP_SQLServer\oper_files\html_map_test2.html,他是在tomcat工程目录下的。当我直接在浏览器里E:\soft\Tomcat 6.0\webapps\JSP_SQLServer\oper_files\html_map_test2.html能够正常显示地图,而当我启动tomcat服务,通过url地址:http://localhost:8080/JSP_SQLServer/oper_files/html_map_test2.html却无法显示。
  要解决这个问题,需要先查看esri的一篇arcgis javascript api文档:
  http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp/ags_proxy.htm#webprint
  里面提供了具体的方法,即:
  1)先到http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp/ProxyPage_Java.zip下载java版的
  proxy page,解压到当前目录。
  2)编辑其中的proxy.jsp文件,将字符串String[] serverUrls赋值为前面找到的服务的地址,里面有注释可以查看,可以有多个服务。
  3)在前面显示地图的init函数里第一句加上下面这一句:
  esriConfig.defaults.io.proxyUrl = "ProxyPage_Java/proxy.jsp"; 
  ProxyPage_Java/proxy.jsp是刚才的proxy.jsp地址,可以绝对,也可以相对。

  当你做完这些的时候,如果没问题的话,你就应该可以通过url地址来显示地图了。


  2008.8.14 


posted @ 2008-08-20 15:56    阅读(2019)  评论(0编辑  收藏  举报