ArcGIS Server专题图的实现
来源:互联网 发布:网络执法官安卓手机版 编辑:程序博客网 时间:2024/04/28 06:31
近日研究了在ArcGIS Server web adf (9.2)专题图实现,整理如下: (以柱状图为例,饼状图和直方图类似),希望对大家有所帮助
//得到制作专题图的图层ID
。。。。。。。。。。
int layerID=3;
//得到专题图分析元素的属性名称列表
String[] fieldName=new String[2];
fieldName[0]="POP1990";
fieldName[1]="POP1999";
//得到专题图分析的图层对象(FeatureLayer)
AGSLocalMapResource res = (AGSLocalMapResource) this.webContext
.getResources().get("ags0");
MapServer mapServer = res.getLocalMapServer();
ILayer fiLayer = mapServer.getLayer(mapServer.getMapName(0), layerID);
FeatureLayer fLayer = (FeatureLayer) fiLayer;
//创建ChartRenderer对象 注意:在web adf中创建AO对象用AGSLocalMapResource对象的createArcObject(String)方法
ChartRenderer chartRender = (ChartRenderer) res
.createArcObject(ChartRenderer.getClsid());
//在IRendererFileds中指定柱状图各列显示字段值
IRendererFields rendererFields = chartRender;
rendererFields.addField(fieldName[0], null);
rendererFields.setFieldAlias(0, rendererFields.getField(0));
rendererFields.addFieldfieldName[1], null);
rendererFields.setFieldAlias(1, rendererFields.getField(1));
//查出各元素指定属性最大值 必须的
QueryFilter queryFilter = (QueryFilter) res
.createArcObject(QueryFilter.getClsid());
queryFilter.addField(fieldName[0]);
queryFilter.addField(fieldName[1]);
ICursor cursor = fLayer.ITable_search(queryFilter, true);
int numFields = 2; //柱状图列的个数
int[] fieldIndecies = new int[numFields];
fieldIndecies[0] = fLayer.findField(fieldName[0]);
fieldIndecies[1] = fLayer.findField(fieldName[1]);
double maxValue = 0;
boolean firstValue = true;
IRowBuffer row = cursor.nextRow();
while (row != null) {
String fieldvalue = "";
for (int fieldIndex = 0; fieldIndex < numFields; fieldIndex++) {
double fieldValue = Double.parseDouble(row.getValue(
fieldIndecies[fieldIndex]).toString());
if (firstValue) {
maxValue = fieldValue;
firstValue = false;
}
if (fieldValue > maxValue)
maxValue = fieldValue;
}
row = cursor.nextRow();
}
//实例化图表对象
BarChartSymbol barChartSymbol = (BarChartSymbol) res.createArcObject(BarChartSymbol.getClsid());
IChartSymbol chartSymbol = barChartSymbol;
barChartSymbol.setWidth(10);
IMarkerSymbol markerSymbol = barChartSymbol;
chartSymbol.setMaxValue(maxValue);
markerSymbol.setSize(60);
//设置柱状图每列填充颜色及线颜色
ISymbolArray symbolArray = barChartSymbol;
SimpleFillSymbol fillSymbol1 = (SimpleFillSymbol) res.createArcObject(SimpleFillSymbol.getClsid());
IRgbColor rgbColor1 = (RgbColor) res.createArcObject(RgbColor .getClsid());
rgbColor1.setRed(255);
rgbColor1.setGreen(0);
rgbColor1.setBlue(0);
rgbColor1.setUseWindowsDithering(true);
ILineSymbol ilinesym1 = (ILineSymbol) res.createArcObject(SimpleLineSymbol.getClsid());
ilinesym1.setColor(rgbColor1);
ilinesym1.setWidth(1);
fillSymbol1.setOutline(ilinesym1);
fillSymbol1.setColor(rgbColor1);
barChartSymbol.addSymbol(fillSymbol1);
SimpleFillSymbol fillSymbol2 = (SimpleFillSymbol) res .createArcObject(SimpleFillSymbol.getClsid());
IRgbColor rgbColor2 = (RgbColor) res.createArcObject(RgbColor .getClsid());
rgbColor2.setRed(238);
rgbColor2.setGreen(195);
rgbColor2.setBlue(235);
rgbColor2.setUseWindowsDithering(true);
ILineSymbol ilinesym2 = (ILineSymbol) res.createArcObject(SimpleLineSymbol.getClsid());
ilinesym2.setColor(rgbColor2);
ilinesym2.setWidth(1);
fillSymbol2.setOutline(ilinesym2);
fillSymbol2.setColor(rgbColor2);
barChartSymbol.addSymbol(fillSymbol2);
chartRender.setChartSymbolByRef(chartSymbol);
chartRender.setUseOverposter(false);
//设置FeatureRenderer ChartRenderer对象
fLayer.setRendererByRef(chartRender);
//刷新地图显示图表
map1.refresh();
this.webContext.refresh();
。。。。。。。。。。
int layerID=3;
//得到专题图分析元素的属性名称列表
String[] fieldName=new String[2];
fieldName[0]="POP1990";
fieldName[1]="POP1999";
//得到专题图分析的图层对象(FeatureLayer)
AGSLocalMapResource res = (AGSLocalMapResource) this.webContext
.getResources().get("ags0");
MapServer mapServer = res.getLocalMapServer();
ILayer fiLayer = mapServer.getLayer(mapServer.getMapName(0), layerID);
FeatureLayer fLayer = (FeatureLayer) fiLayer;
//创建ChartRenderer对象 注意:在web adf中创建AO对象用AGSLocalMapResource对象的createArcObject(String)方法
ChartRenderer chartRender = (ChartRenderer) res
.createArcObject(ChartRenderer.getClsid());
//在IRendererFileds中指定柱状图各列显示字段值
IRendererFields rendererFields = chartRender;
rendererFields.addField(fieldName[0], null);
rendererFields.setFieldAlias(0, rendererFields.getField(0));
rendererFields.addFieldfieldName[1], null);
rendererFields.setFieldAlias(1, rendererFields.getField(1));
//查出各元素指定属性最大值 必须的
QueryFilter queryFilter = (QueryFilter) res
.createArcObject(QueryFilter.getClsid());
queryFilter.addField(fieldName[0]);
queryFilter.addField(fieldName[1]);
ICursor cursor = fLayer.ITable_search(queryFilter, true);
int numFields = 2; //柱状图列的个数
int[] fieldIndecies = new int[numFields];
fieldIndecies[0] = fLayer.findField(fieldName[0]);
fieldIndecies[1] = fLayer.findField(fieldName[1]);
double maxValue = 0;
boolean firstValue = true;
IRowBuffer row = cursor.nextRow();
while (row != null) {
String fieldvalue = "";
for (int fieldIndex = 0; fieldIndex < numFields; fieldIndex++) {
double fieldValue = Double.parseDouble(row.getValue(
fieldIndecies[fieldIndex]).toString());
if (firstValue) {
maxValue = fieldValue;
firstValue = false;
}
if (fieldValue > maxValue)
maxValue = fieldValue;
}
row = cursor.nextRow();
}
//实例化图表对象
BarChartSymbol barChartSymbol = (BarChartSymbol) res.createArcObject(BarChartSymbol.getClsid());
IChartSymbol chartSymbol = barChartSymbol;
barChartSymbol.setWidth(10);
IMarkerSymbol markerSymbol = barChartSymbol;
chartSymbol.setMaxValue(maxValue);
markerSymbol.setSize(60);
//设置柱状图每列填充颜色及线颜色
ISymbolArray symbolArray = barChartSymbol;
SimpleFillSymbol fillSymbol1 = (SimpleFillSymbol) res.createArcObject(SimpleFillSymbol.getClsid());
IRgbColor rgbColor1 = (RgbColor) res.createArcObject(RgbColor .getClsid());
rgbColor1.setRed(255);
rgbColor1.setGreen(0);
rgbColor1.setBlue(0);
rgbColor1.setUseWindowsDithering(true);
ILineSymbol ilinesym1 = (ILineSymbol) res.createArcObject(SimpleLineSymbol.getClsid());
ilinesym1.setColor(rgbColor1);
ilinesym1.setWidth(1);
fillSymbol1.setOutline(ilinesym1);
fillSymbol1.setColor(rgbColor1);
barChartSymbol.addSymbol(fillSymbol1);
SimpleFillSymbol fillSymbol2 = (SimpleFillSymbol) res .createArcObject(SimpleFillSymbol.getClsid());
IRgbColor rgbColor2 = (RgbColor) res.createArcObject(RgbColor .getClsid());
rgbColor2.setRed(238);
rgbColor2.setGreen(195);
rgbColor2.setBlue(235);
rgbColor2.setUseWindowsDithering(true);
ILineSymbol ilinesym2 = (ILineSymbol) res.createArcObject(SimpleLineSymbol.getClsid());
ilinesym2.setColor(rgbColor2);
ilinesym2.setWidth(1);
fillSymbol2.setOutline(ilinesym2);
fillSymbol2.setColor(rgbColor2);
barChartSymbol.addSymbol(fillSymbol2);
chartRender.setChartSymbolByRef(chartSymbol);
chartRender.setUseOverposter(false);
//设置FeatureRenderer ChartRenderer对象
fLayer.setRendererByRef(chartRender);
//刷新地图显示图表
map1.refresh();
this.webContext.refresh();
到此完成柱状专题图实现
转载说明:
作者:cat
原创作品网址:http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=7613(需是ESRI中国社区注册用户才能打开连接地址)
- ArcGIS Server专题图的实现
- ArcGIS Server 专题图开发(柱状图实现实例)
- ArcGIS Server专题图部分渲染
- ArcGIS Server专题图部分渲染
- ArcGIS 3D的专题
- ArcGIS Engine9.3的分级着色法制作专题图
- ArcGIS.Server.9.3和ArcGIS API for Flex实现Identify的功能图查属性(六)
- ArcGIS Server的切图原理
- 合并 ArcGIS Server 的切图缓存
- ArcGIS Server的切图原理深入
- ArcGIS Server的切图原理深入
- ArcGIS Server的切图原理深入
- ArcGIS Server的切图原理深入
- ArcGIS Server的切图原理深入
- ArcGIS Server 9.2实现基于web浏览器的在线编辑
- 基于ArcGIS Server对ShapeFile文件的编辑功能实现
- ArcGIS Server 实现ArcMap的Graduated symbols功能 (分级渲染)
- ArcGIS Server中缓冲区分析的实现(点)
- 解决登录不了ArcGISServerManager的问题
- 制作一个简单的WPF图片浏览器
- 创建表 并添加字段!
- 使用__cplusplus实现C/C++互调
- 软件架构的过程
- ArcGIS Server专题图的实现
- asp.net 域名查詢
- 进行软件架构设计的益处
- Python完全新手教程
- 用python开发windows程序
- Excel 文件二进制结构分析
- 第九作坊的游戏开发方式:面向实时处理的方法简介
- django入门大全
- 自定义轻量级的HTTP WebServer (WEB服务器)