- 3
- 0
- 约3.46千字
- 约 7页
- 2018-09-29 发布于江苏
- 举报
实例85 GIS组件——Mapobject深入开发
实例85 GIS组件——Mapobject深入开发
实例说明
本例图1 在Delphi中调用MapObject组件
核心技巧
MapObject强大的功能使它成为许多GIS开发人员首选的二次开发组件,而Delphi在组件开发上优势也可以完全显露出来。因此,本例使用MapObject+Delphi的开发模式进行了GIS组件的深度开发。本例不但实现了GIS图层的显示和浏览,还显示了图层对应的数据库内容。这对于很多情况下都是非常必要的功能。
本例用的MapObject2是测试版(图85-2),可以从ESRI的网站()上下载,大小是48.6M。下载安装MapObject后,系统会对这个控件进行注册,然后可以按照前面介绍的方法,通过Component|Imaport ActiveX control…来引入这个控件加以使用。控件导入后会默认添加到ActiveX面板中。另外,默认情况下会在目录….\Borland\…\Imports下生成一个MapObjects2_TLB.pas的单元文件。打开这个文件,会发现MapObjects2及其它组件的所有属性和方法都列在这里(图85-3)。
图85-2 MapObject 2提示界面
图85-3 MapObjects 2及其控件的属性和方法
MapObject2封装了总共45个控件的属性和方法,因此使得二次开发工作非常容易。当然,如果加上Memory Table和Lengend等控件的话还可以实现更加强大的功能。本例实现的只能满足一般的开发要求,如果要进一步深入的话,还需要加以改进。
本例的原始对象(图层)的实现流程如下:地图扫描→在MapInfo中进行地图的数字矢量化→转化为ArcView支持的Shape文件。图85-4是本例的地图文件在ArcView中的显示。
图85-4 本例地图文件在ArcView中的显示
GIS地图文件氛围矢量部分和属性数据库部分。本例还实现了图层的属性数据库的响应。这是通过在同一个数据库中对表格进行相应的选取来实现的。具体的方法见程序。
实现步骤该应用程序的实现步骤如下:|New|Application,新建一个程序文件。
2.按照前面介绍的ActiveX控件的添加和安装方法添加GIS控件——MapObject2。
3.向Form中拖入一个MapObject。由于使用的是注册版,所以在添加的时候会出现图85-2的界面,提醒版权和控件介绍。同时向Form中添加Table、DataSource、Button、ListBox和Label等控件。
4.属性设置。最主要的设置MapObject控件的属性。MapObject2的属性设置是通过双击或右击选择“特性”来实现的,如图85-5。
图85-5 MapObject属性设置
选中一个图层对象,然后单击Properities(属性),就可以设置图层的相关属性了,如图85-6所示
图85-6 图层对象属性设置
然后,设置Table的Database为选取ESRI ShapeFile Data Source(不设置Table Name),设置Datasource的Dataset为Table1。
5.添加代码。
双击按钮“显示效果”,添加下列代码将地图图层添加到ListBox中。
procedure TForm1.Button1Click(Sender: TObject);
Var olayer:Layers;
i:Integer;
begin
olayer:=Map1.Layers; //设置图层变量
For i:=0 To olayer.Count-1 Do
ListBox1.Items.Add(IntToStr(i)); //将当前图层添加到列表框中
end;
本例最主要的还是ListBox1的OnClick事件中的代码,用于激活当前图层和显示相应的属性数据对象。
procedure TForm1.ListBox1Click(Sender: TObject);
begin
//建立与数据库的连接
Case ListBox1.ItemIndex Of
0:Begin //选中图层1的响应
Map1.Layers.MoveToTop(0); //将选中的图层作为最顶层
Table1.close; //将先前的表格关闭
Table1.TableName:=学生公寓; //新的表格名
Table1.Active:=True; //激活表格
Label1.Caption:=学生公寓; //显示表格名
End;
1:Begin //选中图层2的响应
Map1.Layers.MoveToT
原创力文档

文档评论(0)