惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
Latest news
Latest news
N
News | PayPal Newsroom
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AI
AI
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
T
Threat Research - Cisco Blogs
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Exploit Database - CXSecurity.com
NISL@THU
NISL@THU
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Securelist
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
Cisco Talos Blog
Cisco Talos Blog
云风的 BLOG
云风的 BLOG
AWS News Blog
AWS News Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
美团技术团队
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
S
Schneier on Security
博客园 - 聂微东
V2EX - 技术
V2EX - 技术
T
Troy Hunt's Blog
SecWiki News
SecWiki News
S
Secure Thoughts
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
腾讯CDC
H
Heimdal Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed

博客园 - 所言非虚

未来谁才是移动互联网的入口? [Oracle]Sqlplus连接成功,但pl/sql连接不成功,提示“ora-12145:无法解析指定的连接标识符” Windows待机、休眠、睡眠的区别以及程序运行策略 [Worldwind]worldwind源码编译 windows server 2008 x64下oracle 10gR2的安装方法 [长期]常见问题收集 最佳编程字体推荐 GDAL问题收集 向量点积与叉积的定义及应用 空间平面法向量求法 【解决】加载图片"内存不足"问题 【原创】随鼠标移动显示地图经纬度 - 所言非虚 - 博客园 【原创】客户端添加兴趣点,并随地图变化而变化 - 所言非虚 - 博客园 FireFox与IE的兼容 【转】兼容IE和FireFox的鼠标滚轮事件 DIV的精确定位 - 所言非虚 - 博客园 ArcGIS Server开发的一些小经验 ArcSDE C API在.NET中的调用 - 所言非虚 [译]ArcGIS Server Map Service Cache的组织结构
【原创】利用ESRI自带的符号库进行符号化
所言非虚 · 2008-04-26 · via 博客园 - 所言非虚

ArcGIS中自带有丰富的符号库,在ArcGIS Server中使用符号库的符号进行符号化思路如下:
  1.首先要知道符号库中的符号分为哪些种类,才能在进行符号化时对应不同类型图层进行相应的符号化;
  2.其次要知道符号库中有那些符号,才能知道要用哪个符号进行符号化;
  3.知道了符号的名称后,获取符号;
  4.利用这个符号进行符号化。


步骤1

Dim mapserver As AGSServer = New AGSServer()
mapserver.InitializeVar(_Map)
Dim soc As ESRI.ArcGIS.Server.ServerContext = mapserver.GetSOC()
'------------------------------------------------------
Dim _StyleGallery As IStyleGallery = Nothing
'------------------------------------------------------

If _StyleGallery Is Nothing Then
     _StyleGallery = CType(soc.CreateObject ("esriDisplay.ServerStyleGallery"), ESRI.ArcGIS.Display.ServerStyleGallery) 'New ServerStyleGallery()
End If

'定义Style文件
'********************************************************
    'IstyleGaleryStorage.DefaultStylePath将返回Style文件的缺省目录。
    'IstyleGalleryStorage.TargetFile属性允许程序员新建一个Style文件作为添加、删除和更新样式条目的目标文件。
    '********************************************************
    Dim _StyleStor As IStyleGalleryStorage = _StyleGallery          'IStyleGalleryStorage对象是用于管理IStyleGallery对象的
    '定义Style文件的默认路径
    Dim _ServerStylePath = _StyleStor.DefaultStylePath & "ESRI.ServerStyle"     'IStyleGalleryStorage:efaultStylePath下存储的是默认的Style文件夹路径
    _StyleStor.TargetFile = _ServerStylePath            '此处指定目标文件

    Dim SGClass As IStyleGalleryClass = Nothing
     Dim count As Integer = _StyleGallery.ClassCount
     Dim styleclassNames(count) As String
     For i As Integer = 0 To count - 1
        SGClass = _StyleGallery.Class(i)
        styleclassNames(i) = SGClass.Name
     Next

这样,所有StyleGalleryClass的名称都获取到了,具体有以下种类:

 1 Reference Systems,
 2 Maplex Labels,
 3 Shadows,
 4 Area Patches,
 5 Line Patches,
 6 Labels,
 7 Representation Markers,
 8 North Arrows,
 9 Scale Bars,
10 Legend Items,
11 Scale Texts,
12 Color Ramps,
13 Borders,Backgrounds,
14 Colors,
15 Vectorization Settings,
16 Fill Symbols,
17 Line Symbols,
18 Marker Symbols,
19 Text Symbols,
20 Representation Rules,
21 Hatches

常用的有:Marker Symbols    Line Symbols     Fill Symbols      Borders等


步骤2

 1          Dim mapserver As AGSServer = New AGSServer()
 2 
 3             mapserver.InitializeVar(_Map)
 4 
 5             Dim soc As ESRI.ArcGIS.Server.ServerContext = mapserver.GetSOC()
 6             '------------------------------------------------------
 7             Dim _StyleGallery As IStyleGallery = Nothing
 8             '------------------------------------------------------
 9 
10 
11             If _StyleGallery Is Nothing Then
12 
13                 _StyleGallery = CType(soc.CreateObject("esriDisplay.ServerStyleGallery"), ESRI.ArcGIS.Display.ServerStyleGallery) 'New ServerStyleGallery()
14 
15             End If
16 
17             '定义Style文件
18             '********************************************************
19             'IstyleGaleryStorage.DefaultStylePath将返回Style文件的缺省目录。
20             'IstyleGalleryStorage.TargetFile属性允许程序员新建一个Style文件作为添加、删除和更新样式条目的目标文件。
21             '********************************************************
22 
23             Dim _StyleStor As IStyleGalleryStorage = _StyleGallery          'IStyleGalleryStorage对象是用于管理IStyleGallery对象的
24 
25             '定义Style文件的默认路径
26             Dim _ServerStylePath = _StyleStor.DefaultStylePath & "ESRI.ServerStyle"     'IStyleGalleryStorage:efaultStylePath下存储的是默认的Style文件夹路径
27             _StyleStor.TargetFile = _ServerStylePath            '此处指定目标文件
28 
29            '将游标重设在开始位置
30             _EnumStyleGallery.Reset()
31 
32             Try
33                 '返回第一个IStyleGalleryItem
34                 Dim _StyleGalleryItem As IStyleGalleryItem = _EnumStyleGallery.Next()
35 
36                 While Not _StyleGalleryItem Is Nothing
37                   '获取所有的符号名,可以绑定到DropDownList让用户选择
38                     _StyleGalleryItem.Name
39 
40                         Exit Function
41                     End If
42 
43                     _StyleGalleryItem = _EnumStyleGallery.Next()
44 
45                 End While
46 
47             Catch ex As Exception
48 
49             Finally
50                 '释放COM对象
51                 System.Runtime.InteropServices.Marshal.ReleaseComObject(_EnumStyleGallery)
52             End Try

步骤3
获取ISymbol对象
在步骤2的过程中,获取到了IStyleGalleryItem 对象
Dim symbol as ISymbol=_StyleGalleryItem.Item


步骤4

 1            Dim mapserver As AGSServer = New AGSServer()
 2 
 3             mapserver.InitializeVar(Map)
 4 
 5             Dim soc As ESRI.ArcGIS.Server.ServerContext = mapserver.GetSOC()
 6 
 7             Dim CatoMap As ESRI.ArcGIS.Carto.IMap = mapserver.GetMap()
 8 
 9             Dim layers As ESRI.ArcGIS.Carto.IEnumLayer = CatoMap.Layers
10 
11             layers.Reset()
12 
13             Dim layer As ESRI.ArcGIS.Carto.ILayer = layers.Next()
14 
15             While Not layer Is Nothing
16 
17                 If layer.Name = LayerName Then
18                     Exit While
19                 End If
20                 layer = layers.Next()
21 
22             End While
23 
24             Dim geoFeatLayer As ESRI.ArcGIS.Carto.IGeoFeatureLayer = CType(layer, ESRI.ArcGIS.Carto.IGeoFeatureLayer)
25 
26             Dim pSimRen As ESRI.ArcGIS.Carto.ISimpleRenderer = CType(soc.CreateObject("esriCarto.SimpleRenderer"), ESRI.ArcGIS.Carto.ISimpleRenderer)
27 
28 
29 
30             Dim pFLayer As ESRI.ArcGIS.Carto.IFeatureLayer = layer
31             Dim pFClass As ESRI.ArcGIS.Geodatabase.IFeatureClass = pFLayer.FeatureClass
32 
33             Select Case pFClass.ShapeType
34 
35                 Case esriGeometryType.esriGeometryPoint
36 
37                     symbol = LoadSymbol(_StyleClassNames(0), SymbolName)
38 
39                     Exit Select
40                 Case esriGeometryType.esriGeometryPolyline
41                     '线和面的与点的相同
42                 Case esriGeometryType.esriGeometryPolygon
43 
44 
45             End Select
46             pSimRen.Symbol = symbol
47             geoFeatLayer.Renderer = pSimRen
48 
49             Map.Refresh()
50 
51             soc.ReleaseContext()

这里是以点为例,线面的类似

符号化.jpg

 1 using System;
 2 using System.Data;
 3 using System.Configuration;
 4 using System.Web;
 5 using System.Web.Security;
 6 using System.Web.UI;
 7 using System.Web.UI.WebControls;
 8 using System.Web.UI.WebControls.WebParts;
 9 using System.Web.UI.HtmlControls;
10 
11 
12 using ESRI.ArcGIS.ADF.Web.UI.WebControls;
13 using ESRI.ArcGIS.Server.WebControls;
14 
15 using ESRI.ArcGIS.ADF.Web;
16 using ESRI.ArcGIS.ADF;
17 
18 using ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer;
19 using ESRI.ArcGIS.ADF.Web.DataSources.Graphics;
20 using ESRI.ArcGIS.ADF.Web.DataSources;
21 
22 using ESRI.ArcGIS.Geometry;
23 using ESRI.ArcGIS.Server;
24 using ESRI.ArcGIS.Geodatabase;
25 using ESRI.ArcGIS.Carto;
26 using ESRI.ArcGIS.ADF.Connection;
27 using ESRI.ArcGIS.Display;
28 
29 
30 
31 /// <summary>
32 /// AGSBase 的摘要说明
33 /// </summary>
34 public class AGSServer
35 {
36     private IMapServer m_pMapServer;
37     private IMap m_pMap;
38     private IServerContext m_pSOC;
39     private ESRI.ArcGIS.ADF.ArcGISServer.MapDescription m_MapDes;
40     private IMapFunctionality m_pMapFunc;
41 
42 
43     public AGSServer(){
44         //构造函数
45         m_pMapServer = null;
46         m_pMap = null;
47         m_pSOC = null;
48         m_MapDes = null;
49        
50 }
51 
52     public void InitializeVar(ESRI.ArcGIS.ADF.Web.UI.WebControls.Map mapCtrl)
53     {
54         m_pMapFunc = mapCtrl.GetFunctionality(0);
55         MapResourceLocal mapResLocal = m_pMapFunc.Resource as MapResourceLocal;
56 
57         m_pSOC = mapResLocal.ServerContextInfo.ServerContext;
58         m_pMapServer = m_pSOC.ServerObject as IMapServer;
59         IMapServerObjects pMapServerObjs = m_pMapServer as IMapServerObjects;
60         m_pMap = pMapServerObjs.get_Map(m_pMapServer.DefaultMapName);
61 
62         m_MapDes = mapResLocal.MapDescription;
63 
64         return;
65     }
66 
67     public IMapFunctionality GetMapFunctionality()
68     {
69         return m_pMapFunc;
70     }
71 
72     public IMap GetMap()
73     {
74         return m_pMap;
75     }
76 
77     public IMapServer GetMapServer()
78     {
79 
80         return m_pMapServer;       
81         
82     }
83 
84 
85     public ESRI.ArcGIS.ADF.ArcGISServer.MapDescription GetMapDescription()
86     {
87 
88         return m_MapDes;
89     }
90 
91     public IServerContext GetSOC()
92     {
93 
94         return m_pSOC;
95         
96     }
97 
98     
99 }