MapObjects中文指导.docx
- 文档编号:24603968
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:244
- 大小:185.22KB
MapObjects中文指导.docx
《MapObjects中文指导.docx》由会员分享,可在线阅读,更多相关《MapObjects中文指导.docx(244页珍藏版)》请在冰豆网上搜索。
MapObjects中文指导
第一章第一章了解MapObjects
MapObjects是一套制图软件集,它使程序员能够把地图加到应用程序中去。
通过MapObjects你可灵活地建立适合用户的地图接口。
在小内存空间中,你能用多种工业标准程序环境之一去建立应用程序,你能够联合使用MapObjects与其它软件去实现地图与用户信息的联系。
1.11.1元素软件
大部分商业软件在最近的版本中极度壮大,诸如字处理及报表等程序,其最初仅有几兆,目前却严重消耗磁盘空间。
这就要看最新的计算机能否快速执行最新版本软件以至于不落后于旧机器使用老软件的效率。
由于操作系统变得越来越复杂及用户对更多功能的要求也日趋强烈,程序也随之壮大了。
然而典型用户也仅充分使用了这些大软件的10%-20%。
那些没有用到的功能象一个大包袱,严重消耗了系统资源和磁盘空间。
如何打破这种恶性循环?
元素软件(Componentsoftware)是一技术上的重大突破。
它提供了一种解决办法。
元素软件的原理是把大的桌面应用软件的功能打碎成部件。
开发人员可跟据需要恰当地将一些部件组合成工具箱,用它建立专用软件。
这种部件叫目标(objects)。
所用平台就是可视化程序语言。
其结果就是精炼地程序快速经济地运行并且对特定的市场有很强的适应性。
1.21.2MapObjects的功能
通过MapObjects你可完成以下甚至更多功能:
•• 显示一张多图层地图(道路,河流,边界)。
•• 放大,缩小,漫游。
•• 生成图形元素,如点,线,圆,多边形。
•• 说明注记
•• 识别地图上被选中的元素。
•• 通过线,方框,区域,多边形,圆来拾取物体。
•• 拾取距某参照物特定范围内的物体。
•• 通过SQL描述来选择物体。
•• 对选取物体进行基本统计。
•• 对所选地图元素的属性进行更新,查询。
•• 绘制专题图。
•• 标注地图元素。
•• 从航片或卫星图片上截取图像。
•• 动态显示实时或系列时间组数据。
•• 在图上标注地址或定位。
本书开发了一系列通过VB,OLE,WinAPI扩展MapObjects的办法。
MapObjects可执行许多基础制图功能。
但它不能执行某些高级功能。
如,高质量地图输出,地图坐标系投影,表面模型或网络分析等高级空间分析。
以及拓扑编辑。
你可利用ESRI的其它产品如ARC/INFO,ArcView来实现高级功能。
1.31.3MapObjects简介
MapObjects包括一个OLE控件(OCX)叫做地图控件(Mapcontrol)和一组(三十多个)OLE目标(objects)。
它适用于工业标准程序环境。
如VB4.0,Delphi2.0,PowerBuilder,MSAccess等。
MapObjects不适用于最终用户。
它是为程序开发者设计的。
程序开发者可利用MapObjects开发应用程序并把这些程序提供给下一级用户使用。
MapObjects运行于Win95或WinNT3.51或更高。
最近,Mierosoft开始把OLEcontrols称作ActiveXcontrols。
本书将元素称为控件(OLEcontrols或OCXs),但这些术语可与新术语ActiveX互换。
MapObjects和OLEcontainers
OLEAutomationobject是一种可编程目标,它可通过OLEAutomationserver来通讯。
OLEcustomcontrol是一种软件元件,它可通过OLEcontainer实现特定功能。
OLEcontainer和OLEAvtomationServer就是VB,Delphi,Access,VFro。
OLEcustomcontrol有事件,属性和方法。
OLEAutomationobjects有属性和方法。
在OLEContainer中(如VB),你能联合使用MapObjects的目标和其它Customcontrols,及利用别的程序中的OLEAutomationobjects(如office)去建立应用程序。
部件软件的优势
▪▪ MapObjects(通常叫OCXs)可容易地用OCXs建立程序而免去C++冗长的代码,你可发挥专长于设计,工程,制图,而不是软件。
▪▪ 你的MapObjects应用软件不多占用内存空间。
▪▪ 比其它Win支持的制图软件速度更快,MapObjects直接建立在MFC库上且优化执行。
▪▪ 你有极大的灵活性去建立用户接口。
你可在应用程序上建立几乎所有在Win95上见过的接口。
MapObjects的另一特点是,地图可以是程序中的主要元素也可是附属品。
因此MapObjects尤其适合vertical应用软件。
例如,你的软件可能主要是商用数据库,当查询时可在表单上高亮度显示与查询内容相关的地图。
1.41.2使用MapObjects
把一张地图加到VB的表单上十分容易,如图
***************
***********
用MapObjects编写程序的步骤:
▪▪ 从CD-ROM装入MapObjects。
▪▪ 启动VB在"工具"菜单下打开Customcontrols对话框。
如果安装成功你将看到ESRIMapObjects的全称。
用鼠标点checkbox(选MapObjects可用)。
你会看到MapObjects图标被加到VB工具栏内。
选地图控件,把鼠标移到表单中,拖动十字丝把矩形框尺寸调到适当大小,释放鼠标,你的表单上就会有一个地图控件。
▪▪ 通过地图控件属性框或通过对Dataconnection和图层目标的编程,你可向地图控件中增加地图数据。
▪▪ 你还可以继续添加其它控件,如命令按钮和工具条,或编写代码来调用属性,事件和方法。
▪▪ 编写,调试,编译。
安装MapObjects
一旦从CD-ROM中成功装入,下一步就是向VB工程中增加MapObjects
***************
***********
当你打开一个VB的工程,工具档中包含了一部份你已购买的VB控件。
但并不是全部。
你会发现制定缺省控件装入从而把MapObjects包括进去是十分方便的。
为达到上述目的,你可向C:
\ProgramFiles\MicrosoftVisralBasic\Avto32ld.vbp中加入所需控件。
一但你把MapObjects加入,在每次开始新工程时,地图控件将被自动装入。
你可自己制定一次装入控件的数量。
按需要决定控件的数量是一个好习惯。
这样会使你的工程装入的快点且节省内存。
加入一地图控件
你可向任意VB表单中加入一个或多个地图控件。
*****************
*****************
当你向表单中加入一地图控件,最初它就象VB的图片框控件,然而它的资源并不是位图而是矢量或栅格数据的图层。
加入一图层
你可通过地图控件的属性窗或通过写代码来加入图层。
****************
***************
你可通过地图控件属性窗口增加图层也可采用在图层属性窗口中对图层目标赋属性的办法加如图层。
地图控件属性窗和图层属性窗是连接地图控件和图层目标的某些属性的通道。
在实践中你可通过写代码来增加图层,因为你通常不能预言你的下级用户新需接的图层在哪里。
下面是加入图层的例子:
DimdCONAsNewMapObjects.DataConnection
DimcurLayerAsNewMapObjects.MapLayer
dCON.Database="c:
\Data"
curLayer.GeoDataset=dCON.FindGeoDataset("Counties")
map1.Layers.AddcurLayer
这是一段通用程序,下一章我们将进一步讨论MapObjects的数据通道(dataaccess)目标,将介绍更多的增加图层的程序。
编写代码和增加属性
以下是如何使用VB代码编辑器和设置属性:
***************************
************************
象其它所有控件一样,当在地图控件上打开VB代码窗时,你就会看到关于地图控件的所有事件的代码结构。
在最后一部分,你会看到在地图控件属性表中可快捷设置地图控件的属性。
注意,在标准属性窗口中,地图控件的一些属性是不可见的。
这些属性是只读的。
我们在后面会涉及。
取得MapObjects的帮助
MapObjects具有在线帮助系统,它包括MapObjects每一目标的属性,方法和事件,以及常量的详细说明。
大多数帮助的主题下都有一小段程序例子,它可在VB下执行。
下面有三种办法可得到帮助:
▪▪ 你可点工具栏中地图控件并按F1。
▪▪ 可通过VB的目标浏览器与MapObjects的帮助建立联系。
▪▪ 可把VB编辑窗口的文本游标移到MapObjects的某一目标,属性或事件上按F1。
一种最好的学习MapObjects的方法就是学习例子。
以下是使用例子的步骤:
▪▪ 在帮助的主题下点例子。
▪▪ 打开一新VB工程并加上一地图控件。
▪▪ 当表单是活动状态时按F7打开代码编辑器。
▪▪ 读例子的结构,并向表单中加入特定控件。
▪▪ 从例子中粘贴代码到代码编辑器中。
▪▪ 按F5或选择RUN。
你的例子将被运行。
运行工程
你可编写一小段应用程序。
加入地图控制并加入一个或多个图层。
在编写时你不会看到任何图层显示出来。
但当程序运行时,你就会看到图层将掌满显示区域,如果没制定符号属性(颜色、大小、型),则缺省设置将自动启用。
1.3使用OLEAutomationobjects
除了地图控件以外,MapObjects包括三十多个OLEAutomationobjects,这些目标是MapObjects区别于同类产品的制图软件部件,它们提供了灵活性和多功能。
OLEAutomationobjects是编写交互的高效应用软件的关键。
使用目标浏览器
OLEAutomationobjects在打开VB之初并没有呈现出来。
但可在目标浏览中看到它们,点View菜单中objectBrowser,在库/工程下拉框中选"Mapobjects-ESRIMapobjects"你就会在类/组件列表框中看到MapObjects的constants和目标。
▪▪ 点任意目标,在方法/属性列表框中就会有增加。
▪▪ 点任意方法或属性,你就会在目标浏览器底部看到一小段描述。
▪▪ 点question按钮,就会得到online帮助。
引用OLEAvtomationobjects
大多情况,用MapObjects就要用地图控件。
地图控件是一种可视化元素,然而有一些用MapObjects编制的应用程序并不需要地图控件。
你可以在VB的Reference窗口选中MapObjectsOLEAutomationobjects而不用增加地图控件。
在VB工具
注意,如果你把MapObjects加到VB的工具栏中,也就自动地引用了OLEAutomationobjects。
声明目标
当你声明或建立一新目标时,最好写全名,例:
DimrSetAsNewMapobjects.Recordset
而不是
DimrSetAsNewRecordset
这不仅可提高运行效率,也避免了潜在的命名矛盾。
如MapObjects的Recordset目标和VB的Recordset目标。
使用常量
本书涉及了所有MapObjects可用的常量,在设置变量或属性时可使用常量而不是数值。
常量代表的具体数值请参阅参考手册和在线帮助。
明确变量类型
如果你还没有做准备,你就应该在VB的工程中声明变量和目标的类型。
从Tools单中选Options项,在Options对话框中点中RequireVariableDeclaration,在任何一个新表或模块中都会具有这个设置。
在声明段,你的微不足道的变量和目标声明工作将换来少测试和高效的表。
1.51.4MapObjects的数据源
你可通过MapObjects使用形文件,图像文件,属性表或通过ESRI的专用数据库引擎连接的专用数据库。
形文件是地图数据的矢量形式,图像文件是栅格图像或尤指航空或卫量的畸变图像的纠正照片,属性表是可用ODBC装入的任意格式。
专用数据库是网络上通过ESRI专用数据库引擎连接的UNIX服务器。
形文件适用于中小型地图数据。
而大型数据(省,国家道路网),你就需使用专用数据库。
用MapObjects编写的软件是可伸缩的。
最初你可用形文件。
当用户需要与大型数据库连接时,几乎所有代码都可被移到与专用数据库连接后的工作中,你仅需修改打开数据源的几行代码。
形文件
形文件是ESRI提供的存储地理数据的矢量格式。
这就意味着地图元素以X,Y形式出现。
其坐标系是笛卡尔坐标。
注意,笛卡尔坐标与屏幕坐标有所不同。
每一元素的几何形状以包括一组矢量坐标的形的形式存储。
其属性存放在与形文件相连的dBASE的记录中。
以下是得到形文件的不同方法。
▪▪ 购卖商业地图数据。
▪▪ MapObjects提供的光盘。
▪▪ ARcView,ARC/INFO等ESRI产品的数据。
▪▪ 编写程序从其它格式中转换。
一个形文件由三种文件组成,主文件(*.shp)包含几何形状。
索引文件(*.shx)包含数据的索引。
数据库文件(*.dbf)包含形的属性,你可以修改字段的定义。
每一个形文件包含一种类型(点弧多边形)
▪▪ 点有一个(X,Y)坐标和一个属性。
▪▪ 弧段包含一条或一组(可连,可不连)的多义线。
一条多义线是一组有序结点。
每一弧段有一个属性记录。
▪▪ 多边形包括一个或多个边界,一个边界是一个无交叉点的闭合环,一个边界可嵌于一多边形中而形成环形。
边界的方向决定它是否代表区域内的面积。
每一多边形有一属性记录。
形文件通过ODBC读入,ODBC在装MapObjects的同时被装入并注册。
ARC/INFO用户应注意形文件中弧,多边形的定义不同于ARC/INFOcoverage中的定义。
形文件无拓扑,因此,形文件允许你集合简单元素来合成元素。
如,把几条polyoline会成arc。
通过形文件,你可快速显示图形并具有一简单数据模型;以简单数据模型换取快速显示,这使得对形文件进行拓扑编辑或高级分析变得十分困难。
形文件是一种通用格式,如果你想编写程序直接读写形文件,你可以从ESRI网点上下载ArcViewV2.0形文件描述。
图像(Image)文件
你可通过MapObjects编写应用程序来显示多种图像文件。
在地图中图像多来自航空照片和卫星图像。
图像文件依靠带有灰度值或色标的一组像元来表示图片,这些像元无属性连接,其坐标系统与形文件不同。
你可把图像文件精确重叠于大地坐标的形文件。
MapObjects(或其它ESRI软件)用worldfiles来配准图像。
一个world文件是一个简单的文本文件,它包括数学参数来定义转换关系,其公式为:
x'=Ax+By+C
y'=Dx+Ey+F
x'像元在地图上的计算坐标值X。
y'像元在地图上的计算坐标值Y。
x像元列数。
y像元行数。
AX轴上像元的尺寸。
B,D旋转关系项。
E负的Y轴上像元的尺寸。
C,F左上角像元中心的XY地图坐标。
注意E为"负"值,因为,形文件坐标与图像坐标Y方向正向反。
world文件是包含A,B,C,D,E,F值的连续行文本文件。
注意MapObjects不支持图像旋转。
这样B,D的值在world文件中是被忽略的。
为果需要旋转,你可用ESRI的ARCGRID。
以下是MapObjects支持的图像文件格式。
名称描述扩展名Worldfile扩展名
BMPWindowsbitmap*.bmp*.bpw
TIFFTagimagefile*.tif*.tfw
SUNSunrasterfile*.sun*.snw
ERDASERDASGISorLAN*.gis*.gsw
IMPELLIMPELLbitmap*.rls*.rlw
BILBandinterleavedbyline*.bil*.blw
BIPBandinterleavedbypixel*.bip*.bpw
BSQBandsequential*.bsq*.bqw
属性表
用MapObjects编写的应用程序,可通过一种关系与外部属性表相连。
关系是连接元素表(元素表可是形文件的dBASE表,也可是从SDE层中得到的表)与属性表的表。
为了这种连接,可安装ODBC。
这种关系留存于应用程序运行期间,它不会被写入文件中。
要建立这种关系。
你要确认一个元素表的某一字段,一个要与之建立关系的属性表和该属性表的一个字段。
属性表的相关字段必须是primarykey或允许在其上建立一独一无二的索引。
有一例外,在少于100个记录的小型元素表上可建立无特殊字段的关系。
一旦建立了关系,它就在元素表上建立了一种纽带,你可通过属性表的字段查询属性,但你不能在MapObjects中通过SQL表达式向里面增加数据。
空间数据引擎
如果你采用大规模地图数据组来组织工作,见意考虑使用空间数据引擎(SDE),一种高性能制图数据服务器。
通过SDE,空间数据可存放于UNIX服务器上。
用户的SDE应用程序可基于UNIX或WIN环境被编写,SDE提供软件开发和数据管理能力:
▪▪ 管理大规模地理数据,提供地图无缝显示。
▪▪ 通过某种商业关系数据库存储数据。
▪▪ 通过一组高效的尖端空间数据操作来查询空间数据。
SDE包括一个C语言应用程序接口(API),它提供最大能力的执行效率和极大的灵活性。
下一章,我们将详细解绍与SDE的连接。
1.61.5纵览MapObjects
MapObjects包含一组具有属性,事件和方法的目标。
你已经看到你可通过地图控件快速建立一简单应用程序,但实际的应用中,需要使用OLEAutomationobjects。
当你初次使用MapObjects你应了解这些目标、属性和方法。
这些对于MapObjects的全部组织是非常有用的。
MapObjects的目标分为四组:
▪▪ 数据通道目标组
▪▪ 地图显示目标组
▪▪ 几何图形目标组
▪▪ 地址匹配目标组
数据通道目标组
通过数据通道目标组,你能建立与地图数据的联系。
增加属性值,从地图元素上反馈属性信息。
数据通道目标组由以下部件组成:
数据连接(DataConnection)目标是MapObjects通向地图数据的通道。
它包括属性和方法来建立与地理数据集合(GeoDatasets)的联系。
地理数据集合(GeoDataset)目标代表制图数据并可引用图层。
它可引用形文件或SDElayer的数据。
地理数据集合是对于一个数据连接的所有地理数据集合目标的总合。
它是一特定文件夹中所有形文件或SDE数据库中所有SDE层。
记录集合(Recordset)目标代表一个图层的记录。
如果你做了一个选择集,它就代表所选记录。
它类似于数据库指针。
TableDesc目标给你关于与记录集相连的表的字段的信息。
表(Table)目标是一个只读数据通道目标。
它代表来自ODBC数据源的一个表单。
你可增加一表作为与图层目标的关联或为了大批地址匹配。
字段集合包括记录集目标的字段目标。
统计目标代表关于一个记录集的简单统计信息。
你首先应用一方法计算关于记录集的统计值,然后可在统计目标中检查结果。
字串集合是一组标准字符串数据类型集合。
你可通过它从其它目标中取值来自接口控件(如列表框)中增加数据。
地图显示目标组
通过地图显示目标组,你能用符号或专题描述画一张地图。
你也可加入图像做为背景,在地图上显示动态数据。
地图显示目标组由以下部件组成:
地图控件使你能显示图层、图像层,和动态跟踪图层目标,你可编写代码来控制鼠标驱动绘图事件,设置显示参数,用方法可画元素,闪烁选择的元素,计算点与元素的距离,输入线,圆,三角。
层(Layer)集合是服务于地图控件的图层目标和影像层目标的集合。
图层目标代表带有一些显示属性的地理数据集合目标。
它可让你处理专题地图,此目标有几个方法来查找和选择地理元素。
图像层目标代表一作为地图控件上的背景的影像文件。
动态跟踪图层(TrackingLayer)目标让你能动态拖拽元素而无需重显。
这对实时数据获取是十分理想的(如GPS)。
它也可用于显示基本几何形状(如三角、圆)和描述性文本。
它们都不是地图数据的一部分。
GeoEvent目标代表可加到TrackingLayer目标上的点元素。
符号(symbol)目标是广泛使用的目标,它影响如何在地图上显示元素的许多方面。
其属性包括:
颜色、字形、大小、形状。
文本(Textsymbol)目标代表文本的某些属性(如准线、字型)
ClassBreaksRenderer目标使你能在图层目标中通过分类的办法依数值字段显示元素。
ValueMapRender目标使你在图层目标中通过特殊字段中单独的值,用符号来显示元素。
LableRenderer目标使你在图层目标中,依元素的某一字段的属性标注文本。
几何图形目标组
几何图形目标组提供几种功效:
依从图层中选择的元素反馈几何信息;向图层添加几何目标;向地图中画几何目标而不更新图层。
几何图形目标组由以下部件组成:
矩形(Rectangle)目标经常用来设置和反馈地图范围,也用来画矩形。
点集合存贮线和多边形目标的坐标。
点目标代表具有X、Y坐标的点。
线目标代表地图上的一条线。
多边形目
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MapObjects 中文 指导