用ArcEngine9.3开发GIS应用程序图层符号化解决方案
在看这篇文章之前大家首先有个观念用ArcEngine开发C/S应用程序时,一个成熟的GIS项目在加载数据这方面是不允许直接把SDE里边的数据以MXD的形式组织起来这是不科学的,原因如下:
1.从数据安全性考虑
一个MXD文档包含了SDE数据库里与MXD数据的详细信息,通常对于数据拥有者来说是不希望外部能够获取这些信息的。
2.从系统灵活性考虑
通过程序动态加载所需同层,动态符号化相关图层能够为程序带来很大的灵活性。
习惯直接在MapControl上Load MXD File的就会有疑问,不通过MXD怎么展现图层的符号化。接下来我将从两种途径给大家介绍一下如果动态符号化图层:
使用ArcEngine开发C/S应用程序数据加载一个重要的功能模块,在数据加载模块符号图层是其技术核心之一:
1.通过系统符号化配置表存储图层符号化信息符号化图层。
首先在关系型数据库中创建一个图层符号化配置表详细记录每一个图层的符号化信息:
如下表(我只列出简单符号化的配置表设计,至于唯一值等大家可以自己根据需求设计):
图层ID
|
符号化类型
|
符号库ID
|
符号名称
|
|
点图层1
|
简单符号化
|
1
|
火车站
|
|
线图层1
|
简单符号化
|
2
|
铁路线
|
|
面图层1
|
简单符号化
|
3
|
绿色面
|
|
然后使用ArcEngine提供的每种符号化类型的接口对图层进行符号化渲染。
2.通过ArcEngine9.3提供的Represatation存储符号化
Representation是ArcGIS9.3的新特性,能够通过Representation制作更精美,更复杂的地图操作过程,下图是ArcGIS Desktop中Representation工具条。
通过一下操作可以把通过Representation工具条制作出来的地图效果存储在要素类中(只能是Geodatabase类型的)。
从以上可以看出每一个要素的符号化信息都以Blob方式存储在相对应的数据表中,这样就不需要通过配置表的设置进行动态符号化,直接通过Engine中提供的与Representation相关的接口和类符号化每一个图层。
综上是我总结的用ArcEngine进行C /S项目开发时有关图层符号化的解决方案。