第一题:GIS二次开发能实现那些功能?
符号化显示全要素地图
对图层的的管理和操作
支持地图放大,缩小漫游等各种操作
可以对地图进行标注
可以实现几何参数查询,空间定位查询等功能
空间分析功能
空间数据库访问功能
地图打印功能
GPS导航功能
第二题,MO做专题地图有哪几种?
标注渲染,按值渲染,点密度渲染,分类渲染,图表渲染,z值渲染,组渲染
建立缓冲区查找缓冲区的城市代码:
Dim dc As New MapObjects2.DataConnection '定义一个数据连接对象
Dim lyr As New MapObjects2.MapLayer '定义一个数据图层对象
Dim fname As String
Dim fnames() As String Dim rectline As MapObjects2.Recordset Dim resutstate As MapObjects2.Recordset
Dim resultshape As MapObjects2.Polygon
Dim flag As Integer
Dim fname2 As String
Dim max As Integer
Dim flagitem As Integer
Dim intersetj As MapObjects2.Polygon
定义了一个字符数组
'定义一个数据集对象
'
Dim k As MapObjects2.Polygon
Dim setflash(100) As MapObjects2.Polygon '足条件的记录,用于后面的闪烁
Dim freset(100) As String '记录满足条件的记录州名
Dim jilu As Integer '统计满足条件的记录个数
Private Sub Combo1_Click()
fname2 = Combo1.Text '在组合框的单机事件中完成的任务为:
For i = 0 To max '用户选中组合框中的图层名,通过循环使其与fnames(i)保存的
If fnames(i) = fname2 Then '图层名进行对比查找,如果找到就将图层索引保存到flagitem中
flagitem = max - i '通过变量flagitem将地图
索
引
传
给
函
数
Map1.Layers(flagitem).SearchByDistance(p,
Map1.ToMapDistance(100), \"\")
Exit For '目的是在用户选择的图层中找到用户选中的图形
End If
Next i
End Sub
Private Sub Command1_Click() '该过程用于像MAP1控件中加载图层
On Error GoTo out
dlg.Filter = \"*.shp|*.shp|*.dbf|*.dbf\" '为通用对话框设置过滤器
dlg.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer '使对话框可以多选
dlg.ShowOpen '显示文件打开对话框
dlg.InitDir = CurDir '将当前选择的驱动器路径赋值给对话框当前路径
dc.Database = dlg.InitDir '数据连接对象与文件的数据建立连接
If Not dc.Connect Then Exit Sub
fname = dlg.FileName
fnames() = Split(fname, Chr(0)) 行分离得到数据文件名
max = UBound(fnames()) 的上限
If max > 0 Then
For i = 1 To max
Set lyr.GeoDataset = dc.FindGeoDataset(fnames(i))
Map1.Layers.Add lyr
Combo1.AddItem lyr.Name 载到组合框中
Set lyr = Nothing
将所得到的路径进 '找到字符数组 '将图层名加 '
Next i
ElseIf max = 0 Then
fname = dlg.FileTitle
Set lyr.GeoDataset = dc.FindGeoDataset(fname)
Combo1.AddItem lyr.Name
Map1.Layers.Add lyr
Set lyr = Nothing
End If
out:
End Sub
Private Sub Command2_Click() 立缓冲区,并通过Map1.TrackingLayer.Refresh True触发
On Error GoTo out Map1_AfterTrackingLayerDraw(ByVal hDC As stdole.OLE_HANDLE)
'该过程用于建 '
Dim obselect As Object '并把缓冲区画出来
Set object1 = rectline.Fields(\"shape\").Value '通过记录集返回图形对象
Set resultshape = object1.Buffer(1) 形对象
flag = 1
Map1.TrackingLayer.Refresh True
out:
End Sub
Private Sub Command3_Click() 层所有的州面域取出来与建立的缓冲区求交
On Error GoTo out 出州名保存在freset(100)数组中
flag = 2
Set layerc = Map1.Layers(0)
'建立缓冲区后的图 '该过程用于将0 '如果有交集就取
Set resutstate = layerc.Records
resutstate.MoveFirst
Do While Not resutstate.EOF
Set k = resutstate.Fields(\"shape\").Value
Set intersetj = k.Intersect(resultshape)
If Not intersetj Is Nothing Then
freset(jilu) = resutstate.Fields(\"NAME\").Value
Set setflash(jilu) = k
jilu = jilu + 1
End If
resutstate.MoveNext
Loop
Connect = \"在缓冲区内总共查找到\" & jilu & \"州\" & \"它们是:\" & vbCrLf
For i = 0 To jilu - 1
Connect = Connect & freset(i) & vbCrLf
Next i
Actionj = MsgBox(Connect, , \"查询结果\") If Actionj = vbOK Then
flag = 2
Map1.TrackingLayer.Refresh ture
End If
out:
End Sub
Private Sub Form_Load()
flag = -1 '做标记用于用于选择的按钮
flagitem = 0 '图层索引
'显示查询结果
jilu = 0
Set rectline = Nothing
End Sub
Private Sub Map1_AfterTrackingLayerDraw(ByVal hDC As stdole.OLE_HANDLE)
On Error GoTo out
Dim sym1 As New MapObjects2.Symbol
Dim sym2 As New MapObjects2.Symbol
If Not rectline Is Nothing Then '把选到的对象显示出来
sym1.Color = moYellow
sym1.Size = 3
Map1.DrawShape rectline, sym1
End If
If flag = 1 Then
sym2.Color = moRed
Map1.DrawShape resultshape, sym2
End If
If flag = 2 Then
For i = 0 To jilu - 1
Map1.FlashShape setflash(i), 5
Next i
End If
out:
End Sub
Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
' On Error GoTo out
Dim p As MapObjects2.Point '定义一个点对象
Set p = Map1.ToMapPoint(X, Y)
If max <> 0 Then
Set rectline = Map1.Layers(flagitem).SearchByDistance(p,
Map1.ToMapDistance(30), \"\") '找到你选择的对象
If rectline.EOF Then
MsgBox \"没找到对象\提示\"
Else
Map1.TrackingLayer.Refresh True
'
End If
End If
If max = 0 Then
Set rectline = Map1.Layers(0).SearchByDistance(p, Map1.ToMapDistance(100), \"\") '找到你选择的对象
If rectline.EOF Then
MsgBox \"没找到对象\提示\"
Else
Map1.TrackingLayer.Refresh True
End If
End If
'out:
End Sub
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务