以前进行符化的时候一般都是自定义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

读取Style符号库样式的方法的更多相关文章

  1. ArcEngine 9.3 学习笔记(六):图层符号化(COlorRamp,MarkerSymbol,LineSymbol,FillSymbol,TextSymbol,3DChartSymbol,使用ServerStyle符号库,FeatureRender,RasterRender)

    第四章 图层符号化 AE9.3 提供了SymbologyControl控件,用于显示ARCGIS符号库中的符号. 组件库中的组件对象分为Color(颜色),Symbol(符号),Render(渲染)三 ...

  2. ArcGIS 10.1 中的style和serverstyle及制作方法

    图层的符号都是随机的,动态变化的,所以不利于图层的美观.还有一点就是符号有增加电子地图可读性的功能. Desktop的符号文件 把要用的符号用desktop的style manage制作相应符号,并把 ...

  3. style设置/获取样式的问题 和 offsetWidth/offsetHeight的问题

    style设置/获取样式的问题:1.js通过style方法    --加样式:加的是行间样式 oDiv.style.width="20"+'px';    --取样式:取得是行间样 ...

  4. JQuery中操作Css样式的方法

    JQuery中操作Css样式的方法//1.获取和设置样式 $("#tow").attr("class")获取ID为tow的class属性 $("#tw ...

  5. ACEXML解析XML文件——我是如何学习并在短时间内掌握一个库的使用方法的

    最近做的C++项目中需要使用xml文件保存一些信息,程序启动时会读取这些信息.最终经过主程的评测,决定使用ACEXML库来读取解析XML文件. 好吧,至于为什么选择ACEXML库,我就不说了.既然选择 ...

  6. 关于设置SQLPLUS提示符样式的方法----登陆配置文件,动态加载提示符

    工作中用到 sqlplus mdsoss/mdsoss, 所以来了解一下sqlplus (C shell .cshrc文件里中alisa) 关于设置SQLPLUS提示符样式的方法 12638阅读 1评 ...

  7. python计算文件的行数和读取某一行内容的实现方法

    一.计算文件的行数 最简单的办法是把文件读入一个大的列表中,然后统计列表的长度.如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了:count = len(op ...

  8. javascript中获取非行间样式的方法

    我们都知道一般在javascript中获取样式一般用的是nodeObj.style.attr这个属性的,但是这个属性只能获取行间样式非行间样式比如写在样式表中的样式那么用nodeObj.style.a ...

  9. js中style.display=""无效的解决方法

    本文实例讲述了js中style.display=""无效的解决方法.分享给大家供大家参考.具体解决方法如下: 一.问题描述: 在js中我们有时想动态的控制一个div显示或隐藏或更多 ...

随机推荐

  1. bzoj 3211 线段树

    开方操作最多进行5次就可以把出现的任何数变成1. 所以用线段树暴力修改,以后修改时只需看一下是否当前区间都是0或1,如果是那么就直接返回. /***************************** ...

  2. bzoj 2300 动态维护上凸壳(不支持删除)

    新技能GET. 用set保存点,然后只需要找前趋和后继就可以动态维护了. /************************************************************** ...

  3. 推荐C#网站、书籍、资源

    推荐博客: 极简的随笔 http://www.cnblogs.com/guwei4037/p/3499135.html 见证大牛成长之路的专栏 http://blog.csdn.net/shanyon ...

  4. 快速重启 Quick Boot plus

    Quick Boot(快速启动)可方便快速地重启/关闭您的设备,或将您的设备重启到恢复/引导模式,增强版还实现了热启动和Tasker/Locale插件集成功能.快速重启汉化版 Quick Boot p ...

  5. MYSQL 源代码学习

    http://ourmysql.com/ http://blog.chinaunix.net/uid-26896862-id-4009777.html

  6. BTA 常问的 Java基础40道常见面试题及详细答案

    原文:http://www.ymq.io/2018/03/10/java/ 八种基本数据类型的大小,以及他们的封装类 引用数据类型 Switch能否用string做参数 equals与==的区别 自动 ...

  7. 详解Linux中CentOS6.8下解压安装mysql-5.7.14

    原文:http://blog.csdn.net/yangle4695/article/details/52185859 mysql下载地址:http://dev.mysql.com/downloads ...

  8. C语言内存分析

    C语言内存分析 一.进制 概念:进制是一种计数方式,是数值的表现形式 4种主要的进制: ①. 十进制:0~9 ②. 二进制:0和1 ③. 八进制:0~7 ④. 十六进制:0~9+a b c d e f ...

  9. 学习Android Studio里的Gradle

    一直听说Gradle很强大,只是偶尔用Android Studio创建Demo的时候看到他一次,今天抽个时间完整记录一下. 1.gradle位置 Android Studio项目创建好之后,默认有3个 ...

  10. 学习node js 之微信公众帐号接口开发 准备工作之三

    app.js文件介绍,因为也是初学,以下的内容是个人的理解,有些不正确的地方请评论中指证:以注解的形式说明. //依赖组件[模块]导入 var express = require('express') ...