• 读取Style符号库样式的方法


    以前进行符化的时候一般都是自定义Symbol,或者使用SymbologyControl进行选择,由于实际需要,我们来读取一下样式管理器中的样式。在ArcMap中打开如下:style下有很多样式类,每个类下面有各种样式。

    读取Style符号库样式的步骤如下:

    第一步,获取Style的位置,通常在ArcGIS安装目录下,有个Sytles文件夹。关于获取ArcGIS的安装路径请参考:获取ArcGIS安装路径

    第二步,新建样式管理集工具StyleGallery,并指定样式文件位置;

    第三步,遍历获取样式文件类,即样式管理器ESRI.Style下的22个类,这里我们要获取名称为"Fill Symbols";

    第四步,遍历样式文件类下名为"10% Simple hatch"样式文件,并返回为Symbol。

    第五步,符号化要素图层:将Symbol赋给SimpleRenderer的Symbol属性,将图层转为GeoFeatureLayer,将SimpleRenderer赋给GeoFeatureLayer的Renderer属性,在Map中加载显示GeoFeatureLayer。

    /// <summary>

    /// 从Style符号库获取指定的符号

    /// </summary>

    /// <param name="sServerStylePath">符号库路径</param>

    /// <param name="sGalleryClassName">样式类名称</param>

    /// <param name="symbolName">样式名称</param>

    /// <returns>Symbol</returns>

    public ISymbol GetSymbol(string sServerStylePath, string sGalleryClassName, string symbolName)

    {

    //1.加载样式文件

    ISymbol pSymbol = null;

    IStyleGallery pStyleGaller = new ServerStyleGallery();//样式管理集工具

    IStyleGalleryStorage pStyleGalleryStorage = pStyleGaller as IStyleGalleryStorage;//样式文件管理

    pStyleGalleryStorage.TargetFile = sServerStylePath;//serverStylePath为一字符串型,表示ServerStyle文件位置

     

    //2.获取样式子类

    //可通过遍历样式文件里的子类,然后找到与目标子类名称相同的样式子类即可

    IStyleGalleryClass pStyleGalleryClass = null;//样式子类对象

    for (int i = 0; i < pStyleGaller.ClassCount; i++)

    {

    pStyleGalleryClass = pStyleGaller.get_Class(i);

    if (pStyleGalleryClass.Name != sGalleryClassName)

    continue;

    IEnumStyleGalleryItem pEnumSyleGalleryItem = pStyleGaller.get_Items(sGalleryClassName, sServerStylePath, "");//获取样式子类

    pEnumSyleGalleryItem.Reset();

     

    //3.遍历pEnumSyleGalleryItem

    IStyleGalleryItem pStyleGallerItem = null;

    pStyleGallerItem = pEnumSyleGalleryItem.Next();

    while (pStyleGallerItem != null)

    {

    Console.WriteLine(pStyleGallerItem.Name);

    if (pStyleGallerItem.Name == symbolName)

    {

    //4.获取符号

    pSymbol = pStyleGallerItem.Item as ISymbol;

    break;

    }

    pStyleGallerItem = pEnumSyleGalleryItem.Next();

    }

    }

    return pSymbol;

    }

    调用:

    GetSymbol(ESRI.ArcGIS.RuntimeManager.ActiveRuntime.Path + @"\Styles\ESRI.ServerStyle", "Fill Symbols", "10% Simple hatch");

    当然,使用SymbologyControl来进行交互体验效果会更好!

    本文参考:

    http://blog.csdn.net/rrrrssss00/article/details/6167497#

    http://blog.sina.com.cn/s/blog_694deb730100nhna.html

  • 相关阅读:
    [Angualr 2] Watch for changes
    [Angular 2] Custom Validtors
    [Angular 2] The form export from NgFormControl
    [Angular 2] Validation
    [Angualr 2] Using FormBuilder
    [Angular 2] ng-control & ng-control-group
    [Angular 2] NgNonBindable
    [Ruby] LEVEL 2 Methods and Classes
    [Rails Level 2] Ground up
    [AngularJS] 5 simple ways to speed up your AngularJS application
  • 原文地址:https://www.cnblogs.com/liweis/p/4456156.html
Copyright © 2020-2023  润新知