qpfqpf
路人甲
路人甲
  • 注册日期2007-09-08
  • 发帖数11
  • QQ
  • 铜币141枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1846回复:1

[推荐]mapobject使用第一贴

楼主#
更多 发布于:2007-09-11 11:05
第一章了解MapObjects
    MapObjects是一套制图软件集,它使程序员能够把地图加到应用程序中去。
    通过MapObjects你可灵活地建立适合用户的地图接口。在小内存空间中,你能用多种工业标准程序环境之一去建立应用程序,你能够联合使用MapObjects与其它软件去实现地图与用户信息的联系。
1.1元素软件
    大部分商业软件在最近的版本中极度壮大,诸如字处理及报表等程序,其最初仅有几兆,目前却严重消耗磁盘空间。这就要看最新的计算机能否快速执行最新版本软件以至于不落后于旧机器使用老软件的效率。
    由于操作系统变得越来越复杂及用户对更多功能的要求也日趋强烈,程序也随之壮大了。然而典型用户也仅充分使用了这些大软件的10%-20%。那些没有用到的功能象一个大包袱,严重消耗了系统资源和磁盘空间。
    如何打破这种恶性循环?元素软件(Component software)是一技术上的重大突破。它提供了一种解决办法。
    元素软件的原理是把大的桌面应用软件的功能打碎成部件。开发人员可跟据需要恰当地将一些部件组合成工具箱,用它建立专用软件。这种部件叫目标(objects)。所用平台就是可视化程序语言。其结果就是精炼地程序快速经济地运行并且对特定的市场有很强的适应性。
1.2MapObjects的功能
通过MapObjects你可完成以下甚至更多功能:
Ÿ           显示一张多图层地图(道路,河流,边界)。
Ÿ           放大,缩小,漫游。
Ÿ           生成图形元素,如点,线,圆,多边形。
Ÿ           说明注记
Ÿ           识别地图上被选中的元素。
Ÿ           通过线,方框,区域,多边形,圆来拾取物体。
Ÿ           拾取距某参照物特定范围内的物体。
Ÿ           通过SQL描述来选择物体。
Ÿ           对选取物体进行基本统计。
Ÿ           对所选地图元素的属性进行更新,查询。
Ÿ           绘制专题图。
Ÿ           标注地图元素。
Ÿ           从航片或卫星图片上截取图像。
Ÿ           动态显示实时或系列时间组数据。
Ÿ           在图上标注地址或定位。
    本书开发了一系列通过VB,OLE,WinAPI扩展MapObjects的办法。
    MapObjects可执行许多基础制图功能。但它不能执行某些高级功能。如,高质量地图输出,地图坐标系投影,表面模型或网络分析等高级空间分析。以及拓扑编辑。你可利用ESRI的其它产品如ARC/INFO,ArcView来实现高级功能。
1.3MapObjects简介
    MapObjects包括一个OLE控件(OCX)叫做地图控件(Map control)和一组(三十多个)OLE目标(objects)。它适用于工业标准程序环境。如VB4.0,Delphi2.0,PowerBuilder,MS Access等。
    MapObjects不适用于最终用户。它是为程序开发者设计的。程序开发者可利用MapObjects开发应用程序并把这些程序提供给下一级用户使用。
    MapObjects运行于Win95或Win NT3.51或更高。
    最近,Mierosoft开始把OLE controls称作ActiveX controls。本书将元素称为控件(OLE controls 或 OCXs),但这些术语可与新术语ActiveX互换。
MapObjects和OLE containers
    OLE Automation object 是一种可编程目标,它可通过OLE Automation server来通讯。OLE custom control是一种软件元件,它可通过OLE container实现特定功能。OLE container和 OLE Automation Server就是VB,Delphi,Access,VFro。
    OLE custom control有事件,属性和方法。
    OLE Automation objects有属性和方法。
    在OLE Container中(如VB),你能联合使用Map Objects的目标和其它Custom controls,及利用别的程序中的OLE Automation objects(如 office)去建立应用程序。
  部件软件的优势
§           Map Objects(通常叫OCXs)可容易地用OCXs建立程序而免去C++ 冗长的代码,你可发挥专长于设计,工程,制图,而不是软件。
§           你的Map Objects 应用软件不多占用内存空间。
§           比其它 Win 支持的制图软件速度更快,MapObjects 直接建立在MFC 库上且优化执行。
§           你有极大的灵活性去建立用户接口。你可在应用程序上建立几乎所有在Win95上见过的接口。
    MapObjects的另一特点是,地图可以是程序中的主要元素也可是附属品。因此MapObjects尤其适合vertical应用软件。例如, 你的软件可能主要是商用数据库,当查询时可在表单上高亮度显示与查询内容相关的地图。
1.4使用MapObjects  
把一张地图加到VB的表单上十分容易,如图
***************
***********
用 MapObjects编写程序的步骤:
§           从CD-ROM装入MapObjects。
§           启动VB在"工具"菜单下打开Custom controls对话框。如果安装成功你将看到ESRI MapObjects的全称。用鼠标点check box (选 MapObjects 可用)。你会看到MapObjects图标被加到VB工具栏内。选地图控件,把鼠标移到表单中,拖动十字丝把矩形框尺寸调到适当大小,释放鼠标,你的表单上就会有一个地图控件。
§           通过地图控件属性框或通过对Data connection和图层目标的编程,你可向地图控件中增加地图数据。
§           你还可以继续添加其它控件,如命令按钮和工具条,或编写代码来调用属性,事件和方法。
§           编写,调试,编译。
安装 MapObjects
    一旦从CD-ROM中成功装入,下一步就是向VB工程中增加MapObjects
***************
***********
    当你打开一个VB的工程,工具档中包含了一部份你已购买的 VB控件。但并不是全部。你会发现制定缺省控件装入从而把MapObjects 包括进去是十分方便的。
    为达到上述目的,你可向C:\Program Files\Microsoft Visral Basic\Avto 32 ld.vbp中加入所需控件。一但你把MapObjects加入,在每次开始新工程时,地图控件将被自动装入。
    你可自己制定一次装入控件的数量。按需要决定控件的数量是一个好习惯。这样会使你的工程装入的快点且节省内存。
加入一地图控件
    你可向任意VB表单中加入一个或多个地图控件。
*****************
*****************    
    当你向表单中加入一地图控件,最初它就象VB的图片框控件, 然而它的资源并不是位图而是矢量或栅格数据的图层。
加入一图层
    你可通过地图控件的属性窗或通过写代码来加入图层。
****************
***************    
    你可通过地图控件属性窗口增加图层也可采用在图层属性窗口中对图层目标赋属性的办法加如图层。
    地图控件属性窗和图层属性窗是连接地图控件和图层目标的某些属性的通道。
    在实践中你可通过写代码来增加图层,因为你通常不能预言你的下级用户新需接的图层在哪里。
下面是加入图层的例子:
 
Dim dCON As New MapObjects.DataConnection
Dim curLayer As New MapObjects.MapLayer
dCON.Database = "c:\Data"
curLayer.GeoDataset = dCON.FindGeoDataset("Counties")
map1.Layers.Add curLayer
 
    这是一段通用程序,下一章我们将进一步讨论MapObjects的数据通道(data access)目标,将介绍更多的增加图层的程序。
编写代码和增加属性
    以下是如何使用VB代码编辑器和设置属性:
 ***************************
************************
    象其它所有控件一样,当在地图控件上打开VB代码窗时,你就会看到关于地图控件的所有事件的代码结构。
    在最后一部分,你会看到在地图控件属性表中可快捷设置地图控件的属性。
    注意,在标准属性窗口中,地图控件的一些属性是不可见的。这些属性是只读的。我们在后面会涉及。
取得MapObjects的帮助
    MapObjects具有在线帮助系统,它包括MapObjects每一目标的属性,方法和事件,以及常量的详细说明。
    大多数帮助的主题下都有一小段程序例子,它可在VB下执行。
下面有三种办法可得到帮助:
§           你可点工具栏中地图控件并按F1。
§           可通过VB的目标浏览器与MapObjects的帮助建立联系。
§           可把VB编辑窗口的文本游标移到MapObjects的某一目标,属性或事件上按F1。
    一种最好的学习MapObjects的方法就是学习例子。以下是使用例子的步骤:
§           在帮助的主题下点例子。
§           打开一新VB工程并加上一地图控件。
§           当表单是活动状态时按F7打开代码编辑器。
§           读例子的结构,并向表单中加入特定控件。
§           从例子中粘贴代码到代码编辑器中。
§           按F5或选择RUN。你的例子将被运行。
运行工程
    你可编写一小段应用程序。加入地图控制并加入一个或多个图层。在编写时你不会看到任何图层显示出来。但当程序运行时,你就会看到图层将掌满显示区域,如果没制定符号属性(颜色、大小 、型),则缺省设置将自动启用。
1.5使用OLE Automation objects
    除了地图控件以外,MapObjects包括三十多个OLE Automation objects,这些目标是MapObjects区别于同类产品的制图软件部件,它们提供了灵活性和多功能。
OLE Automation objects是编写交互的高效应用软件的关键。
使用目标浏览器
OLE Automation objects在打开VB之初并没有呈现出来。但可在目标浏览中看到它们,点View菜单中object Browser,在库/工程下拉框中选"Mapobjects-ESRI Mapobjects"你就会在类/组件列表框中看到MapObjects的constants和目标。
§           点任意目标,在方法/属性列表框中就会有增加。
§           点任意方法或属性,你就会在目标浏览器底部看到一小段描述。
§           点question按钮,就会得到on line帮助。
引用OLE Avtomation objects
    大多情况,用MapObjects就要用地图控件。地图控件是一种可视化元素,然而有一些用MapObjects编制的应用程序并不需要地图控件。你可以在VB的Reference窗口选中MapObjects OLE Automation objects而不用增加地图控件。在VB工具
    注意,如果你把MapObjects加到VB的工具栏中,也就自动地引用了OLE Automation objects。
声明目标
当你声明或建立一新目标时,最好写全名,例:
Dim rSet As New Mapobjects.Recordset
而不是
Dim rSet As New Recordset
    这不仅可提高运行效率,也避免了潜在的命名矛盾。如 MapObjects的Recordset目标和VB的Recordset目标。
使用常量
    本书涉及了所有MapObjects可用的常量,在设置变量或属性时可使用常量而不是数值。常量代表的具体数值请参阅参考手册和在线帮助。
明确变量类型
    如果你还没有做准备,你就应该在VB的工程中声明变量和目标的类型。从Tools 单中选Options项,在Options对话框中点中 Require Variable Declaration,在任何一个新表或模块中都会具有这个设置。
    在声明段,你的微不足道的变量和目标声明工作将换来少测试和高效的表。
喜欢0 评分0
whc77777
路人甲
路人甲
  • 注册日期2007-07-14
  • 发帖数10
  • QQ
  • 铜币38枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-09-21 16:56
<P>还好啊,</P>
<P>有更深的吗?</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部