zoukankan      html  css  js  c++  java
  • 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="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 


  • 相关阅读:
    【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
    【unity3d游戏开发之疑难杂症】Unity3d工程如何与MonoDevelop工具进行调试
    【unity3d游戏开发之疑难杂症】解决Unity3d脚本支持中文问题
    cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
    xcode连不上ipad的原因
    【unity3d游戏开发之疑难杂症】Error while importing package: Couldn't decompress package
    AS3 event flow 事件冒泡机制 以及 stopImmediatePropagation() stopPropagation()用法
    【unity3d游戏开发之基础篇】利用射线实现鼠标控制角色转向和移动(角色移动一)
    Asp.net Session认识加强Session究竟是如何存储你知道吗?
    Windows 7下VS2008无法调试2.0.50727.4952版本mscorlib.dll的解决办法
  • 原文地址:https://www.cnblogs.com/chutianyao/p/1272321.html
Copyright © 2011-2022 走看看