<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
    主站蜘蛛池模板: 亚洲成a人一区二区三区| 99在线视频免费观看视频 | 久久亚洲精品高潮综合色a片| 黄+色+性+人免费| 精品亚洲成A人无码成A在线观看 | 国产亚洲精品自在线观看| caoporn成人免费公开| 中国亚洲女人69内射少妇| 波霸在线精品视频免费观看| 亚洲精品无码专区久久久| 33333在线亚洲| 色播在线永久免费视频| 亚洲欧美日韩中文字幕一区二区三区 | 韩国二级毛片免费播放| 亚洲色www永久网站| 永久在线毛片免费观看| 亚洲Aⅴ在线无码播放毛片一线天| 日本免费一二区在线电影| 无码 免费 国产在线观看91| 国产成人亚洲综合无码| 99re免费在线视频| 亚洲综合无码一区二区痴汉| 国产成人免费手机在线观看视频| 日韩大片在线永久免费观看网站 | 亚洲欧美日韩久久精品| 国产一精品一aⅴ一免费| 国产男女爽爽爽免费视频 | 亚洲日本在线电影| 亚洲人午夜射精精品日韩| 日韩精品在线免费观看| 亚洲五月综合缴情婷婷| 五月天婷亚洲天综合网精品偷| 久久不见久久见免费影院www日本| 亚洲精品高清视频| 日本高清免费aaaaa大片视频| 精品久久久久久无码免费| 亚洲伊人色一综合网| 亚洲人成国产精品无码| 亚洲免费视频播放| 又黄又大的激情视频在线观看免费视频社区在线 | 亚洲综合视频在线|