ArcGIS Server Java -- 动态添加图层
2010-01-18 11:28
441 查看
如果使用的资源类型是com.esri.adf.web.ags.data.AGSLocalMapResource,就可以在该资源上动态添加新的图层,图层数据可以来自不同的地方,比如本地的shapefile、file geodatabase或者SDE,也可以来自WMS等web服务。本文以本地的file geodatabase为例,为AGSLocalMapResource动态添加一个新的图层。
首先,要得到地图的IMap接口才能对地图的图层进行操作。
[/code]
动态添加图层的代码为map.addLayer(fLayer);它接收的参数是实现了ILayer接口的对象。因此,接下来我们需要把file geodatabase里的feature class组装成一个ILayer对象。
[/code]
[/code]
[/code]
Server Object状态改变后,需要重新得到serverInfo,并且设置MapFunctionality里面的LayerDescription,把新的layer加入进去。这里我们就不手工添加,而是直接把整个MapDescription设置一遍,如上代码所示。
把此代码放在一个tool或者command中运行即可。
参考:ArcGIS Server如何动态添加图层并进行查询
Server Java讲座--动态添加图层数据
首先,要得到地图的IMap接口才能对地图的图层进行操作。
[code] // 得到本地MapResource
AGSLocalMapResource res = (AGSLocalMapResource)context.getResources().get("agsws1");
//得到targetMap
MapServer mapServer = res.getLocalMapServer();
IMap map = mapServer.getMap(mapServer.getDefaultMapName());
//TODO:得到fLayer
//添加图层至map
map.addLayer(fLayer);
[/code]
动态添加图层的代码为map.addLayer(fLayer);它接收的参数是实现了ILayer接口的对象。因此,接下来我们需要把file geodatabase里的feature class组装成一个ILayer对象。
[code] //Server中的AO对象,必须在一个IServerContext上下文中使用
IServerContext sc = res.getServerContext();
//得到FeatureWorkspace
IWorkspaceFactory wsf = (IWorkspaceFactory) sc.createObject(FileGDBWorkspaceFactory.getClsid());
IFeatureWorkspace fws=(IFeatureWorkspace)wsf.openFromFile("E:\\temp\\data\\test.gdb",0);
//得到待添加图层
IFeatureClass fc=fws.openFeatureClass("world30");
IFeatureLayer fLayer=(IFeatureLayer)sc.createObject(FeatureLayer.getClsid());
fLayer.setFeatureClassByRef(fc);
[/code]
[code] //给图层设置渲染
IMapDocument doc = (IMapDocument)sc.createObject(MapDocument.getClsid());
doc.open("E:\\temp\\data\\world30_1.lyr", null);
ILayer lyr = doc.getLayer(0, 0);//get the first map's first layer
IFeatureRenderer renderer = null;
if(lyr instanceof IGeoFeatureLayer){
IGeoFeatureLayer geoLyr = (IGeoFeatureLayer)lyr;
renderer = geoLyr.getRenderer();
}
if (renderer != null) {
IGeoFeatureLayer geoFeatureLyr = (IGeoFeatureLayer) fLayer;
geoFeatureLyr.setRendererByRef(renderer);
}
fLayer.setVisible(true);
[/code]
[code] //刷新服务器对象
mapServer.refreshServerObjects();
//从地图资源中得到MapServerPort
MapServerPort mapServerPort = res.getMapServer();
MapServerInfo serverInfo = mapServerPort.getServerInfo(mapServerPort.getDefaultMapName());
//从地图资源中得到AGSMapFunctionality
AGSMapFunctionality mapfunction = (AGSMapFunctionality) res.getFunctionalities().get("map");
mapfunction.getMapServerInfo().setDefaultMapDescription(serverInfo.getDefaultMapDescription());
mapfunction.setMapDescription(serverInfo.getDefaultMapDescription());
context.refresh();
[/code]
Server Object状态改变后,需要重新得到serverInfo,并且设置MapFunctionality里面的LayerDescription,把新的layer加入进去。这里我们就不手工添加,而是直接把整个MapDescription设置一遍,如上代码所示。
把此代码放在一个tool或者command中运行即可。
参考:ArcGIS Server如何动态添加图层并进行查询
Server Java讲座--动态添加图层数据
相关文章推荐
- 【转】ArcGIS Server 10.1 动态图层—添加栅格
- 【转】ArcGIS Server如何动态添加图层并进行查询
- adf for dotnet中动态给ArcGis Server服务添加图层
- arcgis server 10.1 发布动态图层展示海量及频繁更新的数据步骤
- Java:动态数组添加数据的方法及代码
- ArcGISServer10.1添加动态图层
- 【转】ArcGIS Server 10.1 动态图层—更改风格
- arcengine C#关于动态添加图层
- Android 动态添加Spinner(.java文件内实现) 实现 改变spinner 内文字属性
- java动态添加对象&&异常链
- java JTable中动态添加、增加一行数据
- 利用Java代码给gridLayout动态添加button按钮
- Java--图片中动态添加文字
- arcgis server 9.2代码阅读笔记二:在页面上动态加载图层
- android动态添加图层
- java 动态代理(模式) InvocationHandler(为类中方法执行前或后添加内容)
- Java动态生成类以及动态添加属性
- 海量图层管理的新希望——ArcGIS Server 动态图层服务
- arcgis server 9.2代码阅读笔记二:在页面上动态加载图层
- intellij idea 添加动态 user library(java.lang.VerifyError)