网站大量收购独家精品文档,联系QQ:2885784924

实例85 GI组件——Mapobject深入开发.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实例85 GIS组件——Mapobject深入开发 实例说明 GIS的组件开发工作使得GIS产品更加人性化,但是开发的难度也随之加大。本例利用ESRI的MapObject组件结合GIS和数据库实现了一所高校的基本信息显示。程序的运行结果如图85-1所示。 图85-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地图文件氛围矢量部分和属性数据库部分。本例还实现了图层的属性数据库的响应。这是通过在同一个数据库中对表格进行相应的选取来实现的。具体的方法见程序。 实现步骤 该应用程序的实现步骤如下: 1.选择File|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:

文档评论(0)

haowendangqw + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档