连接ArcGIS Server服务器,连接Map Service服务,列出其中图层名。
讲过了如何搭建开发环境,我们来 构建第一个项目,当然前提是已发布了一个Map Service。我们将连接 ArcGIS Server服务器,连接Map Service服务,列出其中图层名。
1. 建立一个eclipse的java project;
2. 将\Program Files\ArcGIS\java\lib\arcobjects.jar添加到项目的Libraries;
3. 输入如下代码:
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> 列出地图名称
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(), 1, null);
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();
}
}
}
}
/**************************************************************
*例程:连接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(), 1, null);
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> 列出地图名称
加油,哥们,现在开始!