public void exportLegend(IServerContext serverContext, IMapServer pMapServer ){
try
{
IMapServerObjects mapServerObjects = (IMapServerObjects)pMapServer;
IMap map = (IMap)mapServerObjects.getMap(pMapServer.getDefaultMapName());
UID uid = (UID)serverContext.createObject("esriSystem.UID");
uid.setValue("esriCarto.Legend");
ILegend legend1 = (ILegend) map.createMapSurround(uid, null );
legend1.setTitle("图例");
for(int i=0; i<legend1.getItemCount();i++){
ILegendItem lItem = legend1.getItem(i);
ILayer layer = lItem.getLayer();
//过滤掉标注点图层
if(layer.getName().indexOf("标注点")>-1){
legend1.removeItem(i);
}
}
//获取该地图的layout对象
IMapServerLayout layout = (IMapServerLayout)pMapServer;
//设置图片类型
IImageType it = (IImageType)serverContext.createObject("esriCarto.ImageType");
it.setFormat(esriImageFormat.esriImagePNG32) ;
it.setReturnType(esriImageReturnType.esriImageReturnURL);
//设置图片显示大小
IImageDisplay idisp = (IImageDisplay)serverContext.createObject("esriCarto.ImageDisplay");
idisp.setHeight(1000);
idisp.setWidth(400);
idisp.setDeviceResolution(150);//DPI 每个英寸上所能印刷的网点数(Dot Per Inch)。
//设置图片显示大小
IImageDisplay idisp1 = (IImageDisplay)serverContext.createObject("esriCarto.ImageDisplay");
idisp1.setHeight(0);
idisp1.setWidth(0);
idisp1.setDeviceResolution(150);//DPI 每个英寸上所能印刷的网点数(Dot Per Inch)
//图片描述
IImageDescription pID = (IImageDescription)serverContext.createObject("esriCarto.ImageDescription");
pID.setDisplay(idisp1);
pID.setType(it);
//设置图例
ILegend legend = (ILegend)serverContext.createObject("esriCarto.Legend");
for(int i=0; i<legend.getItemCount();i++){
ILegendItem lItem = legend.getItem(i);
ILayer layer = lItem.getLayer();
System.out.println(layer.getName());
}
legend.setTitle("图例") ;
IMapServerInfo pMapServerInfo = pMapServer.getServerInfo(pMapServer.getDefaultMapName());
IMapDescription pMD = pMapServerInfo.getDefaultMapDescription();
/* IMapLayerInfos mapLayerInfos = pMapServerInfo.getMapLayerInfos();
for(int j=0; j<mapLayerInfos.getCount();j++){
IMapLayerInfo layerInfo = mapLayerInfos.getElement(j);
System.out.println(layerInfo.getName());
System.out.println("---------------------------------");
}*/
IImageResult img = layout.exportLegend(legend1, pMD, idisp, null, pID);
//释放ServerContext
serverContext = null;
System.out.println(img.getURL());
}catch (AutomationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
- **页面布局控制**:使用`PageLayoutControl`对象进行地图的布局设计,包括添加图例、比例尺等元素。 - **图层控制**:利用`TOCControl`对象对图层进行管理和操作,如添加、删除图层等。 - **工具栏控制**:自定义...
实现标准化地图制图,需要考虑地图设计的要素和规则,比如符号化、色彩使用、图例、比例尺、投影方式等,同时也要符合相关的国家标准和行业规范。 在实现标准化地图制图的过程中,ArcObjects组件式扩展方法展现了...
开发者可以利用Map和MapDocument类来加载地图文档,控制图层的可见性,调整比例尺,以及添加图例和比例尺等地图元素。C#的事件驱动编程模型使得响应用户交互变得更加简单。 3. **空间分析**:ArcObjects提供了丰富...
5. **地图的组成**:地图不仅仅包含数据,还包括图层、比例尺、方向、图例等元素。开发者将学习如何创建和管理这些元素,以及如何控制它们在地图上的显示。 6. **空间数据的符号化**:符号化是将数据可视化的关键...
本文将介绍如何利用AO接口(ArcObjects)来导出地图服务的图例。 首先,我们需要连接到ArcGIS Server。在示例代码中,使用`ESRI.ArcGIS.Server.GISServerConnectionClass`类创建一个服务器连接,并连接到...
PageLayoutControl控件用于布局和设计地图打印页面,可以预览和编辑地图布局元素,如比例尺、图例、注记等。 #### 3.3 TOCControl控件 TOCControl控件用于管理图层的显示和属性,类似于ArcMap中的“Table of ...
- **PageLayoutControl**:用于创建地图布局,包含图例、比例尺等元素。 - **IApplication** 和 **IMap** 接口:提供对ArcGIS Desktop应用程序和地图对象的访问。 - **ILayer** 和 **IFeatureLayer**:表示地图上的...
它可以用来设计打印地图的布局,包括地图、图例、比例尺和指北针等元素。 ##### 3.3 TOCCONTROL组件 TOCControl组件用于管理图层的组织结构。通过该组件,可以实现图层的排序、分组和过滤等功能。 ##### 3.4 ...
首先,我们需要了解ArcGIS的开发环境,通常我们会使用ArcObjects SDK,这是一个强大的组件库,包含了各种用于地图处理和分析的接口和类。通过这些接口,我们可以创建自定义的GIS应用,实现对地图的高级操作。 1. **...
PageLayoutControl提供了丰富的页面布局编辑功能,如添加标题、图例等。 ##### 3.3 TOCControl控件 - **3.3.1 TOCControl概述** TOCControl(Table Of Contents Control)控件用于显示地图的图层目录,可以方便...
10. **数据可视化**:研究如何自定义地图的显示,包括颜色方案、比例尺、图例、注记等。 在压缩包中的"5-1"文件可能是源代码、示例程序或者相关资源,它将帮助我们实践上述理论知识,通过实际编码来巩固理解和提升...