用VB和MapX实现各种专题图的示例代码
Private Function GetThemeLayerName() As String
'获得专题图层名称
Dim strLayerName As String
Dim nIndex As Integer
nIndex = Combo2.ListIndex
If nIndex < 0 Then
strLayerName = ""
Else
strLayerName = Combo2.List(nIndex)
End If
GetThemeLayerName = strLayerName
End Function
Private Sub Command5_Click()
'创建专题图层
Dim oDs As MapXLib.Dataset
Dim oLayer As MapXLib.Layer
Dim oTheme As MapXLib.Theme
Dim oFields As New MapXLib.Fields
Dim oField As MapXLib.Field
Dim oCoordSys As MapXLib.CoordSys
Dim strLayerName As String
Dim nType As Integer
Dim s As Integer
'改变投影系
Set oCoordSys = Map1.DisplayCoordSys.Clone
SetCoordsys
'设置专题图层
strLayerName = GetThemeLayerName()
If strLayerName = "" Then
MsgBox "请选择绑定图层"
Exit Sub
End If
'设置专题绑定数据集
Set oLayer = Map1.Layers.Item(strLayerName)
Map1.DataSets.RemoveAll
Set oDs = Map1.DataSets.Add(miDataSetLayer, oLayer, oLayer.KeyField)
'获得专题图类型
nType = GetThemeType
If nType = -1 Or nType = 9 Then
MsgBox "请选择专题类型"
Exit Sub
End If
'设置专题图
oFields.RemoveAll
Set oField = oFields.Add(oDs.Fields.Item(2), "data1"
oDs.Themes.RemoveAll
If nType = 1 Or nType = 2 Then
oFields.Add oDs.Fields.Item(3), "data2"
Set oTheme = oDs.Themes.Add(nType, oFields)
ElseIf nType = 9 Then
'Set oTheme = oDs.Themes.Add(nType)
Else
Set oTheme = oDs.Themes.Add(nType, oField)
End If
'还原投影系
Set Map1.DisplayCoordSys = oCoordSys
'Set Map1.NumericCoordSys = oCoordSys
Set Map1.NumericCoordSys = Map1.DisplayCoordSys
End Sub
Sub SetCoordsys()
'设置投影系
Dim oDatum As New MapXLib.Datum
oDatum.Set 0, 0, 0, 0, 0, 0, 0, 0, 0
Map1.DisplayCoordSys.Set miLongLat, oDatum, miUnitDegree
Set Map1.NumericCoordSys = Map1.DisplayCoordSys
End Sub
Private Function GetThemeType() As Integer
'获得专题图类型
Dim nType As Integer, nIndex As Integer
nIndex = Combo1.ListIndex
Select Case nIndex
Case 0 '范围图
nType = 0
Case 1 '柱状图
nType = 1
Case 2 '饼状图
nType = 2
Case 3 '等级符号图
nType = 3
Case 4 '点密度图
nType = 4
Case 5 '独立值图
nType = 5
Case 6 '自动专题图
nType = 6
Case 7 '标注范围专题图
nType = 7
Case 8 '标注独立值专题图
nType = 8
Case 9 '非专题图
nType = 9
Case Else '提示用户选择专题类型
nType = -1
End Select
GetThemeType = nType
End Function
Private Sub Form_Load()
Dim i As Integer, nLayerCount As Integer
'加载专题图类型
Combo1.AddItem "范围图", 0
Combo1.AddItem "柱状图", 1
Combo1.AddItem "饼状图", 2
Combo1.AddItem "等级符号图", 3
Combo1.AddItem "点密度图", 4
Combo1.AddItem "独立值图", 5
Combo1.AddItem "自动专题图", 6
Combo1.AddItem "标注范围专题图", 7
Combo1.AddItem "标注独立值专题图", 8
Combo1.AddItem "非专题图", 9
'加载图层列表
If Map1.Layers.Count > 0 Then
nLayerCount = Map1.Layers.Count
For i = 1 To nLayerCount
Combo2.AddItem Map1.Layers.Item(i).Name, i - 1
Next
End If
End Sub
最新文章
- 教你利用Google Earth API自动化谷 [03-08]
- ArcGIS Engine实现添加图名比例尺指 [03-03]
- Google Earth客户端 基于Servlet的 [06-04]
- ArcObjects 3D开发简介 ArcScene构 [03-25]
- ArcIMS二次开发介绍 ArcMap服务 Ar [04-24]
- GIS的开发模式以及分析比较 宿主型 [04-24]
- 如何进行ArcIMS的二次开发 基于IMS [04-24]
- 什么是组件式GIS及组件式GIS开发平 [04-02]
- 地理信息系统软件开发OpenSource的 [03-31]
- SuperMap IS Java ——基于Java EE [03-30]
推荐文章


热点文章
用VC读取DXF格式文件的原理及代码
GIS二次开发各种方式对比和Activ
ArcEngine中使用上下左右键移动地
C#中调用MapX方法实例及代码剖析
矢量地图缩放、旋转、平移操作的
MapX在VC++中实现军用标图系统的
MapX应用程序发布和打包过程及注
ARC命令说用说明及详细讲解
MapX教程及基本编程应用实例
如何在MapObject下把ActiveX控件
MapX教程之数据库绑定方法过程及
用C#根据经纬度求两点间距离的函
基于.NET平台的MapX开发方法及实
MapInfo
基于MapX的GIS系统动态操作原理及
用VB和MapX实现各种专题图的示例
如何在VB下用MapObject实现流场显
MapX如何在图层上添加一个点的代
用VB实现MapX移屏测距功能原理及
AO的Display对象简介及应用代码实
VC下用MapX实现任何比例尺打印功
MapX开发疑问之坐标问题讲解
组件开发之MapXtreme for window
MapX图层样式替换的VB源代码
在VC++中嵌入MapX集成二次开发的
教你利用Google Earth API自动化
ArcGIS Engine实现添加图名比例尺
Google Earth客户端 基于Servlet
ArcObjects 3D开发简介 ArcScene
ArcIMS二次开发介绍 ArcMap服务

