连接ArcGIS Server服务器,连接Map Service服务,列出其中图层名。

讲过了如何搭建开发环境,我们来 构建第一个项目,当然前提是已发布了一个Map Service。我们将连接 ArcGIS Server服务器,连接Map Service服务,列出其中图层名。
1. 建立一个eclipse的java project;

2. 将\Program Files\ArcGIS\java\lib\arcobjects.jar添加到项目的Libraries;
3. 输入如下代码:
[Copy to clipboard] [ - ]CODE:
/**************************************************************
*例程:连接ArcGIS Server服务器,连接Map Service服务,列出其中图层名
*************************************************************
*/

package com.brsc;

import java.io.IOException;
import java.net.UnknownHostException;

import com.esri.arcgis.carto.
*;
import com.esri.arcgis.interop.AutomationException;
import com.esri.arcgis.server.
*;
import com.esri.arcgis.system.
*;

public class MyServer {

   
public static void main(String[] args) {
       
// 1。初始化服务器
com.esri.arcgis.system.EngineInitializer.InitializeEngine();
new ServerInitializer().initializeServer("california","administrator","server");
       
//2。定义上下文
       IServerContext cxt=null;
       
try {
          
//3。建立连接
          ServerConnection conn= new ServerConnection();
          conn.connect(
"california");
          
//4。得到SOM
          IServerObjectManager som =conn.getServerObjectManager();
          
//5。创建上下文
          cxt=som.createServerContext("coal12""MapServer");
          
//6.得到coal12中的地图服务
          MapServer mapserver=(MapServer)cxt.getServerObject();
          
//
          IMap maps=mapserver.getMap("");
          
int layercount=maps.getLayerCount();
          
for(int i=0;i<layercount;i++){
              ILayer ilayer
=maps.getLayer(i);
              
//if(){}
              
//FeatureLayer layer=(FeatureLayer)maps.getLayer(i);
              System.out.println("Layer name is "+ilayer.getName());
          }

          
//
int fc=
mapserver.queryFeatureCount(mapserver.getDefaultMapName(), 
1null);
          System.
out.println("count is "+fc);
          System.
out.println("name is "+mapserver.getDefaultMapName());
       }
 catch (UnknownHostException e) {
          
// TODO Auto-generated catch block
          e.printStackTrace();
       }
 catch (IOException e) {
          
// TODO Auto-generated catch block
          e.printStackTrace();
       }
finally{
          
try {
              cxt.releaseContext();
          }
 catch (AutomationException e) {
              e.printStackTrace();
          }
 catch (IOException e) {
              e.printStackTrace();
          }
          
       }

   }

}

1.解释:
1>   首先要初始化环境,初始化Engine 和 Server
com.esri.arcgis.system.EngineInitializer
com.esri.arcgis.system.ServerInitializer
EngineInitializer用静态函数static void InitializeEngine()
ServerInitializer用
void InitializeServer(”domainName”,”userName”,”password”)
由于AO是基于COM技术的,首先是需要初始化COM环境

2>   建立和Server的连接,com.esri.arcgis.server.ServerConnection

ServerConnection connection = new ServerConnection();
connection.connect(”serverName”);

3>   得到Server Object Manager(SOM),
com.esri.arcgis.server.ServerObjectManager

IServerObjectManager som =
connection. getServerObjectManager();
1,2,3步,可以理解为先初始化环境,再连接Server,再连接 Server中的SOM服务
   
4>   创建上下文,
IServerContext context =
som.createServerContext("serviceName", "MapServer/其他");
Server Context是为在服务器上运行的对象保留的一份空间,GIS Server对象也运行在这里,开发中AO对象的创建、运行也在这里。

5>   创建 MapServer对象 ,

MapServer mapserver=(MapServer)cxt.getServerObject();

MapServer是粗粒度的Server Object(服务器对象),提供对地图文件的访问,并提供查询与画出地图的方法(函数)。Map Web Control 就用于显示一个 MapServer对象;MapServer coclass实现了用于Display的接口:IMapServer 与 IMapServerLayout;也实现了用于Query ArcGIS map document (mxd,pmf)的接口:IMapServer 与 IMapServerData ;

6>   列出地图名称
posted @ 2007-07-17 14:27  四两  阅读(1880)  评论(2编辑  收藏  举报
加油,哥们,现在开始!