<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    內蒙古java團隊

    j2se,j2ee開發組
    posts - 139, comments - 212, trackbacks - 0, articles - 65
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    ArcEngine 渲染的使用

    Posted on 2007-03-08 16:46 帥子 閱讀(3413) 評論(1)  編輯  收藏 所屬分類: j2se技術專區
    ArcEngine 渲染的使用

    1.Feature的基本渲染方法
    ?Feature的常用的繪制方法包括:
    ? 1.簡單繪制
    ? 2.唯一值繪制/多字段唯一值繪制
    ? 3.點密度/多字段點密度繪制
    ? 4.數據分級繪制
    ? 5.質量圖(餅圖/直方圖)
    ? 6.按比例尺渲染
    ? 7.比例符號渲染
    ?
    ? 1.簡單渲染
    ? 簡單渲染是ArcEngine的默認渲染,我們打開一個FeatureClass,建立一個FeatureLayer的時候,
    如果沒有給FeatureLayer設置Renderer那么使用的就是簡單渲染。簡單渲染對整個圖層中的所有Feature
    使用同一種方式顯示。
    簡單渲染在ArcEngine中用ISimpleRenderer來表示。
    ?ISimpleRenderer的使用方式如下:
    ?//假設layer是一個IFeatureLayer,獲取IGeoFeatureLayer
    ? IGeoFeatureLayer geoLayer=layer as IGeoFeatureLayer;
    ? //構造SimpleRenderer
    ? ISimpleRenderer renderer=new SimpleRendererClass();
    ? renderer.description="簡單的渲染一下";
    ? renderer.Label="符號的標簽";
    ? //假設sym是一個和該圖層中Geometry類型對應的符號;
    ? renderer.Symbol=sym;
    ? //為圖層設置渲染,注意需要刷新該圖層。
    ? geoLayer.Renderer=renderer;
    ? 2.獨立值/多字段獨立值渲染
    ? 獨立值/多字段獨立值渲染,根據Feature的某一個字段的數據或某幾個字段的組合結果來確定符號。
    ? 具有相同值或相同組合值的Feature,使用一樣的符號。在使用多個字段的使用,每個字段的取值之間
    ? 使用分割符來連接。字段的取值順序和在Renderer中設置的一樣。
    ? 基本使用方式如下:
    ? //假設layer是一個IFeatureLayer,獲取IGeoFeatureLayer
    ? IGeoFeatureLayer geoLayer=layer as IGeoFeatureLayer;
    ? //構造一個UniqueValueRenderer
    ? IUniqueValueRenderer renderer=new UniqueValueRendererClass();
    ? //假設使用兩個字段來渲染
    ? renderer.FieldCount=2;
    ? //假設YSLX字段表示要素類型
    ? //假設YSYT字段表示要數用途
    ? renderer.set_Field(0,"YSLX");
    ? renderer.set_Field(1,"YSYT");
    ? //字段之間使用 | 來連接(默認取值)
    ? renderer.FieldDelimiter="|";
    ? //設置默認符號
    ? renderer.DefaultSymbol=defaultSymbol;
    ? renderer.DefaultLabel="默認Label";
    ? //添加值
    ? renderer.addValue("房屋|民居","民居房屋",MJSymbol);
    ? renderer.addValue("房屋|商業用地","商業用地",SYSymbol);
    ? ...
    ? //還可以通過set_Symbol,set_Heading、set_Value來修改上述設置。
    ? geoLayer.Renderer=renderer.
    ? 3.點密度/多字段點密度
    ? 點密度圖通過在Feature的圖形上打點來表示數據的數多,點越密集表示數據量越大。
    ? 還可以使用多字段的點密度圖。這個使用同一個Feature上就可以顯示幾種不同的點。
    ? 注意點密度圖有一個特殊的地方:
    ??? 點密度圖使用的符號是面狀符號。而其中有需要包括點狀符號。
    ??? 接口使用如下:
    ??? ?IDotDensityRenderer renderer=new DotDensityRendererClass ();
    ???IRendererFields flds=(IRendererFields)renderer;
    ???flds.AddField("MJ ","面積");
    ???flds.AddField("RK","人口");
    ???IDotDensityFillSymbol ddSym=new DotDensityFillSymbolClass();
    ???ISymbolArray symArray=(ISymbolArray)ddSym;
    ???symArray.AddSymbol(mjSymbol);
    ???symArray.AddSymbol(rkSymbol);
    ???ddSym.Outline =(ILineSymbol)outlineSymbol ;???
    ???ddSym.DotSize =10 ;
    ???ddSym.FixedPlacement=true;???
    ???
    ???renderer.DotDensitySymbol =ddSym;
    ???renderer.DotValue=20 ;
    ???renderer.MaintainSize=this.m_dotdensityParam .MaintainSize ;
    ???IGeoFeatureLayer geoLayer=(IGeoFeatureLayer)layer ;
    ???geoLayer.Renderer =(IFeatureRenderer)renderer;
    ?4.數據分級繪制(使用IClassBreaksRenderer)
    ?5.餅圖/直方圖(使用IChartRenderer)
    ?6.按比例尺渲染(使IScaleDependentRenderer)
    ?7.比例符號渲染(使用 IProportionalSymbolRenderer )
    2.圖例的使用
    ? 圖例的使用通過ILegendInfo接口。每個Renderer都實現了該接口,但是有時候該實現不好用,
    ? 所以也可以自己實現該接口。實現過程是比較簡單的。
    3.渲染層次
    ? 使用ILevelRender 接口。該接口可以指定一 當前的Level(-1)表示繪制全部。
    ? 然后 提供一個符號數組 ,注意每個符號要指定Level .如果不指定就默認為0。

    4.透明度控制
    ? 透明度控制使用 ITransparencyRenderer 接口。該接口允許指定一個字段,字段取值用來表示透明度
    ? 注意 透明度的取值在0--100之間。
    5.數據正規化
    ? 數據正規化用 IDataNormalization 接口來表示。該接口提供了幾種正規化表示方法。
    6.部分渲染
    ? 部分渲染通過使用IDataExclusion? 來實現。該接口允許提供過濾語句來過濾掉不需要渲染的Feature。
    ? 同時也可以給他們制定特殊的符號。同時控制是否顯示
    7.旋轉控制
    ? 旋轉控制通過使用IRotationRenderer 接口來表示。該接口要求提供旋轉角度的字段。同時要求提供旋轉的
    ? 方法。
    8.數據樣本
    ?IDataSampling? 沒有使用過。
    9.外表關聯
    ?ITable dispTable=((IDisplayTable)feaLayer).DisplayTable ;//圖層
    ?ITable attTable;//外表
    ?IMemoryRelationshipClassFactory fac=new MemoryRelationshipClassFactoryClass ();
    ?IRelationshipClass relClass=fac.Open("JZMJ",(IObjectClass)dispTable,"ZDDJH",
    ???IObjectClass)attTable,"G03",
    ???"Forward","Backward",
    ???esriRelCardinality.esriRelCardinalityOneToOne);
    ?IDisplayRelationshipClass dispRelClass=feaLayer as IDisplayRelationshipClass ;
    ?dispRelClass.DisplayRelationshipClass(relClass,esriJoinType.esriLeftInnerJoin);
    10.統計分析
    ?? ITableHistogram? tableHistogram=new BasicTableHistogramClass ();
    ? tableHistogram.Table =((IDisplayTable)layer).DisplayTable? ;
    ? tableHistogram.Field =fieldName ;
    ? object valueArray=null, freq=null;
    ? IBasicHistogram basicHistogram=(IBasicHistogram)tableHistogram;
    ? basicHistogram.GetHistogram(out valueArray,out freq);
    ? IClassify classify=null;
    ???int breakNum=6;
    ???//分類方法
    ???switch(ClassifyMethod )
    ???{
    ????case ClassifyMethodName.lsClassifyMethodEqualInterval:
    ????{
    ?????
    ??????EqualIntervalClass? eq=new EqualIntervalClass ();
    ??????eq.Classify (valueArray,freq,ref breakNum);
    ??????classify=(IClassify)eq;
    ?????
    ?????break;
    ????}
    ????case ClassifyMethodName.lsClassifyMethodStandardDeviation:
    ????{
    ?????
    ??????StandardDeviationClass sd=new StandardDeviationClass ();
    ??????IStatisticsResults stat= histogram as IStatisticsResults ;
    ??????classify=sd as IClassify;
    ??????classify.SetHistogramData (valueArray,freq);
    ??????IDeviationInterval di=sd as IDeviationInterval ;
    ??????di.DeviationInterval=1;
    ??????di.Mean=stat.Mean;
    ??????di.StandardDev=stat.StandardDeviation;
    ??????classify.Classify (ref breakNum);
    ?????
    ?????break;
    ????}
    ????case ClassifyMethodName.lsClassifyMethodQuantile:
    ????{
    ?????
    ??????Quantile qc=new QuantileClass ();
    ??????qc.Classify (valueArray,freq,ref breakNum);
    ??????classify=qc as IClassify ;
    ?????
    ?????break;
    ????}
    ????case ClassifyMethodName.lsClassifyMethodNaturalBreaks:
    ????{
    ?????
    ??????NaturalBreaksClass nb=new NaturalBreaksClass ();
    ??????nb.Classify (valueArray,freq,ref breakNum);
    ??????classify=nb as IClassify ;
    ?????
    ?????break;
    ????}
    ????case ClassifyMethodName.lsClassifyMethodDefinedInterval:
    ????{
    ?????DefinedIntervalClass di=new DefinedIntervalClass ();
    ?????di.IntervalRange =this.m_classBreaksParam .Interval ;
    ?????di.Classify (valueArray,freq,ref breakNum);
    ?????classify=di as IClassify ;
    ?????break;
    ????}
    ????default:
    ????{
    ????
    ?????EqualIntervalClass? eq=new EqualIntervalClass ();
    ?????eq.Classify (valueArray,freq,ref breakNum);
    ?????classify=(IClassify)eq;
    ?????break;
    ????
    ????}
    ???}???
    ???object o=classify.ClassBreaks ;
    ???System.Array breakArray= o as System.Array;
    ???現在breakArray中就是統計后的數據了。


    評論

    # re: ArcEngine 渲染的使用  回復  更多評論   

    2009-02-22 18:44 by zdp5528
    你好,我不知道你在ITable轉化IObjectClass的時候是否報錯,我這是報錯了,能不能交流一下 QQ:56098148
    主站蜘蛛池模板: 精品国产免费观看久久久| 亚洲AV电影院在线观看| 国产偷国产偷亚洲清高动态图| 亚洲熟女少妇一区二区| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 九九精品免费视频| 亚洲AV成人潮喷综合网| 亚洲精品自在线拍| 日本免费精品一区二区三区| ww4545四虎永久免费地址| 国产亚洲美女精品久久久| 亚洲一区二区免费视频| 黄页免费在线观看| 亚洲熟伦熟女新五十路熟妇| 亚洲国产成人超福利久久精品 | 亚洲黄色网址在线观看| 一个人看的免费高清视频日本| 日本视频在线观看永久免费| 免费国产精品视频| 亚洲乱码卡一卡二卡三| 久久久久成人精品免费播放动漫| 亚洲AV无码不卡在线观看下载| 亚洲免费在线视频观看| 国产人成免费视频网站| 久久亚洲国产精品| 成全高清在线观看免费| 亚洲熟妇av一区二区三区| 理论片在线观看免费| 四虎永久免费影院| 成人福利在线观看免费视频| 免费高清在线影片一区| 亚洲午夜成人精品无码色欲| 成熟女人牲交片免费观看视频| 亚洲已满18点击进入在线观看| 中文字幕影片免费在线观看 | 亚洲国产精品日韩在线观看| 美丽的姑娘免费观看在线播放| 亚洲综合视频在线| 好男人www免费高清视频在线| 久久精品国产亚洲av麻豆蜜芽| 无码一区二区三区AV免费|