上节总结: 1、 Geosets: Geoset保存了地图图层的集合和用户设置。扩展名是gst.g 文件是文本文件,它包含若干用来告诉MapX显示什么表以及如何显示的元数据 键值。 Geoset设置包括投影、默认缩放值、对象的自动标注、缩放范围以及打 开的表是否可见。 2、Map对象:每个MapX的对象、属性和方法都衍生于Map对象。每个在 Map对象之下的属性和方法都会对生成整个Map对象有所影响。主要是由 DataSets、 Layers和 Annotations对象定义每一个Map对象。 3、 GeoDictionary:利用MapX作数据绑定或创建专题地图时,可以用 哪 GeoDictionary来匹配数据源与地图图层。 GeoDictionary是一个保存了关于 个地图图层可以匹配、哪个字段可以用作匹配字段的信息文件(一般命名为 geodic.dct)。如果想运用自动匹配/自动绑定,则必须在 GeoDictionary中 注册文件。 MapX geodictionary程序允许把新的 Mapinfo表注册到 GeoDictionary中。同时,在 MapX geoDictionary中,单击注册表.按钮,然 后选择要注册的表,设置表属性并为其输入描述。如果要想自动地把这张表加 载到 GeoSet中,单击添加按钮然后选择要把表添加进的 GeoSet Page 2 MapI p Info
Page 2 1、Geosets:Geoset 保存了地图图层的集合和用户设置。扩展名是.gst。.gst 文件是文本文件,它包含若干用来告诉MapX显示什么表以及如何显示的元数据 键值。Geoset设置包括投影、默认缩放值、对象的自动标注、缩放范围以及打 开的表是否可见。 2、Map对象:每个MapX 的对象、属性和方法都衍生于Map对象。每个在 Map 对象之下的属性和方法都会对生成整个Map对象有所影响。主要是由 DataSets、Layers 和 Annotations 对象定义每一个Map对象。 3、GeoDictionary:利用MapX作数据绑定或创建专题地图时,可以用 GeoDictionary来匹配数据源与地图图层。GeoDictionary是一个保存了关于哪 个地图图层可以匹配、哪个字段可以用作匹配字段的信息文件(一般命名为 geodict.dct)。如果想运用自动匹配/自动绑定,则必须在 GeoDictionary中 注册文件。MapX GeoDictionary程序允许把新的MapInfo表注册到 GeoDictionary中。同时,在MapX GeoDictionary中,单击注册表…按钮,然 后选择要注册的表,设置表属性并为其输入描述。如果要想自动地把这张表加 载到GeoSet中,单击添加按钮然后选择要把表添加进的GeoSet。 上节总结:
4、 Layers集合与 Layer对象: 图层类型:1ayer.type 确定图层中图元类型:1ayer. Predominant Type 图层标注: layer. LabelProperties 注释( Annotations集合) 栅格图像:使用MapX可以将栅格图像(位图)作为所创建地图的背景显示。但 是栅格图像必需首先成为 MapInfo表的一部分。然后可以在图像的上方覆盖另 外的数据,如街道地图和客户位置。图像只能作为背景或衬垫来观看。 5、 Features和 Selections: 地图图层中的所有图元及其所有子集表示为 Features集合。 Selection集合表示当前已选中的 Feature对象。 Feature对象: Feature.atch-把独立的图元附加到地图上,使得地图的坐标 系适用于该图元。 Page 3 E MapInfo
Page 3 4、Layers集合与Layer对象: 图层类型:layer.type 确定图层中图元类型:layer.PredominantFeatureType 图层标注:layer.LabelProperties 注释(Annotations 集合): 栅格图像:使用MapX可以将栅格图像(位图)作为所创建地图的背景显示。但 是栅格图像必需首先成为MapInfo表的一部分。然后可以在图像的上方覆盖另 外的数据,如街道地图和客户位置。图像只能作为背景或衬垫来观看。 5、Features和Selections: 地图图层中的所有图元及其所有子集表示为Features集合。 Selection集合表示当前已选中的Feature对象。 Feature对象:Feature.attach-把独立的图元附加到地图上,使得地图的坐标 系适用于该图元
图元编辑: Feature Factory对象一在现存图元的基础上创建新的图元 返回的图元不需要再使用 Attach方法 6、工具:创建自定义工具时,需要控制创建工具的“类型”,即:就是要选 形等等;也可以选择使用自定义工具时显示的光或是单击并拖动来画矩 择此工具是否允许用户单击,或是单击并拖动来画线 设置插入图层:Map.1 ayers. Insertion Layer属性指定的任一图层上,之后才 可以用添加点、添加线、添加折线和添加区城等对象编辑工具在地图图层中创 建和修改图元。在使图层成为 Insertionlayer之前,一定要设置该图层的可编 辑属性为True 创建自定义工具:可首先声明一个全局常量来代表该工具 Const rUlertoolid=500 ToolNumber、Type和Cu urso MouseDown、 MouseMove-事件; ToolUsed事件 Page 4 E MapInfo
Page 4 图元编辑:FeatureFactory对象-在现存图元的基础上创建新的图元 返回的图元不需要再使用Attach方法。 6、工具:创建自定义工具时,需要控制创建工具的“类型”,即:就是要选 择此工具是否允许用户单击,或是单击并拖动来画线,或是单击并拖动来画矩 形等等;也可以选择使用自定义工具时显示的光标。 设置插入图层:Map.layers.InsertionLayer属性指定的任一图层上,之后才 可以用添加点、添加线、添加折线和添加区域等对象编辑工具在地图图层中创 建和修改图元。在使图层成为InsertionLayer之前,一定要设置该图层的可编 辑属性为True。 创建自定义工具:可首先声明一个全局常量来代表该工具 Const RULERTOOLID = 500 ToolNumber、Type 和 Cursor MouseDown、MouseMove事件;ToolUsed事件
第八讲MapX应用开发 、数据绑定 11 Datase对象和 Data Sets集合 12使用 Fields集合 13将数据显示为点图层( Bindlayer) 14使用 GeoDictionary进行数据绑定 15访问远程空间数据及属性数据 Page 5 E MapInfo
Page 5 一、数据绑定 1.1 DataSet对象和DataSets集合 1.2 使用 Fields集合 1.3 将数据显示为点图层(BindLayer) 1.4 使用GeoDictionary进行数据绑定 1.5 访问远程空间数据及属性数据 •第八讲 MapX应用开发
第八讲MapX应用开发 专题制图 2 Themes集合及专题地图类型 22操作专题地图 三、逐层细化图层 31准备“逐层细化”图层 3创建逐层细化和“卷起”工具 四、地图输出及MapX应用程序发布 4.1输出、打印地图 42应用程序发布 Page 6 E MapInfo
Page 6 •第八讲 MapX应用开发 二、专题制图 2.1 Themes 集合及专题地图类型 2.2 操作专题地图 三、逐层细化图层 3.1 准备“逐层细化”图层 3.2 创建逐层细化和“卷起”工具 四、地图输出及MapX应用程序发布 4.1 输出、打印地图 4.2 应用程序发布
、数据绑定 11 DataSet对象和 Data sets集合 1、数据绑定的概念: 将数据从数据源放入MapX的处理过程 °能在地图上以图元浏览数据; 可首先向地图绑定属性数据,然后基于这些数据创建专题渲染地图。 数据源可以是 Visual basic数据控件,或是0DBC数据源。在MapX中,数 据由 DataSet对象表示。如果有 Visual basic的绑定数据控件,就可以在设 计时使用Map对象的 DataSet属性;或者通过使用 DataSets.Ad方法编程来 绑定数据。 结果:创建 DataSe对象 Page 7 MapI p Info
Page 7 •一、数据绑定 1.1 DataSet对象和DataSets集合 1、数据绑定的概念: 将数据从数据源放入MapX的处理过程 • 能在地图上以图元浏览数据; • 可首先向地图绑定属性数据,然后基于这些数据创建专题渲染地图。 数据源可以是Visual Basic数据控件,或是ODBC数据源。在MapX中,数 据由DataSet对象表示。如果有Visual Basic的绑定数据控件,就可以在设 计时使用Map对象的DataSet属性;或者通过使用DataSets.Add方法编程来 绑定数据。 结果:创建DataSet对象
2、数据源 DataSource DataSource参数⑩ ataSets.Add的第二个参数)实际上是一个OLE接口 MapX通过接口直接从数据源访问数据。数据并没有真正传给 Datasets.Addo 下面是详细的几种数据源: miDatasetDAO-DA0数据集( Data Access Object Recordset) DataSets.Ad的 DataSource必须是一个DA0数据集对象.可以从 Visua1 Basic的数据控件, Access窗体,或是 Visua1 Basic, Access,C++中创建 一个数据集。 miData SetODBC一ODBC数据连接( Open Data Base Connectivity data source).MapX可以通过ODBC从任意ODBC数据源中获取数据。需要指定 连接字符串,数据源名称,使用 ODBCQueryInfo执行的SQL查询语句 ( ODBCQuerylnfo包含连接ODBC数据源的信息) . miData Set Layer-如果 Dataset的类型是 miDataSetLayer ,那么参考 Maplnfo Table表中的字段创建 Dataset,则 SoureData参数项必须是一个 Layer对象。 Page 8 MapI p Info
Page 8 2、数据源DataSource DataSource参数(DataSets.Add的第二个参数)实际上是一个OLE接口。 MapX 通过接口直接从数据源访问数据。数据并没有真正传给DataSets.Add。 下面是详细的几种数据源: • .miDataSetDAO-DAO 数据集 ( Data Access Object Recordset). DataSets.Add 的DataSource必须是一个DAO数据集对象.可以从Visual Basic的数据控件,Access窗体,或是Visual Basic, Access, C++中创建 一个数据集。 • .miDataSetODBC-ODBC数据连接(Open DataBase Connectivity data source). MapX可以通过ODBC从任意ODBC数据源中获取数据。需要指定 连接字符串,数据源名称,使用ODBCQueryInfo执行的SQL查询语句 (ODBCQueryInfo包含连接ODBC数据源的信息)。 • . miDataSetLayer-如果 Dataset的 类型是 miDataSetLayer , 那么参考 MapInfo Table表中的字段创建Dataset,则SoureData参数项必须是一个 Layer对象
miDataSetGlobalhandle-引入以tab制表符为界的数据块。 Datasetado 的 Source Data参数必须是一个类型为VTI4的变体设置以及等同于全局内 存句柄的val。在全局内存块中每行的数据格式为: field taB field taB field crlF其中feld是带引号的字符串,或是不带引号的数值,TAB键的值 是0x09,CRLF值是0x0D0x0A . miDataSetolEData-这是用于 Powerbuilder这样的控件容器的数据源 当初始化MapX控件时,PB将以 miDataglobalhandle格式存在的数据传输 给MapX。之后调用 DataSets. Add方法,数据源类型显 miData SetolEData 为先前传入的数据创建 Dataset o miDataSetUnbound-如果不支持前面提到的数据源,MapX提供一个 “后门”。这种类型允许MapX通过建立事件循环向MapX控件容器请求数 据,每次一个单元。MapX将提供 RequestData事件以数据单元的行号列号。 这样就可以使用任何方式获取数据同时通过这个事件把它传给MapX RDO: remote data object ADO: Activex data object Page 9 MapI p Info
Page 9 • .miDataSetGlobalHandle – 引入以tab制表符为界的数据块。Dataset.add 的SourceData参数必须是一个类型为VT_I4 的变体设置以及等同于全局内 存句柄的lVal 。在全局内存块中每行的数据格式为:field TAB field TAB field CRLF其中field是带引号的字符串,或是不带引号的数值,TAB键的值 是0x09, CRLF 值是0x0D 0x0A. • .miDataSetOLEData – 这是用于Powerbuilder这样的控件容器的数据源, 当初始化MapX控件时,PB将以miDataGlobalHandle格式存在的数据传输 给MapX。之后调用DataSets.Add方法,数据源类型显miDataSetOLEData 为先前传入的数据创建Dataset。 • .miDataSetUnbound – 如果不支持前面提到的数据源,MapX 提供一个 “后门” 。这种类型允许MapX 通过建立事件循环向MapX控件容器请求数 据,每次一个单元。MapX将提供RequestData 事件以数据单元的行号列号。 这样就可以使用任何方式获取数据同时通过这个事件把它传给MapX。 RDO: remote data object ADO: ActiveX data object
3、 DataSe对象和 DataSets集合 Datase对象是在从数据源向MapX绑定数据的过程中生成的。 Datase包含了数据绑定的地图图层中图元的计算过的值。数据源 可能是DAO记录集,ODBC数据源等形式。 DataSets集合是代表地图中所有 Dataset的对象。 DataSets集合的 方法和属性用来添加、删除 Dataset对象,或者在集合中使用现有的 DataSet对象。 Datasets. Add一可向MapX绑定来自数据源的数据,使外部数据源和 地图建立联系。 DataSets. Add Type, SourceData, [Name], [Geofield] L SecondaryGeofield], [BindLayerl, [fields], [dynamic] Datasets. Remove Page 10 E MapInfo
Page 10 3、DataSet对象和DataSets集合 DataSet对象是在从数据源向MapX绑定数据的过程中生成的。 DataSet包含了数据绑定的地图图层中图元的计算过的值。数据源 可能是 DAO 记录集,ODBC数据源等形式。 DataSets 集合是代表地图中所有DataSet的对象。DataSets集合的 方法和属性用来添加、删除 Dataset 对象,或者在集合中使用现有的 DataSet 对象。 Datasets.Add-可向MapX绑定来自数据源的数据,使外部数据源和 地图建立联系。 • DataSets.Add Type, SourceData, [Name], [Geofield], [SecondaryGeofield], [BindLayer], [Fields], [Dynamic] • Datasets.Remove
(1)Type参数 Datase类型 有效源数据 此参数用来说明所添加类mD0AD要 的值。 uiDataSetDAO DAORecordset对象 (2) SourceData参数 muiDataSetDelphis Delphi Native+ miDataSetDelphi4 e Delphi4记录集 该参数用来引用数据, miDataSetGlobalHandle-VT_求业的变量且I相当手金局内存句柳 (3)Name参数 miDataSetNotesQuery Lotus Notes Querye miDataSetNotes view+ otus Notes view+ 该参数为唯一标识数据绳m0Dc0Qw对象 DataSet 其中“N”为Dmao 诀省名为 Oracle express对象 mD2 taSetoLEData被DeAd忽略 (4) Geofield参数 RDO表格 muiDataSetsafeArraye Safe Array+ 该参数是数据源中包含邮 无类型(对应地,使用 RequestData事件访问只有程序员知 的数据格式) 则MapX 搜索所有字段,以决定数据源中哪一列包含了 GeoDictionary中指定的地理信 。如果要在地图上查看图元数据,那么数据源中的 GeoFleld列必须是唯一的。 GeoField列用来为新点层的图元命名。 Page 11 MapI p Info
Page 11 (1)Type参数 此参数用来说明所添加数据集的类型。它获取DataSetTypeConstants的值。 (2)SourceData参数 该参数用来引用数据,随Dataset类型的不同而不同。 (3)Name参数 该参数为唯一标识数据集的字符串。属于可选参数,如果不指定,则缺省名为 DataSetN,其中“N”为Datasets集合中的数字。 (4)Geofield参数 该参数是数据源中包含地理信息的列名称或索引。如果该参数未指定,则MapX 搜索所有字段,以决定数据源中哪一列包含了GeoDictionary中指定的地理信 息。如果要在地图上查看图元数据,那么数据源中的GeoField列必须是唯一的。 GeoField列用来为新点层的图元命名