• 读取符号库文件


    /// <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
    {

    }
    }

  • 相关阅读:
    java中的subList
    值传递和引用传递
    java程序中有异常处理和没有异常处理的区别
    正则表达式
    poj 3187 三角数问题
    poj 2718 切数问题 穷竭搜索
    ACM 广度优化搜索算法总结
    poj 3669 火星撞地球问题 bfs算法
    poj 2251 三维地图最短路径问题 bfs算法
    ACM 深度优化搜索算法小总结
  • 原文地址:https://www.cnblogs.com/lzh5d/p/7001563.html
Copyright © 2020-2023  润新知