1.MO连接ArcSDE
ArcSDE是空间数据引擎。支持分布访问,并发机制和事务
Dim dc As New MapObjects.DataConnection ‘连接对象,连接地图数据SDE服务
dc.Server = "SDE83:servername" ‘servername是数据服务所在服务器
dc.User ="sa"
dc.Password = "sa"
dc.Database = "instance=esri_sde;database=SDE" ‘esri_sde是数据实例,SDE是数据库名称
If dc.Connect Then
List1.Clear
For Each gs In dc.GeoDatasets ‘获取读取的每个图层名称
List1.AddItem gs.Name
Next gs
Else
MsgBox ConnectErrorMsg(dc.ConnectError), vbCritical, "Connection Error"
End If
2.获得属性
获得空间地理坐标相关的属性信息
Set l = Map1.Layers("layername") '获得the layer
Set p = Map1.ToMapPoint(x, y) ' 转换屏幕坐标到地理坐标
Set recs = l.SearchShape(p, moPointInPolygon, "") '执行查询 点信息
If Not recs.EOF Then '执行查询有结果
For Each fld In recs.Fields ' 结果存放在fields中,轮循可以获得结果
Set newItem = ListView1.ListItems.Add
newItem.Text = fld.Name ' 获得字段名称
newItem.SubItems(1) = fld.ValueAsString ' 获得字段值
Next fld
End If
3.加入图像图层
图像图层访问
Dim dc As New DataConnection
Dim dataDir As String
dataDir = ReturnDataPath("washington")
dc.Database = dataDir
If Not dc.Connect Then End
Dim iLayer As New ImageLayer ' 加入图像图层 ImageLayer
iLayer.File = dataDir & "/Wash.bmp" ' 制定图像图层文件名称
Map1.Layers.Add iLayer
Dim mLayer As New MapLayer' add MapLayer roads ' 加入矢量图层 MapLayer
Set mLayer.GeoDataset = dc.FindGeoDataset("roads") ' 制定矢量图层文件名称
mLayer.Symbol.Color = moYellow
Map1.Layers.Add mLayer
4.设置鼠标形状
Map1.MousePointer = moZoom‘放大
Map1.MousePointer = moPan‘漫游
5.图标显示
Map1.Layers.Add layer
Set layer.Renderer = reder ‘reder 是ValueMapRenderer结构存放图标信息
6.跟踪图层的操作
初始化 两个Event事件
Dim fnt As New StdFont
fnt.Name = "Wingdings"
fnt.Bold = False
Map1.TrackingLayer.Symbol(0).Style = moCircleMarker
Map1.TrackingLayer.Symbol(0).Color = moRed
Map1.TrackingLayer.Symbol(0).Size = 6
Map1.TrackingLayer.SymbolCount = 2
Map1.TrackingLayer.Symbol(0).Color = moBlue
Map1.TrackingLayer.Symbol(0).Style = moTrueTypeMarker
Map1.TrackingLayer.Symbol(0).Font = fnt
Map1.TrackingLayer.Symbol(0).Size = 16
Map1.TrackingLayer.Symbol(0).CharacterIndex = 88
Map1.TrackingLayer.Symbol(1).Color = moDarkGreen
Map1.TrackingLayer.Symbol(1).Style = moTrueTypeMarker
Map1.TrackingLayer.Symbol(1).Font = fnt
Map1.TrackingLayer.Symbol(1).Size = 16
Map1.TrackingLayer.Symbol(1).CharacterIndex = 88
增加事件
Sub AddEvent(x As Single, y As Single)
Set pt = Map1.ToMapPoint(x, y) ' convert the point to map coordinates
Map1.TrackingLayer.AddEvent pt, sym ' add a new event
End Sub
当前跟踪层中的事件个数
Map1.TrackingLayer.EventCount