【测绘课件】第八讲MapX应用开发

上传人:仙*** 文档编号:178903510 上传时间:2022-12-30 格式:PPT 页数:95 大小:721.54KB
返回 下载 相关 举报
【测绘课件】第八讲MapX应用开发_第1页
第1页 / 共95页
【测绘课件】第八讲MapX应用开发_第2页
第2页 / 共95页
【测绘课件】第八讲MapX应用开发_第3页
第3页 / 共95页
点击查看更多>>
资源描述
Page 1MapInfo概论概论第一讲第一讲 MapInfo简介及基本概念简介及基本概念第二讲第二讲 MapInfo基本操作基本操作表表第三讲第三讲 MapInfo查询及分析查询及分析第四讲第四讲 空间分析及属性信息图形化空间分析及属性信息图形化第五讲第五讲 OLE 嵌入与嵌入与MapBasic 简介简介第六讲第六讲 MapInfo集成地图开发集成地图开发第七讲第七讲 组件式组件式GIS与与MapX基础基础第八讲第八讲 MapX应用开发应用开发Page 21 1、GeosetsGeosets:Geoset 保存了地图图层的保存了地图图层的集合和用户设置集合和用户设置。扩展名是扩展名是.gstgst。.gst.gst文件是文件是文本文件文本文件,它包含若干用来告诉,它包含若干用来告诉MapXMapX显示什么表以及如何显示的元数据显示什么表以及如何显示的元数据键值。键值。GeosetGeoset设置包括投影、默认缩放值、对象的自动标注、缩放范围以及打设置包括投影、默认缩放值、对象的自动标注、缩放范围以及打开的表是否可见。开的表是否可见。2 2、MapMap对象:对象:每个每个 MapX 的对象、属性和方法都衍生于的对象、属性和方法都衍生于 Map对象。每个在对象。每个在 Map 对象之下的属性和方法都会对生成整个对象之下的属性和方法都会对生成整个 Map对象有所影响。主要是由对象有所影响。主要是由 DataSets、Layers 和和 Annotations 对象定义每一个对象定义每一个 Map对象。对象。3 3、GeoDictionaryGeoDictionary:利用利用MapXMapX作数据绑定或创建专题地图时,可以用作数据绑定或创建专题地图时,可以用 GeoDictionaryGeoDictionary来来匹配数据源与地图图层匹配数据源与地图图层。GeoDictionaryGeoDictionary是一个保存了关于哪是一个保存了关于哪个地图图层可以匹配、哪个字段可以用作匹配字段的信息文件(一般命名为个地图图层可以匹配、哪个字段可以用作匹配字段的信息文件(一般命名为geodict.dctgeodict.dct)。)。如果想运用自动匹配如果想运用自动匹配/自动绑定,则必须在自动绑定,则必须在 GeoDictionaryGeoDictionary中中注册文件注册文件。MapXMapX GeoDictionaryGeoDictionary程序允许把新的程序允许把新的MapInfoMapInfo表注册到表注册到GeoDictionaryGeoDictionary中。同时,在中。同时,在MapXMapX GeoDictionaryGeoDictionary中,单击注册表中,单击注册表按钮,然按钮,然后选择要注册的表,设置表属性并为其输入描述。如果要想自动地把这张表加后选择要注册的表,设置表属性并为其输入描述。如果要想自动地把这张表加载到载到GeoSetGeoSet中,单击中,单击添加添加按钮然后选择要把表添加进的按钮然后选择要把表添加进的GeoSetGeoSet。上节总结:上节总结:Page 34 4、LayersLayers集合与集合与LayerLayer对象:对象:图层类型:图层类型:layer.typelayer.type确定图层中图元类型:确定图层中图元类型:layer.layer.PredominantFeatureType图层标注:图层标注:layer.LabelPropertieslayer.LabelProperties注释(注释(Annotations Annotations 集合):集合):栅格图像:使用栅格图像:使用MapXMapX可以将栅格图像(位图)作为所创建地图的背景显示。但可以将栅格图像(位图)作为所创建地图的背景显示。但是栅格图像必需首先成为是栅格图像必需首先成为MapInfoMapInfo表的一部分。然后可以在图像的上方覆盖另表的一部分。然后可以在图像的上方覆盖另外的数据,如街道地图和客户位置。外的数据,如街道地图和客户位置。图像只能作为背景或衬垫来观看图像只能作为背景或衬垫来观看。5 5、FeaturesFeatures和和SelectionsSelections:地图图层中的所有图元及其所有子集表示为地图图层中的所有图元及其所有子集表示为FeaturesFeatures集合。集合。SelectionSelection集合表示当前已选中的集合表示当前已选中的FeatureFeature对象。对象。FeatureFeature对象:对象:Feature.Feature.attach把独立的图元附加到地图上,使得地图的坐标把独立的图元附加到地图上,使得地图的坐标系适用于该图元。系适用于该图元。Page 4图元编辑:图元编辑:FeatureFactory对象对象在现存图元的基础上创建新的图元在现存图元的基础上创建新的图元 返回的图元不需要再使用返回的图元不需要再使用AttachAttach方法。方法。6 6、工具:创建自定义工具时,需要控制创建工具的、工具:创建自定义工具时,需要控制创建工具的“类型类型”,即:就是要选,即:就是要选择此工具是否允许用户单击,或是单击并拖动来画线,或是单击并拖动来画矩择此工具是否允许用户单击,或是单击并拖动来画线,或是单击并拖动来画矩形等等;也可以选择使用自定义工具时显示的光标。形等等;也可以选择使用自定义工具时显示的光标。设置插入图层:设置插入图层:Map.layers.Map.layers.InsertionLayer属性指定的任一图层上,之后才属性指定的任一图层上,之后才可以用可以用添加点添加点、添加线、添加折线添加线、添加折线和和添加区域等添加区域等对象编辑工具对象编辑工具在地图图层中创在地图图层中创建和修改图元。在使图层成为建和修改图元。在使图层成为InsertionLayerInsertionLayer之前,一定要设置该图层的可编之前,一定要设置该图层的可编辑属性为辑属性为TrueTrue。创建自定义工具:可首先声明一个全局常量来代表该工具创建自定义工具:可首先声明一个全局常量来代表该工具Const RULERTOOLID=500 Const RULERTOOLID=500 ToolNumber、Type 和和 Cursor MouseDownMouseDown、MouseMoveMouseMove事件;事件;ToolUsedToolUsed事件事件 Page 5一、数据绑定一、数据绑定 1.1 DataSet对象和对象和DataSets集合集合 1.2 使用使用 Fields集合集合 1.3 将数据显示为点图层(将数据显示为点图层(BindLayer)1.4 使用使用GeoDictionaryGeoDictionary进行数据绑定进行数据绑定 1.5 访问远程空间数据及属性数据访问远程空间数据及属性数据 第八讲第八讲 MapX应用开发应用开发Page 6第八讲第八讲 MapX应用开发应用开发二、专题制图二、专题制图 2.1 Themes 集合集合及专题地图类型及专题地图类型 2.2 操作专题地图操作专题地图 三、逐层细化图层三、逐层细化图层 3.1 准备准备“逐层细化逐层细化”图层图层 3.2 创建逐层细化和创建逐层细化和“卷起卷起”工具工具 四、地图输出及四、地图输出及MapX应用程序发布应用程序发布 4.1 输出、打印地图输出、打印地图 4.2 应用程序发布应用程序发布 Page 7一、数据绑定一、数据绑定1.1 DataSet对象和对象和DataSets集合集合 1 1、数据绑定的概念:、数据绑定的概念:将数据从将数据从数据源数据源放入放入MapX的处理过程的处理过程 能在地图上以图元浏览数据;能在地图上以图元浏览数据;可首先向地图绑定属性数据,然后基于这些数据创建专题渲染地图。可首先向地图绑定属性数据,然后基于这些数据创建专题渲染地图。数据源可以是数据源可以是Visual BasicVisual Basic数据控件,或是数据控件,或是ODBCODBC数据源。在数据源。在MapXMapX中,数中,数据由据由DataSetDataSet对象表示。如果有对象表示。如果有Visual BasicVisual Basic的绑定数据控件,就可以在设的绑定数据控件,就可以在设计时使用计时使用MapMap对象的对象的DataSetDataSet属性;或者通过使用属性;或者通过使用DataSets.AddDataSets.Add方法编程来方法编程来绑定数据。绑定数据。结果:结果:创建创建DataSetDataSet对象对象Page 82 2、数据源数据源DataSourceDataSource DataSourceDataSource参数参数(DataSets.AddDataSets.Add的第二个参数的第二个参数)实际上是一个实际上是一个OLEOLE接口。接口。MapXMapX 通过接口直接从数据源访问数据。数据并没有真正传给通过接口直接从数据源访问数据。数据并没有真正传给DataSets.AddDataSets.Add。下面是详细的几种数据源:下面是详细的几种数据源:.miDataSetDAODAODAO数据集数据集(Data Access Object Data Access Object RecordsetRecordset).).DataSets.AddDataSets.Add 的的DataSourceDataSource必须是一个必须是一个DAODAO数据集对象数据集对象.可以从可以从Visual Visual BasicBasic的数据控件,的数据控件,AccessAccess窗体,或是窗体,或是Visual Basic,Access,C+Visual Basic,Access,C+中创建中创建 一个数据集。一个数据集。.miDataSetODBCODBC数据连接数据连接(Open DataBase Connectivity data source).MapX可以通过可以通过ODBC从任意从任意ODBC数据源数据源中获取数据。需要指定中获取数据。需要指定连接字符串,数据源名称,使用连接字符串,数据源名称,使用ODBCQueryInfo执行的执行的SQL查询语句查询语句(ODBCQueryInfo包含连接包含连接ODBC数据源的信息数据源的信息)。.miDataSetLayer如果如果Dataset的类型是的类型是miDataSetLayer,那么参考那么参考MapInfo Table表表中的字段创建中的字段创建Dataset,则则SoureData参数项必须是一个参数项必须是一个Layer对象。对象。Page 9.miDataSetGlobalHandle 引入以引入以tab制表符制表符为界的数据块。为界的数据块。Dataset.add的的SourceData参数必须是一个类型为参数必须是一个类型为 VT_I4 的变体设置以及等同于全局内的变体设置以及等同于全局内存句柄的存句柄的lVal。在全局内存块中每行的数据格式为:在全局内存块中每行的数据格式为:field TAB field TAB field CRLF其中其中field是带引号的字符串,或是不带引号的数值,是带引号的字符串,或是不带引号的数值,TAB键的值键的值是是0 x09,CRLF 值是值是0 x0D 0 x0A.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 Page 103 3、DataSet对象和对象和DataSets集合集合 DataSet对象是在从数据源向对象是在从数据源向MapX绑定数据的过程中生成的。绑定数据的过程中生成的。DataSet包含了数据绑定的地图图层中图元的计算过的值。数据源包含了数据绑定的地图图层中图元的计算过的值。数据源可能是可能是 DAO 记录集,记录集,ODBC 数据源等形式。数据源等形式。DataSets 集合是代表地图中所有集合是代表地图中所有DataSet的对象。的对象。DataSets集合的集合的方法和属性用来添加、删除方法和属性用来添加、删除 Dataset 对象,或者在集合中使用现有的对象,或者在集合中使用现有的 DataSet 对象。对象。Datasets.Add可向可向MapXMapX绑定来自数据源的数据,使外部数据源和绑定来自数据源的数据,使外部数据源和地图建立联系。地图建立联系。DataSets.Add Type,Type,SourceDataSourceData,Name,Name,GeofieldGeofield,SecondaryGeofieldSecondaryGeofield,BindLayerBindLayer,FieldsFields,Dynamic,Dynamic Datasets.RemovePage 11(1 1)TypeType参数参数此参数用来说明所添加数据集的类型。它获取此参数用来说明所添加数据集的类型。它获取DataSetTypeConstantsDataSetTypeConstants的值。的值。(2 2)SourceDataSourceData参数参数该参数用来引用数据,随该参数用来引用数据,随DatasetDataset类型的不同而不同。类型的不同而不同。(3 3)NameName参数参数 该参数为唯一标识数据集的字符串。属于可选参数,如果不指定,则缺省名为该参数为唯一标识数据集的字符串。属于可选参数,如果不指定,则缺省名为DataSetNDataSetN,其中其中“N”N”为为DatasetsDatasets集合中的数字集合中的数字。(4 4)GeofieldGeofield参数参数 该参数是数据源中包含地理信息的列名称或索引。如果该参数未指定,则该参数是数据源中包含地理信息的列名称或索引。如果该参数未指定,则MapXMapX搜索所有字段,以决定数据源中哪一列包含了搜索所有字段,以决定数据源中哪一列包含了GeoDictionaryGeoDictionary中指定的地理信中指定的地理信息。息。如果如果要要在地图上查看图元数据,那么数据源中的在地图上查看图元数据,那么数据源中的GeoFieldGeoField列必须是唯一的。列必须是唯一的。GeoFieldGeoField列用来为新点层的图元命名。列用来为新点层的图元命名。Page 12(5 5)Secondary Secondary GeofieldGeofield 参数参数此参数只有当绑定数据集的图层存在不唯一关键列时才需要。此参数只有当绑定数据集的图层存在不唯一关键列时才需要。(6 6)BindLayerBindLayer参数参数 如果正在绑定属性数据,则此参数如果正在绑定属性数据,则此参数指定和数据连接的地图图层指定和数据连接的地图图层;匹配;匹配 BindLayerBindLayer时,时,GeofieldsGeofields必须唯一。必须唯一。(7 7)FieldsFields参数参数该参数是该参数是FieldField对象集合中的对象集合中的FieldsFields对象。对象。FieldField对象用来描述对象用来描述导入数据源的字导入数据源的字段段,以及当匹配特定地图图元的数据源记录多于一个时,使用聚合函数是求和、,以及当匹配特定地图图元的数据源记录多于一个时,使用聚合函数是求和、求平均值或计数。求平均值或计数。(8 8)DynamicDynamic参数参数 该参数的值为布尔型,控制数据绑定是否是动态的。它是可选的,未指定时默该参数的值为布尔型,控制数据绑定是否是动态的。它是可选的,未指定时默认为认为FalseFalse,即静态绑定数据。即静态绑定数据。Page 13一、数据绑定一、数据绑定1.2 使用使用Fields集合集合 数据源有多个数据列,数据源有多个数据列,MapX管理绑定的每一列数据,因此应当只绑定地管理绑定的每一列数据,因此应当只绑定地图上所需的数据(例如,想要进行专题化地图或标注用的数据)。用图上所需的数据(例如,想要进行专题化地图或标注用的数据)。用DataSets.Add()的的Fields参数来建立要绑定到地图的字段(列)的参数来建立要绑定到地图的字段(列)的Fields集合。集合。注意:注意:声明字段变量时使用声明字段变量时使用“MapXLib.Fields”。这样可防止与这样可防止与 DAO“Fields”对象发生冲突。对象发生冲突。Dim flds As New MapXLib.Fields 可以通过可以通过 Dataset.Fields 的属性访问数据集的的属性访问数据集的 Fields 集合。集合。Fields.Add方法方法将数据源中的一列数据作为字段添加到将数据源中的一列数据作为字段添加到 Fields集合集合中。中。FieldsFields集合使用集合使用DataSets.Add方法建立。方法建立。Datasets.AddDatasets.Add的的FieldsFields参数获取参数获取FieldsFields集合,并使用集合,并使用Add方法方法建立它。一旦数据集已经创建,就不能再将建立它。一旦数据集已经创建,就不能再将AddAdd方法用在数据集的方法用在数据集的FieldsFields集合上。集合上。Fields.Add DataSourceCol,Name,AggregateFunction,Type 多匹配情况下的聚合:多匹配情况下的聚合:AggregateFunction参数参数 Page 14一、数据绑定一、数据绑定1.3 将数据显示为点图层(将数据显示为点图层(BindLayer)1 1、BindLayerBindLayer对象对象 用来在由数据指定的位置处创建新的点图层。用来在由数据指定的位置处创建新的点图层。当绑定数据具有当绑定数据具有 X/Y 坐标或点信息坐标或点信息(例如例如 Zip Codes)时,以及想要在新的时,以及想要在新的或已存在的图层上看到由数据指定位置的点时,就需要用到或已存在的图层上看到由数据指定位置的点时,就需要用到Bindlayer对象。对象。使用使用BindLayerObject添加数据集时,这些点会自动显示在地图上。如果添加数据集时,这些点会自动显示在地图上。如果没有用没有用BindLayerObjectBindLayerObject添加数据集,则点是不会自动显示的。只有添加数据集,则点是不会自动显示的。只有 BindLayerObjectsBindLayerObjects才有这种行为。才有这种行为。BindLayerBindLayer对象属性对象属性 使用使用BindLayerBindLayer对象的对象的操作步骤操作步骤如下:如下:(1)创建)创建BindLayerBindLayer对象;对象;(2)当通过)当通过datasets.Adddatasets.Add方法中的方法中的BindLayerBindLayer参数传递此对象来添加数据集参数传递此对象来添加数据集时,使用它。时,使用它。Page 152 2、在地图上将、在地图上将X/YX/Y数据作为点图层显示数据作为点图层显示 如果数据包含如果数据包含X/Y坐标,就可以通过数据绑定创建并显示点图元图层。使坐标,就可以通过数据绑定创建并显示点图元图层。使用用BindLayer对象,并设置:对象,并设置:LayerType 属性为属性为 miBindLayerTypeXY;RefColumn1 属性为包含属性为包含 X 坐标值的列名或索引(坐标值的列名或索引(one-based););RefColumn2 属性为包含属性为包含 Y 坐标值的列名或索引(坐标值的列名或索引(one-based)。)。使新点图层成为永久图层:使新点图层成为永久图层:使用使用BindLayer.Filespec属性或者指定文件的名字和位置,使得属性或者指定文件的名字和位置,使得Datasets.Add方法能够创建永久图层来替代临时图层。如果不指定这个属性,方法能够创建永久图层来替代临时图层。如果不指定这个属性,则图层就是临时的。则图层就是临时的。Page 16一、数据绑定一、数据绑定1.4 使用使用GeoDictionary进行数据绑定进行数据绑定 MapXMapX使用使用GeoDictionaryGeoDictionary文件(默认名是文件(默认名是GEODICT.DCTGEODICT.DCT)记录与数据绑定记录与数据绑定有关的信息。使用有关的信息。使用DataSets.AddDataSets.Add方法时,方法时,MapXMapX能够分析数据,然后决定怎样能够分析数据,然后决定怎样绑定数据到地图上去。此方法有以下自动行为:绑定数据到地图上去。此方法有以下自动行为:确定数据源中哪一列包含地理信息;确定数据源中哪一列包含地理信息;确定绑定到哪个图层。确定绑定到哪个图层。这两个操作都是可选的。有参数用来明确地指定包含地理信息的是数据源这两个操作都是可选的。有参数用来明确地指定包含地理信息的是数据源中的哪一列,或者哪一个地图图层将用来绑定数据。如果知道这些值中的任中的哪一列,或者哪一个地图图层将用来绑定数据。如果知道这些值中的任一个,就应当明确地指定它们以提高性能。一个,就应当明确地指定它们以提高性能。为使为使 MapXMapX 能够绑定数据到地图图层上,下面的几个条件必须确保为真:能够绑定数据到地图图层上,下面的几个条件必须确保为真:此地图的地理关键列需要此地图的地理关键列需要被索引被索引;此地图和它的关键列必须在此地图和它的关键列必须在GeoDictionaryGeoDictionary中指定中指定。Page 17 一旦来自数据源的列定义为地理列,并且确定了要绑定的地图图层,就开始一旦来自数据源的列定义为地理列,并且确定了要绑定的地图图层,就开始绑定。数据源的一行匹配一个图元,数据置入图元中。如果某行含有不匹配图绑定。数据源的一行匹配一个图元,数据置入图元中。如果某行含有不匹配图元的地理列或地图中没有这样的数据值元的地理列或地图中没有这样的数据值,则则DataMismatchDataMismatch事件事件被激活来通知容被激活来通知容器。可以忽略器。可以忽略DataMismatchDataMismatch事件,这种情况下事件,这种情况下MapXMapX将简单地忽略此行。在自动将简单地忽略此行。在自动数据绑定期间,如果数据有模棱两可的情况,数据绑定期间,如果数据有模棱两可的情况,MapXMapX就会调用就会调用ResolveDataBindResolveDataBind事件事件。在使用在使用“非绑定非绑定”类型数据的数据绑定期间,使用类型数据的数据绑定期间,使用RequestDataRequestData事件建立循事件建立循环,使得容器一次一个单元地向环,使得容器一次一个单元地向MapXMapX提供数据。提供数据。因为数据源中的数据被聚合后储存在因为数据源中的数据被聚合后储存在MapXMapX中,当数据源的数据更改时,中,当数据源的数据更改时,MapXMapX不能反映该更改。不能反映该更改。DataSet.RefreshDataSet.Refresh方法可以用来使方法可以用来使MapXMapX重读数据源,并对数重读数据源,并对数据重新聚合并保存。但这样会耗费大量时间。据重新聚合并保存。但这样会耗费大量时间。DataSet.RefreshDataSet.Refresh不能在创建新点图层的不能在创建新点图层的DataSetsDataSets中起作用。中起作用。当数据源中有新添加的行时,此方法并不在图层中添加新图元。当数据源中有新添加的行时,此方法并不在图层中添加新图元。Page 181.5 访问远程空间数据及属性数据访问远程空间数据及属性数据1 1、访问空间数据访问空间数据 MapXMapX提供有提供有空间服务器空间服务器访问访问功能。功能。它允许开发者连结存储在空间服务器内它允许开发者连结存储在空间服务器内的动态实时数据,例如运行在的动态实时数据,例如运行在OracleOracle、InformixInformix、DB2DB2数据库,或者数据库,或者Oracle Oracle 8 8i i Spatial Spatial数据库上的空间服务器数据库上的空间服务器MapInfo MapInfo SpatialWareSpatialWare。空间服务器允许各空间服务器允许各公司在其企业数据库中寄存地图数据,以便于集中管理和确保安全性。公司在其企业数据库中寄存地图数据,以便于集中管理和确保安全性。可使用可使用Layers.AddLayers.Add方法方法用来自用来自DBMSDBMS的数据来添加图层:的数据来添加图层:当需要在运行状态下动态计算查询时,随当需要在运行状态下动态计算查询时,随LayerInfoLayerInfo对象对象一起使用一起使用 Layers.AddLayers.Add方法;方法;当查询在程序设计阶段已知时,和当查询在程序设计阶段已知时,和.tabtab文件一起使用文件一起使用Layers.AddLayers.Add方法。可方法。可以直接将以直接将.tabtab文件放到文件放到geosetgeoset中,只要确保当任何使用中,只要确保当任何使用geosetgeoset的程序初始化的程序初始化时,都装载了该文件。时,都装载了该文件。tab tab文件和文件和LayerInfoLayerInfo对象都接受相同的参数。对象都接受相同的参数。LayerInfoLayerInfo参数参数 一、数据绑定一、数据绑定Page 19 2 2、访问属性数据访问属性数据 要访问在查询中所选择的要访问在查询中所选择的DBMSDBMS图层的空间对象,以类型为图层的空间对象,以类型为midatasetlayermidatasetlayer的数据集使用的数据集使用datasets.adddatasets.add方法方法(从现有的图层中取得这些属性从现有的图层中取得这些属性)。添加添加DBMSDBMS图层时,为优化性能,在查询中最好只指定在应用中所要使用的图层时,为优化性能,在查询中最好只指定在应用中所要使用的列。如果未指定,则那些空间列、关键值列、要用来进行标注的列或是要用列。如果未指定,则那些空间列、关键值列、要用来进行标注的列或是要用来创建专题的列会自动添加进来。而对所有可在地图上表示的表都可使用虚来创建专题的列会自动添加进来。而对所有可在地图上表示的表都可使用虚拟列拟列“OBJECT”OBJECT”来引用包含空间数据的列。这是在带有来引用包含空间数据的列。这是在带有X/YX/Y列的表所需要的。列的表所需要的。说明:说明:可以使用任何服务器方表达式可以使用任何服务器方表达式/函数来指定列。函数来指定列。同样,要避免在实际同样,要避免在实际应用中从表中选择所有。应用中从表中选择所有。Page 20二、专题制图二、专题制图2.1 Themes 集合及专题地图类型集合及专题地图类型 专题制图专题制图是按照是按照特定专题渲染地图特定专题渲染地图的过程。专题通常使用数据集中的过程。专题通常使用数据集中的一组或多组数据。专题利用颜色渲染、填充图案、符号、直方和饼的一组或多组数据。专题利用颜色渲染、填充图案、符号、直方和饼图表示数据。根据数据中的特定值指派这些颜色、图案或符号,可以图表示数据。根据数据中的特定值指派这些颜色、图案或符号,可以创建不同的专题地图。创建不同的专题地图。专题地图上显示的数据称为专题地图上显示的数据称为专题变量专题变量。根据所执行的专题分析类型,。根据所执行的专题分析类型,地图可以显示一个或多个专题变量。地图可以显示一个或多个专题变量。范围、格网渲染、等级符号、点范围、格网渲染、等级符号、点密度、独立值密度、独立值都检查一个变量。都检查一个变量。直方图直方图和和饼图饼图一次可以显示多个专题一次可以显示多个专题变量。变量。开始应用专题地图前,需要决定要显示哪些信息以及信息驻留的位开始应用专题地图前,需要决定要显示哪些信息以及信息驻留的位置。创建专题所用的数据来自数据集的置。创建专题所用的数据来自数据集的Field对象或对象或FieldS集合。这些集合。这些字段作为字段作为Themes集合的集合的Themes.AddThemes.Add 方法的方法的 Fields 参数来传递。参数来传递。Page 211 1、ThemesThemes集合集合 每个数据集都有专题集合。每个数据集都有专题集合。Themes集合从专题集合中创建、计数、集合从专题集合中创建、计数、添加或删除添加或删除 Theme 对象。对象。创建专题创建专题 Themes.Add Type,Field,Name 如:如:Map1.Datasets(1).Themes.Add miThemeRanges“TotPop”,“My Ranges Theme”上面一行代码使用字段上面一行代码使用字段“TotPopTotPop”为为 Datasets Datasets 集合中的第一个数集合中的第一个数据集创建范围专题。据集创建范围专题。参数参数 专题类型常量专题类型常量 一旦将专题添加到指定集合,就可以创建一旦将专题添加到指定集合,就可以创建ThemeTheme对象,并且操作对象对象,并且操作对象的属性。的属性。Page 222 2、ThemeTheme对象:对象:设置设置ThemesThemes集合中专题的属性集合中专题的属性 方法属性如下:方法属性如下:AutoRecomputeAutoRecompute、ComputeThemeComputeTheme、DataMaxDataMax、DataMinDataMin、FieldsFields、LayersLayers、LegendLegend(专题图例属性)、专题图例属性)、NameName、ThemePropertiesThemeProperties、TypeType、VisibleVisible 3 3、专题制图的类型:、专题制图的类型:独立值地图独立值地图:显示通过特定数据集字段包含的独立值渲染点、线或边界,:显示通过特定数据集字段包含的独立值渲染点、线或边界,可以使用数值和名词性值。可以使用数值和名词性值。使用名词性数据渲染点、线或边界时,只能用独立值进行渲染。名词性数使用名词性数据渲染点、线或边界时,只能用独立值进行渲染。名词性数据可以是非数值数据,也可以是其数字代表非数值数据的数值数据。日期被据可以是非数值数据,也可以是其数字代表非数值数据的数值数据。日期被作为数值数据,它可以用于范围和独立值地图。作为数值数据,它可以用于范围和独立值地图。范围地图、等级符号地图、点密度地图、直方图地图、饼图地图范围地图、等级符号地图、点密度地图、直方图地图、饼图地图 双变量专题制图:使用点或线对象表示两个专题变量双变量专题制图:使用点或线对象表示两个专题变量 Page 23 1 1、操作专题地图、操作专题地图(1 1)Theme.ThemeDlgTheme.ThemeDlg方法方法此方法显示对话框使用户可以修改专题此方法显示对话框使用户可以修改专题 Map1.Datasets(1).Themes(1).ThemeDlg Map1.Datasets(1).Themes(1).ThemeDlg(2 2)专题的专题的ThemePropertiesThemeProperties对象对象 ThemePropertiesThemeProperties对象存储在对象存储在ThemesThemes集合中,其属性用于定义专题地图的外观集合中,其属性用于定义专题地图的外观(颜色、符号等)。(颜色、符号等)。ThemePropertiesThemeProperties对象实际上包含有关专题如何显示的信息。对象实际上包含有关专题如何显示的信息。属性如下:属性如下:AllowEmptyRangesAllowEmptyRanges、DataValueDataValue、DistMethodDistMethod、DotSizeDotSize、GraduatedGraduated、IndividualValueCategoryIndividualValueCategory、IndependentIndependent、SizeSize、widthwidth、MultivarCategoriesMultivarCategories、NumRangesNumRanges、RangeCategoriesRangeCategories、SpreadBySpreadBy、SymbolStyleSymbolStyle、ValuePerDotValuePerDot 以上多个属性实际是其它对象。这些对象包括以上多个属性实际是其它对象。这些对象包括RangeCategoryRangeCategory对象、对象、IndividualValueIndividualValue对象、对象、MultiVarMultiVar对象和对象和StyleStyle对象。对象。2.2 操作专题地图操作专题地图二、专题制图二、专题制图Page 24 2 2、自定义专题图例、自定义专题图例 在创建专题地图时,在创建专题地图时,MapXMapX自动创建图例,解释颜色、符号或大小自动创建图例,解释颜色、符号或大小的意义。的意义。每个专题都有每个专题都有LegendLegend对象(对象(Theme.LegendTheme.Legend)。)。LegendLegend对象包含可对象包含可以控制图例显示的属性。以控制图例显示的属性。使用使用 Legend Legend 对象的对象的LegendDlgLegendDlg方法可以很容易地进行修改。方法可以很容易地进行修改。Map1.Datasets(1).Themes(1).Legend.LegendDlg Map1.Datasets(1).Themes(1).Legend.LegendDlg Page 25 逐层细化图层逐层细化图层使用户得以执行使用户得以执行逐层细化逐层细化分析和探测。如果地图包含逐分析和探测。如果地图包含逐层细化图层,用户就可以通过鼠标指向和单击地图的某个区域得到该区层细化图层,用户就可以通过鼠标指向和单击地图的某个区域得到该区域更详细的信息。域更详细的信息。1、开发步骤:、开发步骤:(1 1)获取用来建立多层次)获取用来建立多层次逐层细化逐层细化图层的多种表。可以使用图层的多种表。可以使用 MapInfo MapInfo Professional Professional 创建表;成员表创建表;成员表(2 2)使用特殊的)使用特殊的列列和特殊的和特殊的元数据元数据创建新的创建新的空逐层细化表空逐层细化表(.(.tabtab文件文件)。元数据。元数据为每一张成员表分配层次名,并且标识成员表中的重要列为每一张成员表分配层次名,并且标识成员表中的重要列-ID ID 列和标题列;列和标题列;(3 3)把)把逐层细化逐层细化表表加入地图加入地图(例如,把(例如,把逐层细化逐层细化表加入所使用的表加入所使用的Geoset(sGeoset(s)中中,或者通过象或者通过象Layers.AddLayers.Add方法,把方法,把逐层细化逐层细化表添加到地图中表添加到地图中);(4 4)添加)添加用户接口用户接口元素(例如工具栏按钮)到应用程序中,以便用户选择逐层元素(例如工具栏按钮)到应用程序中,以便用户选择逐层细化工具并单击地图来进行细化。细化工具并单击地图来进行细化。3.1 准备准备“逐层细化逐层细化”图图层层三、逐层细化图层三、逐层细化图层Page 26 向应用程序添加代码来响应用户对逐层细化工具的使用,此代码需要检测用向应用程序添加代码来响应用户对逐层细化工具的使用,此代码需要检测用户所选择的图元;确定替换图元的子图元;并调用一些方法来展开或者收缩地图户所选择的图元;确定替换图元的子图元;并调用一些方法来展开或者收缩地图图元图元(DrilldownRemoveFeaturesDrilldownRemoveFeatures,DrilldownAddFeaturesDrilldownAddFeatures)。2、准备、准备“逐层细化逐层细化”图层图层 要创建逐层细化图层,需要提供由两个或更多要创建逐层细化图层,需要提供由两个或更多MapInfoMapInfo表组成的表集合。表组成的表集合。(1 1)逐层细化图层的每一层次的详细信息都需要一张)逐层细化图层的每一层次的详细信息都需要一张MapInfoMapInfo表。这些被称为表。这些被称为成员表成员表。(2 2)额外会有包含特殊元数据的空表来描述成员表,它被称为)额外会有包含特殊元数据的空表来描述成员表,它被称为逐层细化表逐层细化表。成员表成员表:逐层细化逐层细化图层中的每个图元都必须有图层中的每个图元都必须有标识关键字标识关键字,在单个层次中的,在单个层次中的所有关键字必须是所有关键字必须是唯一唯一的;的;逐层细化表逐层细化表:逐层细化逐层细化表与其它表不同,它只包含一个文件:表与其它表不同,它只包含一个文件:filename.tabfilename.tab。必须定义三个标准列:必须定义三个标准列:KeyKey、Level Level 和和 LabelLabel。所有这三列都为字符(字符串)所有这三列都为字符(字符串)列,列,3232个字符宽度。个字符宽度。Page 27 逐层细化逐层细化表必须包含一系列元数据关键字。表必须包含一系列元数据关键字。元数据关键字元数据关键字语法如下:语法如下:以关键字以关键字 begin_metadata 标记标记.tab 文件元数据部分的开始文件元数据部分的开始;原数据的每一行都有两个元素:关键字和数值。所有的关键字和数值都用原数据的每一行都有两个元素:关键字和数值。所有的关键字和数值都用双引号括起来;双引号括起来;逐层细化逐层细化表必须包含表必须包含“IsDrilldown”关键字,且此关键字值必须为关键字,且此关键字值必须为“True”;每一个关键字都以字符每一个关键字都以字符“”(反斜线)开始;(反斜线)开始;元数据关键字可以层次化地嵌套。层次结构的每一层次用反斜线元数据关键字可以层次化地嵌套。层次结构的每一层次用反斜线()符号标符号标记。关键字值限制最多为记。关键字值限制最多为 239 个字符;个字符;逐层细化逐层细化表包含表包含 DDMapComponentMaps 关键字关键字层次结构。在此层次结构层次结构。在此层次结构中,为每一张成员表指定四个元数据关键字:中,为每一张成员表指定四个元数据关键字:Page 28例如,例如,“逐层细化逐层细化表示例表示例”包含如包含如“DDMapComponentMapsOneLevelID”和和“DDMapComponentMapsTwoxLevelID”这样的关键字层次结构。注意这样的关键字层次结构。注意 DDMap、ComponentMaps 和和LevelID是关键字层次结构标准的、必需的部分,是关键字层次结构标准的、必需的部分,而而One和和Twox是可自定义的。可使用任何喜欢的关键字名代替是可自定义的。可使用任何喜欢的关键字名代替One、Twox、Twoxx等等;那些关键字名只是用来区分每个成员表的关键字集。等等;那些关键字名只是用来区分每个成员表的关键字集。逐层细化逐层细化表示例内容如下。如果要创建自己的表示例内容如下。如果要创建自己的逐层细化逐层细化表,可以复制该示例表,可以复制该示例到一文本文件,并参照自己的到一文本文件,并参照自己的成员表成员表进行修改进行修改。Page 291、创建、创建“细化细化”工具工具:使用使用CreateCustomTool方法方法可以实现可以实现逐层细化逐层细化工具。工具。CursorConstantsCursorConstants集包括集包括两个为两个为逐层细化逐层细化应用程序特别提供的光标:应用程序特别提供的光标:miDrilldownExpandCursor和和 miDrilldownContractCursor。每次使用自定义每次使用自定义逐层细化逐层细化工具将触发工具将触发ToolUsedToolUsed 事事件。在件。在ToolUsedToolUsed事件过程中,需要执行引起逐层细化动作的代码。分四步:事件过程中,需要执行引起逐层细化动作的代码。分四步:(1 1)使用如)使用如SelectByPoint或或SearchAtPoint这样的方法,确定用户所单击的地图这样的方法,确定用户所单击的地图图元;图元;(2 2)确定用来替换用户所单击图元的子图元集。例如,可使用一个或者更多嵌)确定用来替换用户所单击图元的子图元集。例如,可使用一个或者更多嵌套的套的CaseCase语句来确定用来替换所选父图元的子图元;语句来确定用来替换所选父图元的子图元;(3 3)调用)调用DrilldownAddFeatures方法添加子图元到地图;方法添加子图元到地图;(4 4)调用)调用DrilldownRemoveFeatures方法从地图上删除父图元方法从地图上删除父图元(用户所单击的图用户所单击的图元元)。并不是并不是“编辑编辑”表表,只是,只是复制图元到当前可视的图元集。复制图元到当前可视的图元集。3.2 创建逐层细化和创建逐层细化和“卷起卷起”工具工具 三、逐层细化图层三、逐层细化图层Page 302、创建、创建“卷起卷起”工具工具:当实现当实现逐层细化逐层细化工具后,还可为用户提供工具后,还可为用户提供卷起卷起工具工具与与逐层细化逐层细化工具有工具有相反效果的工具。相反效果的工具。可使用与创建可使用与创建逐层细化逐层细化工具相同的方式来创建工具相同的方式来创建卷起卷起工具。工具。将 会 使 用 同 样 的 方 法(将 会 使 用 同 样 的 方 法(D r i l l d o w n A d d F e a t u r e sD r i l l d o w n A d d F e a t u r e s 和和DrilldownRemoveFeaturesDrilldownRemoveFeatures)。)。不同的是不是添加子图元和删除父图元,而不同的是不是添加子图元和删除父图元,而是做相反操作是做相反操作添加父图元和删除子图元添加父图元和删除子图元。3、重置、重置“逐层细化逐层细化”图层:图层:可以通过调用可以通过调用DrilldownResetDrilldownReset方法重置方法重置逐层细化逐层细化图层。重置图层。重置逐层细化逐层细化图图层会清除整个图层,而且使用一张成员表的图元重新初始化图层。层会清除整个图层,而且使用一张成员表的图元重新初始化图层。Page 314、逐层细化图层的限制和要求:逐层细化图层的限制和要求:逐层细化逐层细化图层中每一个图元必须拥有一个图层中每一个图元必须拥有一个IDID,该该IDID在所属成员表中是在所属成员表中是唯一唯一的;的;不能在不能在逐层细化逐层细化图层中使用图层中使用栅格图像栅格图像衬垫表衬垫表。当使当使用用Themes.Add 创建专创建专题时,将花费一些时间用大量的数据行来计算图题时,将花费一些时间用大量的数据行来计算图层范围,例如层范围,例如逐层细化逐层细化或是或是服务器服务器图层。图层。Add方法的方法的ComputeTheme参数参数可以可以为任意专题类型创建非计算专题。非计算专题为任意专题类型创建非计算专题。非计算专题可以可以创建没有自动计算范围的专创建没有自动计算范围的专题。可以自己创建范围。这对题。可以自己创建范围。这对逐层细化逐层细化或或服务器服务器图层来说是比较快的方法。图层来说是比较快的方法。逐层细化逐层细化图层不会图层不会“记录记录”各种不同各种不同逐层细化逐层细化层次的状态(图元被展开,等层次的状态(图元被展开,等等)。如果希望应用程序恢复上一次使用地图时精确的状态,需要在退出时编等)。如果希望应用程序恢复上一次使用地图时精确的状态,需要在退出时编写代码存储地图的写代码存储地图的逐层细化逐层细化设置,并在启动时恢复设置。设置,并在启动时恢复设置。虽然可以编辑虽然可以编辑逐层细化逐层细化图层的图元,但图层的图元,但不会保存编辑不会保存编辑,且,且成员表成员表不受编辑的不受编辑的影响。当编辑影响。当编辑逐层细化逐层细化图层中的图元时,不是修改图层中的图元时,不是修改成员表成员表,而是修改从,而是修改从成员表成员表的图元的临时副本。的图元的临时副本。Page 324.1 输出、打印地图输出、打印地图四、地图输出及四、地图输出及MapX应用程序发布应用程序发布1、输出地图:、输出地图:要输出地图到图形文件或复制地图的内容到剪贴板,使用要输出地图到图形文件或复制地图的内容到剪贴板,使用ExportMapExportMap方法。方法。Map.ExportMap(Location,Format,W,H)FormatFormat常量常量Map1.PaperUnit=Map1.PaperUnit=miUnitCentimetermiUnitCentimeter Map1.ExportMap Map1.ExportMap clipboardclipboard,miFormatBMPmiFormatBMP,12,9,12,9 2、ExportSelection属性:属性:使用户可以控制是否让选定范围的模式也随地图输出。使用户可以控制是否让选定范围的模式也随地图输出。Map1.ExportSelection=TrueMap1.ExportSelection=TrueMap1.ExportMap Map1.ExportMap c:tempmap.jpgc:tempmap.jpg,miFormatJPEGmiFormatJPEG Page 333、打印地图、打印地图PrintMap方法方法 Map.PrintMap(hDC,x,y,w,hMap.PrintMap(hDC,x,y,w,h)Map1.PrintMap Printer.Map1.PrintMap Printer.hDChDC,0,0,Map1.Width,0,0,Map1.Width*100,Map1.Height100,Map1.Height*100 100 说明:说明:所绘制的当前地图要与给出的矩形相适应。当保持宽和高的相关比例时,所绘制的当前地图要与给出的矩形相适应。当保持宽和高的相关比例时,将获得最佳结果。该方法仅打印将获得最佳结果。该方法仅打印MapXMapX地图的内容;它不显示任何图标、工具栏地图的内容;它不显示任何图标、工具栏或菜单项。如果要看到输出的附加控件,可以打印包含或菜单项。如果要看到输出的附加控件,可以打印包含MapXMapX控件的窗体。控件的窗体。Page 344.2 应用程序发布应用程序发布 四、地图输出及四、地
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!