GIS二次开发程序设计Word格式.docx
- 文档编号:19742435
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:24
- 大小:490.37KB
GIS二次开发程序设计Word格式.docx
《GIS二次开发程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《GIS二次开发程序设计Word格式.docx(24页珍藏版)》请在冰豆网上搜索。
在菜单栏下面进行插入Button按钮,并在按钮上插入相应图像。
步骤如下图:
图2编辑toolbar
3、插入map、legend、status等控件,并调整其大小。
得到最后成果图如下图所示:
图3界面
二加载图层
1、熟悉MapObject中commondialog控件的调用方法。
2、掌握在VisualBasic中利用MapObject二次开发软件实现command控件、菜单、类模块和toolbar加载Shape图层的操作。
1、用菜单的方法加载Shape图层。
2、用toolbar的方法加载Shape图层。
3、用命令按钮command的方法加载Shape图层。
4、用类模块的方式加载Shape图层。
在设计好的界面环境中的菜单、toolbar、command、类模块中分别写入打开图层的代码。
进行打开图层的操作。
1、运用菜单代开代码:
PrivateSubdakaituceng_Click()
'
第一步,定义一个新的MO对象组的DataConnection对象
DimdConnAsNewMapObjects2.DataConnection
第二步,定义一个新的MO对象组的MapLayer对象
DimshpLayerAsNewMapObjects2.MapLayer
DimfilenameAsString
'
第三步,设置DataConnection对象的方法Connection连接到指定的存放数据的地方
dConn.Database="
H:
\MODevelopDemo\MOandVBDemo\L4-Exam-AddShape\Data"
第三步,利用DataConnection对象的方法Connect进行数据连接
dConn.Connect
第四步,将MapLayer对象的GeoDataset属性设置为DataConnection对象的FindGeoDataset方法(用Shape文件名作参数)的返回值。
SetshpLayer.GeoDataset=dConn.FindGeoDataset("
STATES"
)
第五步,用地图控件Layers对象的方法Add向地图控件中添加Shape图层
Map1.Layers.AddshpLayer
设置对话框过滤器
CommonDialog1.Filter="
ESRIShape文件(*.shp)|*.shp"
对话框显示为打开类型的对话框
CommonDialog1.ShowOpen
如果打开文件名的长度为0,则终止这个过程
IfLen(CommonDialog1.filename)=0ThenExitSub
设置DataConnection对象的方法Connection连接到当前目录
dConn.Database=CurDir'
App.path
IfNotdConn.ConnectThenExitSub
MsgBoxdConn.Connect
得到从对话框返回的文件名
filename=Left(CommonDialog1.FileTitle,Len(CommonDialog1.FileTitle)-4)
设置图层的数据集
SetshpLayer.GeoDataset=dConn.FindGeoDataset(FileName)
SetshpLayer.GeoDataset=dConn.FindGeoDataset(filename)
增加新图层
EndSub
图4窗口
结果如下图:
图5加载
2、用toolbar的方式代开图层代码:
首先在设置Button时将打开图层的key值标为打开图层。
PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)
SelectCaseButton.Key
Case"
打开图层"
Calldakaituceng_Click
EndSelect
3、用command方式进行打开的代码:
PrivateSubCommand5_Click()
Calldakaituceng_Click
得到如下结果:
图6效果
4、用类模块方式打开图层的代码:
SubClass1_Initialize()
DimshpLayerAsNewMapObjects2.MapLayer
Form1.CommonDialog1.Filter="
Form1.CommonDialog1.ShowOpen
IfLen(Form1.CommonDialog1.filename)=0ThenExitSub
filename=Left(Form1.CommonDialog1.FileTitle,Len(Form1.CommonDialog1.FileTitle)-4)
Form1.Map1.Layers.AddshpLayer
得到结果如图:
图7结果
三放大、缩小、平移和全视图
学会在菜单、toolbar中添加相应的程序代码实现所加载图层的放大、缩小、平移以及全视图操作。
1、用程序代码实现图层的放大操作功能。
2、用程序代码实现图层的缩小操作功能。
3、用程序代码实现图层的平移操作功能。
4、用程序代码实现图层的全视图操作功能。
1、实现图层的放大功能代码:
PrivateSubMap1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Ifi=1Then
SetMap1.Extent=Map1.TrackRectangle
EndIf
PrivateSubfangda_Click()
bZoomOrPan=True
标志放大状态
i=1
设置鼠标指针
Map1.MousePointer=moZoomIn
结果如图所示:
图8放大
2、图层缩小功能代码:
Ifi=2Then
DimrAsMapObjects2.rectangle
Setr=Map1.Extent
r.ScaleRectangle1.5'
显示框放大1.5倍
Map1.Extent=r
EndIf
PrivateSubsuoxiao_Click()
i=2
Map1.MousePointer=moZoomOut
结果如图所示:
图9缩小
3、图层平移功能代码:
Ifi=3Then
Map1.Pan
PrivateSubpingyi_Click()
i=3'
标志平移状态
Map1.MousePointer=moPan'
图10平移
4、图层全视图功能代码:
PrivateSubquanshitu_Click()
设置mainmap的当前显示范围是全图
SetMap1.Extent=Map1.FullExtent
图11全视图
四设计鹰眼
在窗体中添加新的map控件作为鹰眼,并在鹰眼内画红色矩形框。
框要求鹰眼与图层能进行联动,红色方框内的内容为图层的显示内容。
(2)内容
1、设置Birdeye的属性及位置大小。
2、birdeye与mainmap联动,在birdeye内画出红色矩形框并实现Birdeye的拖拽功能。
1、添加一个map控件作为鹰眼。
图12添加鹰眼
2、添加代码,实现鹰眼与图层的联动机鹰眼的拖拽功能。
PrivateSubdakai_Click()
dConn.Database=CurDir
Map1.Layers.AddshpLayer
Map1.Refresh
legend1.setMapSourceMap1
让图层控制控件的作用生效
legend1.LoadLegendTrue
Map2.Layers.AddshpLayer
Map2.Refresh
====================================================
PrivateSubMap1_AfterLayerDraw(ByValIndexAsInteger,ByValcanceledAsBoolean,ByValhdcAsstdole.OLE_HANDLE)
IfIndex=0Then
Map2.TrackingLayer.RefreshTrue
PrivateSubMap2_AfterTrackingLayerDraw(ByValhdcAsstdole.OLE_HANDLE)
DimsymAsNewSymbol
sym.OutlineColor=moRed
sym.Style=moTransparentFill
Map2.DrawShapeMap1.Extent,sym
PrivateSubMap2_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
DimcurRectangleAsMapObjects2.rectangle
DimptAsNewMapObjects2.point
画方框改变Map1窗口
SetcurRectangle=Map2.TrackRectangle
SetMap1.Extent=curRectangle
点击改变Map1位置
Setpt=Map2.ToMapPoint(x,y)
Map1.CenterAtpt.x,pt.y
EndSub
3、最终结果图:
图13实现鹰眼
五画点
用一定的程序在图层上进行画点操作。
1、在菜单中设计代码进行画点操作功能。
2、用toolbar中的Button进行画点操作。
1、用菜单画点代码:
PrivateSubMap1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
Ifi=4Then
DimpointAsNewMapObjects2.point
DimevpointAsNewMapObjects2.GeoEvent
Setpoint=Map1.ToMapPoint(x,y)
SettrackShape=point
Setevpoint=Map1.TrackingLayer.AddEvent(point,0)
WithMap1.TrackingLayer.Symbol(0)
.SymbolType=moFillSymbol
.Style=moGrayFill
.Color=moRed
.OutlineColor=moRed
EndWith
PrivateSubhuadian_Click()
i=4
Map1.MousePointer=moPencil
1、用toolbar中的Button进行画点操作代码:
画点"
Callhuadian_Click
2、实验结果:
图14画点
六画线
Ifi=5Then
DimlineAsNewMapObjects2.line
DimevlineAsNewMapObjects2.GeoEvent
Setline=Map1.TrackLine
SettrackShape=line
Setevline=Map1.TrackingLayer.AddEvent(line,0)
.Color=moGreen
.OutlineColor=moGreen
Endsub
2、用toolbar中的Button进行画点操作代码:
画线"
Callhuaxian_Click
3、实验结果:
图15画线
七画面
1)画圆:
Ifi=6Then
DimellipseAsNewMapObjects2.ellipse
DimevellipseAsNewMapObjects2.GeoEvent
Setellipse=Map1.TrackCircle
SettrackShape=ellipse
Setevellipse=Map1.TrackingLayer.AddEvent(ellipse,0)
.Color=moBlue
.OutlineColor=moBlue
2)画矩形:
Ifi=7Then
DimrectangleAsNewMapObjects2.rectangle
DimevrectangleAsNewMapObjects2.GeoEvent
Setrectangle=Map1.TrackRectangle
SettrackShape=rectangle
Setevrectangle=Map1.TrackingLayer.AddEvent(rectangle,0)
.Color=moBlack
.OutlineColor=moBlack
3)画多边形:
Ifi=8Then
DimpolygonAsNewMapObjects2.polygon
DimevpolygonAsNewMapObjects2.GeoEvent
Setpolygon=Map1.TrackPolygon
SettrackShape=polygon
Setevpolygon=Map1.TrackingLayer.AddEvent(polygon,0)
.Color=moYellow
.OutlineColor=moYellow
画圆"
Callhuayuan_Click
画矩形"
Callhuajuxing_Click
画多边形"
Callhuaduobianxing_Click
图16画面
八按值渲染
了解图层渲染的方法,掌握Renderer属性设置的语法,掌握按值渲染(ValueMapRenderer)的原理,体会按值渲染的特点,并运用程序代码将图层进行按值渲染。
1、运用按值渲染中的固定渲染数值的原理和代码来进行图层渲染。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GIS 二次开发 程序设计