zoukankan      html  css  js  c++  java
  • 读取符号库文件

    /// <summary>
    /// 导入符号
    /// </summary>
    /// <param name="serverStylePath">符号库文件路径</param>
    public static void ImportSymbols(string serverStylePath)
    {
    if (string.IsNullOrEmpty(serverStylePath) || !File.Exists(serverStylePath))
    {
    return;
    }

    int iIndexPoint = serverStylePath.LastIndexOf('\');
    string strName = serverStylePath.Substring(iIndexPoint + 1);
    int imageIndex = 1;
    try
    {
    IStyleGallery pStyleGallery = new ServerStyleGalleryClass();
    SymbologyControlClass pSymbologyControlClass = new SymbologyControlClass();
    IStyleGalleryStorage pStyleGalleryStorage = pStyleGallery as IStyleGalleryStorage;
    pStyleGalleryStorage.AddFile(serverStylePath);
    pStyleGalleryStorage.TargetFile = serverStylePath;
    pStyleGallery.ImportStyle(serverStylePath);
    ISymbologyStyleClass pSymbologyStyleClass = null;
    for (int j = 0; j < pStyleGallery.ClassCount; j++)
    {
    IEnumStyleGalleryItem enumItems = null;
    try
    {
    IStyleGalleryClass styleGalleryClass = pStyleGallery.Class[j];
    enumItems = pStyleGallery.Items[styleGalleryClass.Name, "", ""];
    pSymbologyStyleClass = pSymbologyControlClass.GetStyleClass(SymbolOperate.GetTypeName(styleGalleryClass.Name));
    if (enumItems == null) continue;
    enumItems.Reset();
    IStyleGalleryItem pStyleItem = enumItems.Next();
    List<IRow> symbloList = new List<IRow>();
    while (pStyleItem != null)
    {
    IPersistStream pPersistStream = pStyleItem as IPersistStream;
    IMemoryBlobStream pBlobStream = new MemoryBlobStreamClass();
    pPersistStream.Save(pBlobStream, 0);
    IMemoryBlobStreamVariant mbsv = (IMemoryBlobStreamVariant)pBlobStream;
    object obj;
    mbsv.ExportToVariant(out obj);
    stdole.IPictureDisp picture = pSymbologyStyleClass.PreviewItem(pStyleItem, PictureWidth, PictureHeight);

    Image pImage = AxHostConverter.GetImageFromDispPicture(picture);
    SymbolLibraryRow pRow = new SymbolLibraryRow();
    pRow.SetValue(SymbolLibraryRow.FIELD_SYMBOLNAME, strName);
    pRow.SetValue(SymbolLibraryRow.FIELD_SYMBOLCLASS, styleGalleryClass.Name);
    pRow.SymbolStyle = obj as byte[];
    pRow.SymbolID = pStyleItem.ID;
    pRow.Image = SymbolOperate.GetByteByImage(pImage);
    pRow.SymbolItemName = pStyleItem.Name;
    pRow.SymbolItemCategory = pStyleItem.Category;
    symbloList.Add(pRow);
    pStyleItem = enumItems.Next();
    imageIndex++;
    if (imageIndex % 20 == 0)
    {
    GC.Collect();
    System.Windows.Forms.Application.DoEvents();
    }
    }
    SymbolLibraryTable.symbolLibraryTable.Save(symbloList);
    }
    catch
    {

    }
    finally
    {
    ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(enumItems);
    }

    }
    pStyleGallery.Clear();
    }
    catch
    {

    }
    }

  • 相关阅读:
    go微服务框架kratos学习笔记十(熔断器)
    go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)
    go微服务框架kratos学习笔记八 (kratos的依赖注入)
    go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer)
    编译原理之语法分析-自下而上分析(四)
    编译原理之语法分析-自下而上分析(三)
    编译原理之语法分析-自下而上分析(二)
    编译原理之语法分析-自下而上分析(一)
    TreeSet的两种实现方法:Comparable和Comparator(Java比较器)
    JavaWeb学习之JSP(三) EL表达式
  • 原文地址:https://www.cnblogs.com/lzh5d/p/7001563.html
Copyright © 2011-2022 走看看