您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页gis二次开发能实现那些功能

gis二次开发能实现那些功能

来源:爱够旅游网


第一题: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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务