《地理信息系统设计与开发》实验指导书Word文件下载.docx

上传人:b****3 文档编号:16845051 上传时间:2022-11-26 格式:DOCX 页数:30 大小:376.02KB
下载 相关 举报
《地理信息系统设计与开发》实验指导书Word文件下载.docx_第1页
第1页 / 共30页
《地理信息系统设计与开发》实验指导书Word文件下载.docx_第2页
第2页 / 共30页
《地理信息系统设计与开发》实验指导书Word文件下载.docx_第3页
第3页 / 共30页
《地理信息系统设计与开发》实验指导书Word文件下载.docx_第4页
第4页 / 共30页
《地理信息系统设计与开发》实验指导书Word文件下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

《地理信息系统设计与开发》实验指导书Word文件下载.docx

《《地理信息系统设计与开发》实验指导书Word文件下载.docx》由会员分享,可在线阅读,更多相关《《地理信息系统设计与开发》实验指导书Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。

《地理信息系统设计与开发》实验指导书Word文件下载.docx

EndIf

进一步操作PopUpMenu(右键菜单)

使用菜单编辑器生成一个右键菜单Popup1,为Popup1建立以下几个子菜单项“显示全图”“放大”“缩小”编写代码实现“显示全图”的功能;

PrivateSubpop1Full_Click()

Map1.Extent=Map1.FullExtent

修改Mouse事件中的代码,显示右键菜单

IfButton=vbLeftButtonThen

Else:

Button=vbRightButton

PopupMenupop1

进一步操作:

工具栏ToolBar

在窗体上放置ImageList控件

设置ImageList1的属性,增加图片ZoomIn.bmp;

ZoomOut.bmp;

Pan.bmp;

Globe.bmp(这些文件在光盘目录BitMaps下)

在窗体上放置ToolBar控件

设置ToolBar1的属性,将ToolBar1的图像列表设置为ImageList1;

增加按钮ZoomIn,ZoomOut,Pan,设置样式为2-tbrButtonGroup,并设置相应的显示图片;

增加第4个按钮设置样式为4-tbrPlaceholder;

增加第5个按钮btnFullExtent设置图片为Globe.bmp

注意:

VB控件库MicrosoftWindowsCommonControls6.0中包含ToolBar和ImageList控件

实验三动态加载图层

掌握CommandDialog组件添加图层的方法

练习VB中添加按钮的一般方法

导入CommandDialog组件,这一组件在对象库MicrosoftCommonDialogControl6.0中。

添加Map控件,ConmonDialog控件,并将其名称改为cDlg1,添加一个按钮.

程序代码:

DimshpLayerAsNewMapObjects2.MapLayer

DimDCAsNewMapObjects2.DataConnection

DimgdsAsMapObjects2.GeoDataset

DimFNameAsString

cDlg1.Filter="

ESRIShape文件(*.shp)|*.shp"

cDlg1.CancelError=True

OnErrorGoToeTrap

cDlg1.ShowOpen

IfLen(cDlg1.FileName)=0ThenExitSub

DC.Database=CurDir

IfNotDC.ConnectThenExitSub

FName=Left(cDlg1.FileTitle,Len(cDlg1.FileTitle)-4)

Setgds=DC.FindGeoDataset(FName)

IfgdsIsNothingThenExitSub

SetshpLayer.GeoDataset=gds

Map1.Layers.AddshpLayer

ExitSub

eTrap:

IfErr.Number<

>

cdlCancelThen

MsgBoxErr.Description,vbCritical

EndIf

实验四调整图层顺序

掌握在MO当中如何调整图层顺序

‘置顶当前图层

PrivateSublstLayers_DblClick()

DimlyrAsMapObjects2.MapLayer

IflstLayers.ListIndex<

-1Then

Map1.Layers.MoveToToplstLayers.ListIndex

Map1.Refresh

lstLayers.Clear

ForEachlyrInMap1.Layers

lstLayers.AddItemlyr.Name

Nextlyr

‘上移图层

PrivateSubCommand2_Click()

DimiAsInteger

-1AndlstLayers.ListIndex>

0Then

i=lstLayers.ListIndex-1

Map1.Layers.MoveTolstLayers.ListIndex,i

lstLayers.Selected(i)=True

‘下移图层

PrivateSubCommand4_Click()

DimiAsInteger

-1AndlstLayers.ListIndex<

lstLayers.ListCount-1Then

i=lstLayers.ListIndex+1

实验五取消图层调入和动态跟踪层

掌握取消图层调入

掌握动态跟踪层的使用

‘取消图层调入,运行时设置Map.CancelAction=moCancelMap

添加一个command1按钮。

增加事件Command1_Click()。

添加在运行时添加图层的代码

添加事件Map1_DrawingCanceled()

PrivateSubMap1_DrawingCanceled()

MsgBox"

thelayer(orlayers)hasbeencanceled!

"

‘TrackingLayer动态跟踪

DimptAsNewMapObjects2.Point

'

convertthepointtomapcoordinates

Setpt=Map1.ToMapPoint(X,Y)

addanewevent

Map1.TrackingLayer.AddEventpt,symIndex

实验六缓冲区

掌握使用缓冲区功能

PrivateSubForm_Load()

Map1.TrackingLayer.SymbolCount=2

WithMap1.TrackingLayer.Symbol(0)

.SymbolType=moPointSymbol

.Style=moCircleMarker

.Color=moRed

.Size=3

EndWith

WithMap1.TrackingLayer.Symbol

(1)

.SymbolType=moFillSymbol

.Style=moGrayFill

.OutlineColor=moRed

PrivateSubMap1_AfterTrackingLayerDraw(ByValhDCAsstdole.OLE_HANDLE)

Dimsym1AsNewMapObjects2.Symbol

sym1.SymbolType=moFillSymbol

sym1.Style=moTransparentFill

sym1.OutlineColor=moBlack

Map1.DrawShapeMap1.FullExtent,sym1

查看各顶点的M属性

地图数据:

ynroadsm.shp

DimlineAsNewMapObjects2.line

DimrecsAsNewMapObjects2.Recordset

DimrecCountAsInteger

List1.Clear

Setrecs=Map1.Layers(0).Records

recCount=recs.Count

Fori=0TorecCount-1

List1.AddItem"

线段:

&

i+1

Setline=recs("

Shape"

).Value

outputMeasuresline

Nexti

PrivateSuboutputMeasures(aLineAsMapObjects2.line)

DimitemCountAsInteger

DimpartLineAsMapObjects2.Points

ForEachpartLineInaLine.Parts

Fori=0TopartLine.Count-1Step1

Noofverticesintotal

itemCount=itemCount+1

WithpartLine.Item(i)

Item:

i&

"

"

itemCount&

Chr(9)&

X:

Format(.X,

##.00"

)&

Y:

Format(.Y,"

#.00"

M:

Format(.Measure,

NextpartLine

实验七控件坐标和地图坐标

掌握控件坐标和地图坐标转化的一般方法

学习地图距离获取的一般方法

1.控件坐标与地图坐标

添加数据Chinaprj.shp

Form1.Refresh

Form1.CurrentX=0

Form1.CurrentY=200

Print"

当前鼠标坐标X:

X&

vbTab&

Y

Print

DimptAsMapObjects2.Point

当前地图坐标X:

pt.X&

pt.Y

PrintMap1.Height&

Map1.Width

2.控件距离与地图距离

DimmyplAsNewMapObjects2.Line

Setmypl=Map1.TrackLine

Map1.TrackingLayer.AddEventmypl,0

地图距离为:

mypl.Length

控件距离为:

Map1.FromMapDistance(mypl.Length)

3.Projection

China.shp

DimmycsAsNewMapObjects2.GeoCoordSys

mycs.Type=moGeoCS_Beijing1954

DimmypjcsAsNewMapObjects2.ProjCoordSys

mypjcs.Type=moProjCS_Beijing1954GK_13

SetMap1.Layers(0).CoordinateSystem=mycs

SetMap1.CoordinateSystem=mypjcs

 

DimmyptAsMapObjects2.Point

Setmypt=Map1.ToMapPoint(X,Y)

Text1.Text="

Xis"

mypt.X&

Yis"

mypt.Y

实验八地图投影

掌握如何判断地图是否投影

掌握如何更改地图投影

判断有没有投影

添加数据china和chinaprj调整顺序观察结果

DimmycorsysAsObject

DimmymaplayerAsMapObjects2.MapLayer

Setmymaplayer=Map1.Layers(0)

Setmycorsys=mymaplayer.CoordinateSystem

IfmycorsysIsNothingThen

图形为地理坐标系或地图参数未设置"

Else

Ifmycorsys.IsProjectedThen

图形为投影坐标系"

Printmymaplayer.CoordinateSystem.Type

Printmymaplayer.CoordinateSystem.Name

Printmymaplayer.CoordinateSystem.ReturnDescription

Text1.Text=mymaplayer.CoordinateSystem.ReturnDescription

EndIf

2.更改投影

添加数据country和world30

DimCSMapAsNewMapObjects2.ProjCoordSys

CSMap.Type=moProjCS_World_WinkelI

DimCSMapLayerAsNewMapObjects2.GeoCoordSys

CSMapLayer.Type=moGeoCS_WGS1984

SetMap1.Layers(0).CoordinateSystem=CSMapLayer

SetMap1.Layers

(1).CoordinateSystem=CSMapLayer

SetMap1.CoordinateSystem=CSMap

Map1.Extent=Map1.FullExtent

DimCSMapAsNewMapObjects2.GeoCoordSys

CSMap.Type=moGeoCS_WGS1984

PrivateSubCommand3_Click()

CSMap.Type=moProjCS_World_Robinson

3.投影转换,坐标转换

第一个图添加数据countryworld30china第二个图添加数据china

DimmyGTAsNewMapObjects2.GeoTransformation

DimgcsBJ54AsNewMapObjects2.GeoCoordSys

DimmyprjBJ54AsNewMapObjects2.ProjCoordSys

DimgcsWGS84AsNewMapObjects2.GeoCoordSys

DimmyPt1,myPt2AsNewMapObjects2.Point

beginsomepredeclear

myprjBJ54.Type=moProjCS_Beijing1954GK_17

gcsBJ54.Type=moGeoCS_Beijing1954

gcsWGS84.Type=moGeoCS_WGS1984

SetmyGT.FromGeoCoordSys=gcsBJ54

SetmyGT.ToGeoCoordSys=gcsWGS84

myGT.Direction=moDirection_Forward

myGT.Name="

BJ54_To_WGS1984"

myGT.Method=moMethod_PositionVector

myGT.SetParametermoParm_DeltaX,24

myGT.SetParametermoParm_DeltaY,-123

myGT.SetParametermoParm_DeltaZ,-94

myGT.SetParametermoParm_RotationX,-0.02

myGT.SetParametermoParm_RotationY,-0.25

myGT.SetParametermoParm_RotationZ,-0.13

myGT.SetParametermoParm_DeltaScale,1

beginmap1

SetMap1.Layers(0).CoordinateSystem=gcsWGS84

SetMap1.Layers

(1).CoordinateSystem=gcsWGS84

SetMap1.Layers

(2).CoordinateSystem=gcsWGS84

IfMap1.CoordinateSystemIsNothingThen

SetMap1.CoordinateSystem=gcsWGS84

beginmap2

SetMap2.Layers(0).CoordinateSystem=gcsWGS84

IfMap2.CoordinateSystemIsNothingThen

SetMap2.CoordinateSystem=myprjBJ54

SetmyPt1=Map1.ToMapPoint(X,Y)

Map1.TrackingLayer.AddEventmyPt1,0

SetmyPt2=Map2.CoordinateSystem.Transform(Map1.CoordinateSystem,myPt1,,myGT)

Map2.TrackingLayer.AddEventmyPt2,0

PrintmyPt1.X&

;

myPt1.Y

PrintmyPt2.X&

myPt2.Y

实验九文件状态的查询

掌握文件状态的查询的一般方法

1.显示文件状态、复习动态加载数据

加载数据world30,拷贝china到程序运行目录

DimmyrcsAsNewMapObjects2.Recordset

DimmygeodsAsNewMapObjects2.GeoDataset

DimmydcAsNewMapObjects2.DataConnection

mydc.Databas

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1