资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
MapX应用讲义 一、加载地图数据 1、 TAB 的数据分为两种数据:地图数据(Layers)、属性数据(Datasets)。关系:不可分割的一个数据集的两部分. 2、 数据加载:GST 文件由 GeosetManager40.exe程序生成。在程序使用 gsT文件:Map1.Geoset=Filepath+FileName 3、 问题:GST 文件加载后,只是默认将地图数据加载,属性数据另外需要使用单独的命令进行加载,否则对属性数据的操作全部非法。加载:Map1.Datasets.ADD 属性数据集名称4、 另一种加载方式:使用 LayerInfo 对象,这种方式下加载地图数据源的地图集和属性集均可直接使用。示例: dim LayerInfo as MapXLib.LayerInfo dim Lyr as Mpxlib.layer LayerInfo.Type = miLayerInfoTypeTab 加载表的类型 LayerInfo.AddParameter FileSpec, FilePath + LayerName + .TAB 加载表 的全路径名 LayerInfo.AddParameter NAME, LayerName 地图集的别名 LayerInfo.AddParameter AutoCreateDataset, 1 是否加载属性数据集 LayerInfo.AddParameter datasetname, LayerName 属性数据集别名 MainMap.Layers.Add LayerInfo 加载到指定的 MapX对象中,立即可直接使用 5、 第三种加载数据方式:GST 文件+ LayerInfo 方式。示例: 使用两个 MapX对象:MainMap、TempMap TempMap.Geoset=GST文件 MainMap.geoset=” TempMap.Refresh For I=1 to TempMap.Layers.Count FileName=TempMap.Layers.Item(I).Filespec 直接引用 LayerInfo方式加载地图数据到 MainMap Next 二、创建地图对象 必要:创建地图对象,必须使用 FeatureFactory对象 1、 创建一个点对象 点对象有一个坐标点(X,Y),点对象变量是 Point类型,点对象的样式(Style)是符号 样式。 Dim Pnt AS MapXLib.Point Dim FeaFac AS MapXLib.FeatureFactory Dim Lyr AS MapXLib.Layer Dim Ftr AS MapXLib.Feature Dim NewStyle AS MapXLib.Style 绑定 SET Lyr=MainMap.Layers.Item(LayerName) SET FeaFac=mainmap.featurefactory 设置点对象样式 With NewStyle .SymbolType = miSymbolTypeBitmap .SymbolBitmapSize = 24 .SymbolBitmapTransparent = False .SymbolBitmapName = YIEL2-32.BMP End With Mainmap.AutoRedraw=False 禁止自动刷新 Lyr.Editable=True 置当前图层为可写状态 创建点对象 pnt.set X1,Y1 添加进当前图层 Set Ftr=FeaFac. CreateSymbol (Pnt,Newstyle) 创建符号 Set Ftr=FeaFac. CreateSymbol (Pnt,MainMap.DefaultStyle) 添加 Lyr.AddFeature Ftr Lyr.Refresh Mainmap.AutoRedraw=True Lyr.Editable=False 释放 SET Pnt = Nothing SET FeaFac = Nothing SET Lyr = Nothing SET Ftr = Nothing 以上代码放在 MapX的 ToolUsed事件下 单独修改某个图元的样式:SET Ftr.Style=NewStyle,再用 Update 即可 2、 创建一个线矩形 Dim Pnts AS MapXLib.Points With NewStyle .LineColor=Rgb(0, 0,255) End With 第一个点 Pnt.Set X1,Y1 Pnts.add Pnt 第二个点 Pnt.Set X2,Y1 Pnts.add Pnt 第三个点 Pnt.Set X2,Y2 Pnts.add Pnt 第四个点 Pnt.Set X1,Y2 Pnts.add Pnt 第五个点 Pnt.Set X1,Y1 Pnts.add Pnt 创建线矩形 SET Ftr=FeaFac.CreateLine(Pnts,NewStyle) Lyr.AddFeature Ftr Lyr.Refresh 3、 上面创建对象中存在的问题:并未对其数据数据进行赋值 创建对象的同时创建其数据集合 Dim Pnt AS MapXLib.Point Dim FeaFac AS MapXLib.FeatureFactory Dim Lyr AS MapXLib.Layer Dim Ftr AS MapXLib.Feature Dim NewStyle AS MapXLib.Style Dim ds AS MapXLib.Dataset Dim Flds AS MapXLib.Fields 绑定 SET Lyr=MainMap.Layers.Item(LayerName) SET ds=Lyr.Datasets.Item(1) Set Flds=ds.Fields SET FeaFac=mainmap.featurefactory 设置点对象样式 With NewStyle .SymbolType = miSymbolTypeBitmap .SymbolBitmapSize = 24 .SymbolBitmapTransparent = False .SymbolBitmapName = YIEL2-32.BMP End With Mainmap.AutoRedraw=False 禁止自动刷新 Lyr.Editable=True 置当前图层为可写状态 创建点对象 pnt.set X1,Y1 创建图形 Set Ftr=FeaFac. CreateSymbol (Pnt,Newstyle) 创建符号 Set Ftr=FeaFac. CreateSymbol (Pnt,MainMap.DefaultStyle) 设置属性 For I=1 to Flds.Count Lyr.KeyFields=Flds.Item(i).Name Ftr.KeyValue=ValueStr(I) 这里并没有对字段类型进行判断 Next 另外一种方法:使用 RowValues和 RowValue对象 添加 Lyr.AddFeature Ftr Lyr.Refresh Mainmap.AutoRedraw=True Lyr.Editable=False 释放 SET Pnt = Nothing SET FeaFac = Nothing SET Lyr = Nothing SET Ftr = Nothing SET ds = Nothing SET Flds = Nothing 4、 创建表 (1) 临时表: A、用 MainMap.Layers.CreateLayer方法创建临时表。但这个临时表只有一个字段:GeoName( Char 24)。程序运行过程中该表存放位置为系统临时文件夹下 B、使用 LayerInfo对象创建临时表,可以指定字段。示例: Dim Lyr As MapXLib.Layer Dim LayerInfo As New MapXLib.LayerInfo Dim Flds As New MapXLib.Fields 字段定义 Flds.AddStringField ID, 12 Flds.AddStringField Name, 50 Flds.AddNumericField Deptch, 12, 2 Flds.AddIntegerField Length ´ LayerInfo.Type = miLayerInfoTypeTemp LayerInfo.AddParameter FileSpec, FileName LayerInfo.AddParameter NAME, LayerName LayerInfo.AddParameter Fields, Flds Set Lyr = MainMap.Layers.Add(LayerInfo, 1) Set Lyr = Nothing Set LayerInfo = Nothing (2) 创建永久表 Dim Lyr As MapXLib.Layer Dim LayerInfo As New MapXLib.LayerInfo Dim Flds As New MapXLib.Fields Flds.AddStringField ID, 12 Flds.AddStringField Name, 50 Flds.AddNumericField Deptch, 12, 2 Flds.AddIntegerField Length ´ LayerInfo.Type = miLayerInfoTypeNewTable LayerInfo.AddParameter FileSpec, FilePath + + FileName LayerInfo.AddParameter NAME, LayerName LayerInfo.AddParameter Fields, Flds Set Lyr = MainMap.Layers.Add(LayerInfo, 1) Set Lyr = Nothing Set LayerInfo = Nothing 5、 创建工具句柄 系统已经定义工具句柄都以整数(包括 16进制)常数存在,句柄号大于 1000和小于 12基本 都为系统使用。 A. 定义常数:必须为全局变量 Global Const CreateSymbolTool = 13 ´创建节点 Global Const CreateLineTool = 15 ´创建管线 Globa
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号