mapx开发讲义(MapX应用 MapXApplication)

MapX应用讲义一、加载地图数据1、TAB的数据分为两种数据:地图数据(Layers)、属性数据(Datasets)。关系:不可分割的一个数据集的两部分.2、数据加载:GST文件由GeosetManager40.exe程序生成。在程序使用gsT文件:Mapl.Geoset=Filepath+FileName3、问题:GST文件加载后,只是默认将地图数据加载,属性数据另外需要使用单独的命令进行加载,否则对属性数据的操作全部非法。加载:Mapl.Datasets.ADD属性数据集名称4、另一种加载方式:使用LayerInfo对象,这种方式下加载地图数据源的地图集和属性集均可直接使用。示例:dim LayerInfo as MapXLib.LayerInfodim Lyr as Mpxlib.layer“加载表的类型LayerInfo.Type=miLayerInfoTypeTabLayerInfo.AddParameter"FileSpec",FilePath+LayerName+".TAB"“加载表的全路径名LayerInfo.AddParameter "NAME",LayerName“地图集的别名LayerInfo.AddParameter"AutoCreateDataset,1‘是否加载属性数据集“属性数据集别名LayerInfo.AddParameter"datasetname",LayerName“加载到指定的MapX对象中,立即可直接使用MainMap.Layers.AddLayerInfo5、第三种加载数据方式:GST文件+LayerInfo方式。示例:使用两个MapX对象:MainMap、TempMapTempMap.Geoset=GST文件MainMap.geoset=""TempMap.RefreshFor I=l to TempMap.Layers.CountFileName=TempMap.Layers.Item(l).Filespec“直接引用LayerInfo方式加载地图数据到MainMapNext二、创建地图对象必要:创建地图对象,必须使用FeatureFactory对象1、创建一个点对象点对象有一个坐标点(X,Y),点对象变量是Point类型,点对象的样式(Style)是符号样式。DimPntASMapXLib.Point
MapX 应用讲义 一、加载地图数据 1、 TAB 的数据分为两种数据:地图数据(Layers)、属性数据(Datasets)。关系:不可 分割的一个数据集的两部分. 2、 数据加载:GST 文件由 GeosetManager40.exe 程序生成。在程序使用 gsT 文件:Map1.Ge oset=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

DimFeaFac ASMapXLib.FeatureFactoryDim Lyr AS MapXLib.LayerDimFtrASMapXLib.FeatureDimNewStyleASMapXLib.Style“绑定SETLyr=MainMap.Layers.Item(LayerName)SETFeaFac=mainmap.featurefactory“设置点对象样式WithNewStyle.SymbolType=miSymbolTypeBitmap.SymbolBitmapSize=24.SymbolBitmapTransparent=False.SymbolBitmapName="YIEL2-32.BMP"End With“禁止自动刷新Mainmap.AutoRedraw-FalseLyr. Editable-True“置当前图层为可写状态“创建点对象pnt.set X1,Y1“添加进当前图层“创建符号Set Ftr=FeaFac. CreateSymbol (Pnt,Newstyle)"SetFtr=FeaFac.CreateSymbol (Pnt,MainMap.DefaultStyle)“添加Lyr.AddFeature FtrLyr.RefreshMainmap.AutoRedraw-TrueLyr.Editable=False‘释放SET Pnt = NothingSET FeaFac =NothingSET Lyr=NothingSETFtr =Nothing“以上代码放在MapX的ToolUsed事件下单独修改某个图元的样式:SETFtr.Style=NewStyle,再用Update即可2、创建一个线矩形DimPntsASMapXLib.PointsWithNewStyle.LineColor=Rgb(0,0,255)End With“第一个点Pnt.Set X1,Y1Pnts.add Pnt
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, Y1Pnts.add Pnt‘第三个点Pnt.SetX2,Y2Pnts.add Pnt“第四个点Pnt.Set X1,Y2Pnts.add Pnt“第五个点Pnt.Set X1,Y1Pnts.add Pnt“创建线矩形SETFtr=FeaFac.CreateLine(Pnts,NewStyle)Lyr.AddFeature FtrLyr.Refresh3、上面创建对象中存在的问题:并未对其数据数据进行赋值创建对象的同时创建其数据集合Dim Pnt AS MapXLib.PointDimFeaFac AS MapXLib.FeatureFactoryDimLyr AS MapXLib.LayerDimFtrASMapXLib.FeatureDim NewStyleASMapXLib.StyleDim ds AS MapXLib.DatasetDimFldsASMapXLib.Fields“绑定SETLyr=MainMap.Layers.Item(LayerName)SET ds=Lyr.Datasets.Item(1)Set Flds=ds.FieldsSETFeaFac=mainmap.featurefactory“设置点对象样式WithNewStyle.SymbolType=miSymbolTypeBitmap.SymbolBitmapSize=24.SymbolBitmapTransparent=False.SymbolBitmapName="YIEL2-32.BMP"End With“禁止自动刷新Mainmap.AutoRedraw-FalseLyr.Editable=True“置当前图层为可写状态“创建点对象pnt.set X1,Y1
‘第二个点 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

“创建图形SetFtr=FeaFac.CreateSymbol (Pnt,Newstyle)“创建符号‘SetFtr=FeaFac.CreateSymbol(Pnt,MainMap.DefaultStyle)“设置属性For I=l to Flds.CountLyr.KeyFields=Flds.Item(i).NameFtr.KeyValue=ValueStr(I)“这里并没有对字段类型进行判断Next“另外一种方法:使用RowValues和RowValue对象“添加Lyr.AddFeature FtrLyr.RefreshMainmap.AutoRedraw=TrueLyr.Editable=False“释放SET Pnt =NothingSETFeaFac=NothingSET Lyr = NothingSET Ftr = NothingSET ds = NothingSET Flds=Nothing4、创建表(1)临时表:A、用MainMap.Layers.CreateLayer方法创建临时表。但这个临时表只有一个字段:GeoName(Char24)。程序运行过程中该表存放位置为系统临时文件夹下B、使用LayerInfo对象创建临时表,可以指定字段。示例:DimLyrAs MapXLib.LayerDimLayerInfoAsNewMapXLib.LayerInfoDimFlds AsNewMapXLib.Fields“字段定义Flds.AddStringField"ID",12Flds.AddStringField"Name", 50Flds.AddNumericField"Deptch,12, 2Flds.AddIntegerField"Length"´LayerInfo.Type=miLayerInfoTypeTempLayerInfo.AddParameter"FileSpec",FileNameLayerInfo.AddParameter"NAME",LayerNameLayerInfo.AddParameter"Fields",Flds
‘创建图形 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 方法创建临时表。但这个临时表只有一个字段:GeoNa me( 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 = NothingSet LayerInfo = Nothing(2)创建永久表Dim Lyr As MapXLib.LayerDimLayerInfoAsNewMapXLib.LayerInfoDim Flds As New MapXLib.FieldsFlds.AddStringField"ID",12Flds.AddStringField"Name",50Flds.AddNumericField"Deptch,12,2Flds.AddIntegerField"Length"´LayerInfo.Type=miLayerInfoTypeNewTableLayerInfo.AddParameter"FileSpec",FilePath +""+FileNameLayerInfo.AddParameter"NAME", LayerNameLayerInfo.AddParameter"Fields",FldsSetLyr=MainMap.Layers.Add(LayerInfo,1)Set Lyr =NothingSet LayerInfo = Nothing5、创建工具句柄系统已经定义工具句柄都以整数(包括16进制)常数存在,句柄号大于1000和小于12基本都为系统使用。A.定义常数:必须为全局变量Global Const CreateSymbolTool= 13´:创建节点Global Const CreateLineTool=15´;创建管线´;信息工具GlobalConst InfoTipTool = 16´;移动地图Global Const MoveFeature=17GlobalConstScaleDistanceTool=18´:测量两点间的距离B.使用CreateCustomTool创建新的工具句柄MainMap.CreateCustomToolCreateSymbolTool,miToolTypePoint,miSymbolCursorMainMap.CreateCustomTool CreateLineTool,miToolTypeLine,miCrossCursorMainMap.CreateCustomToolInfoTipTool,miToolTypePoint,miCrossCursorMainMap.CreateCustomToolMoveFeature,miToolTypeLine,miPanCursorMainMap.CreateCustomToolScaleDistanceTool,miToolTypeLine,miPanCursor
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 ´创建管线 Global Const InfoTipTool = 16 ´信息工具 Global Const MoveFeature = 17 ´移动地图 Global Const ScaleDistanceTool = 18 ´测量两点间的距离 B. 使用 CreateCustomTool 创建新的工具句柄: MainMap.CreateCustomTool CreateSymbolTool, miToolTypePoint, miSymbolCursor MainMap.CreateCustomTool CreateLineTool, miToolTypeLine, miCrossCursor MainMap.CreateCustomTool InfoTipTool, miToolTypePoint, miCrossCursor MainMap.CreateCustomTool MoveFeature, miToolTypeLine, miPanCursor MainMap.CreateCustomTool ScaleDistanceTool, miToolTypeLine, miPanCursor

C.如何使用?在Map对象的ToolUsed事件的ToolNum参数为当前所激活的工具使当前操作指向某行为:MainMap.CurrentTool=工具句柄号,如放大:MainMap.CurrentTool=miZoomInTool,移动图元:MainMap.CurrentTool=MoveFeature操作具体的工具句柄时,执行该捕捉到的工具句柄的代码:在ToolUsed事件中:Select Case ToolNumCase MoveFeature“执行代码End Select删除图元:Lyr.DeleteFeatureFtr三、查询1、属性查找。Find、Search方法:注意的是Find方法只支持TAB表文件,不支持空间数据表。Find:与FoxPro中Locate定位命令想类似。Search:支持SQL语句。写法:仅指SQL语句的WHERE部分,且From语句中只能有一个表一仅对单表进行操作:Select*fromLayerNameWHEREIDLIKE“%北京%”示例:A、查找DimFtrsASMapXlib.Features“图元集合““%北京%”””)SETFtrs=Lyr.Search(“IDLIKEForI=ltoFtrs.Count“执行语句NextB、高亮显示“将当前查询所得的结果集全部高亮显示(隐含执行:Lyr.Selection.Replace FtrsLyr.ClearSelection语句)一一加入selection集合闪烁:不能用Selection,否则会对整个屏幕进行整个刷新(抖动)。使用更新Style的方法进行选定图元的闪烁。记载图元的老样式:SetOldsytle=Ftr.StyleLyr.Selection.AddFtrs“将当前查询所得的结果集添加到已有的结果集中,再全部高亮显示C、对查询的结果集进行属性修改示例程序:完成的是Professional中信息工具功能
C. 如何使用? 在 Map 对象的 ToolUsed 事件的 ToolNum 参数为当前所激活的工具 使当 前操作指向某行为:MainMap.CurrentTool=工具句柄号,如放大:MainMap.CurrentTool= miZoomInTool,移动图元:MainMap.CurrentTool=MoveFeature 操作具体的工具句柄时,执行该捕捉到的工具句柄的代码: 在 ToolUsed 事件中: Select Case ToolNum Case MoveFeature ‘执行代码 End Select 删除图元:Lyr.DeleteFeature Ftr 三、查询 1、 属性查找。Find、Search 方法:注意的是 Find 方法只支持 TAB 表文件,不支持空间数 据 表。 Find :与 FoxPro 中 Locate 定位命令想类似。 Search:支持 SQL 语句。写法:仅指 SQL 语句的 WHERE 部分,且 From 语句中只能有一个表 — —仅对单表进行操作:Select * from LayerName WHERE ID LIKE “%北京%” 示例: A、查找 Dim Ftrs AS MapXlib.Features ‘图元集合 SET Ftrs=Lyr.Search(“ID LIKE “%北京%”) For I=1 to Ftrs.Count ‘执行语句 Next B、高亮显示 Lyr.Selection.Replace Ftrs ‘将当前查询所得的结果集全部高亮显示(隐含执行: Lyr.ClearSelection 语句)——加入 selection 集合 闪烁:不能用 Selection,否则会对整个屏幕进行整个刷新(抖动)。使用更新 Style 的方 法进行选定图元的闪烁。 记载图元的老样式:Set Oldsytle=Ftr.Style Lyr.Selection.Add Ftrs ‘将当前查询所得的结果集添加到已有的结果集中,再全部 高亮显示 C、对查询的结果集进行属性修改 示例程序:完成的是 Professional 中信息工具功能

Dim ds AS MapXlib.DatasetDim Flds AS MapXlib.FieldsDim Ftr AS MapXlib.FeatureSet Lyr=MainMap.Layers.Item(LayerName)Set ds=Lyr.Datasets.item(1)Set Flds=ds.Fields“查找SETFtrs=Lyr.Search(“IDLIKE《““%北京%”》”)If Ftrs.count= then exit sub“读取属性值ForI=lto Ftrs.CountSet Ftr=Ftrs.Item(I)For j-l to Flds.count“字段列表FldsName(J)=F1ds.Item(J).NameLyr. KeyField=FldsName (J)“值列表ValueStr (I,J)=Ftr.KeyValueNextNext“修改属性MainMap.AuyoRedraw=FalseLyr.Editable-TrueFor j=1 to Flds. countLyr.KeyField=Flds.Item(J).NameFtrs. Item(j).KeyValue =ValueStr(J)更新值列表Ftrs.Item(j).Update TrueNextLyr.RefreshLyr.Editable-FalseMainMap.AuyoRedraw-True“修改样式Dim NewStyleAS MapXlib.StyleWithNewStyle设置样式End WithMainMap.AuyoRedraw=FalseLyr.Editable=True
Dim ds AS MapXlib.Dataset Dim Flds AS MapXlib.Fields Dim Ftr AS MapXlib.Feature Set Lyr=MainMap.Layers.Item(LayerName) Set ds=Lyr.Datasets.item(1) Set Flds=ds.Fields ‘查找 SET Ftrs=Lyr.Search(“ID LIKE “%北京%”) If Ftrs.count=0 then exit sub ‘读取属性值 For I=1 to Ftrs.Count Set Ftr=Ftrs.Item(I) For j=1 to Flds.count FldsName(J)=Flds.Item(J).Name ‘字段列表 Lyr.KeyField=FldsName(J) ValueStr(I,J)=Ftr.KeyValue ‘值列表 Next Next ‘修改属性 MainMap.AuyoRedraw=False Lyr.Editable=True For j=1 to Flds.count Lyr.KeyField= Flds.Item(J).Name Ftrs.Item(j).KeyValue =ValueStr(J) ‘更新值列表 Ftrs.Item(j).Update True Next Lyr.Refresh Lyr.Editable=False MainMap.AuyoRedraw=True ‘修改样式 Dim NewStyle AS MapXlib.Style With NewStyle ‘设置样式 End With MainMap.AuyoRedraw=False Lyr.Editable=True

For i=1 to Ftrs.countSet Ftr =Ftrs.Item(1)“更新样式SETFtr.Style=NewStyleFtr.Update TrueNextLyr.RefreshLyr.Editable=FalseMainMap.AuyoRedraw-True2、空间查找²;点查找:SearchAtPoint,结果集为Features类型DimPntASMapXlib.PointPnt.Set X,YSet Ftrs=Lyr.SearchAtPoint(Pnt,miSearchResultAll)For I=1 to Ftrs.Count“执行语句Next注意:点查找时,一般情况下结果集在一个以上的图层都存在。所以取值时应分别提取²;园查找:在临时图层上画一个不保存的圆,然后查找被这个圆所包含的所有图层的图元对象。DimPntAS MapXlib.PointDimTempCirASMapXlib.FeatureDim FeaFac AS MapXLIB.featurefactoryPnt.Set X,YSettempcir=FeaFac.CreateCircularRegion(miCircleTypeMap,Pnt,l,MainMap.MapUnit,,)“miSearchTypeCentroidWithin:中心点包含miSearchTypePartiallyWithin:部分包含“miSearchTypeEntirelyWithin:全部包含SetFtrs=Lyr.SearchWithinFeature(TempCir,miSearchTypePartiallyWithin)ForI=ltoFtrs.Count“执行语句NextSET Pnt =Nothing
For i=1 to Ftrs.count Set Ftr =Ftrs.Item(I) SET Ftr.Style=NewStyle ‘更新样式 Ftr.Update True Next Lyr.Refresh Lyr.Editable=False MainMap.AuyoRedraw=True 2、 空间查找 ² 点查找:SearchAtPoint,结果集为 Features 类型 Dim Pnt AS MapXlib.Point Pnt.Set X,Y Set Ftrs=Lyr.SearchAtPoint(Pnt,miSearchResultAll) For I=1 to Ftrs.Count ‘执行语句 Next 注意:点查找时,一般情况下结果集在一个以上的图层都存在。所以取值时应分别提取 ² 园查找:在临时图层上画一个不保存的圆,然后查找被这个圆所包含的所有图层的 图元对象。 Dim Pnt AS MapXlib.Point Dim TempCir AS MapXlib.Feature Dim FeaFac AS MapXLIB.featurefactory Pnt.Set X,Y Set tempcir=FeaFac.CreateCircularRegion(miCircleTypeMap ,Pnt,1, MainMap.MapUni t,) ‘miSearchTypeCentroidWithin :中心点包含 ‘miSearchTypePartiallyWithin :部分包含 ‘miSearchTypeEntirelyWithin :全部包含 Set Ftrs=Lyr.SearchWithinFeature (TempCir, miSearchTypePartiallyWithin) For I=1 to Ftrs.Count ‘执行语句 Next SET Pnt =Nothing

set TempCir =Nothingset FeaFac =Nothing3、相交判断两个图元是否有交点以及交点坐标信息。(1)判断是否相交IFLyr.IntersectionTest(ftrl,ftr2, miIntersectFeature) THEN“交点END IF(2)获取相交点坐标信息‘交点Dim Ftr AS MapXlib.FeatureSETFtr=MainMap.FeatureFactory.IntersectFeatures(Ftrl,Ftr2)“交点坐标信息ForJ=ltoFtr.parts.item(1).countX1= Ftr.parts.item(1).Item(J).XY1=Ftr.parts.item(1).Item(J).YNext4、测距使用Map对象的Distance方法。如何测量任意多边形的周长?使用累加的方法,还要使用图元节点集合。DistanceValue=0“第一个点Pnt.Set Ftr.Parts.Item(1).Item(1).X,Ftr.Parts.Item(1).Item(i).YFor j=2 TO Ftr.Parts. Item(1).Count“累加X1= Ftr.Parts.Item(1).Item(j-1).XY1=Ftr.Parts.Item(1).Item(j-1).YX2=Ftr.Parts.Item(1).Item(j).XY2=Ftr.Parts.Item(1).Item(j).YDistanceValue =DistanceValue +MainMap.Distance(X1, Yl, X2, Y2)Next“多边形周长"+MainMap.MapUnitMsgboxDistanceValue+"四、对象编辑(1)、对属性的编辑主要使用Fields对象。示例:DimFlds AS MapXIIB.Fields
set TempCir =Nothing set FeaFac =Nothing 3、 相交 判断两个图元是否有交点以及交点坐标信息。 (1)判断是否相交 IF Lyr.IntersectionTest( ftr1, ftr2, miIntersectFeature ) THEN ‘交点 END IF (2)获取相交点坐标信息 ‘交点 Dim Ftr AS MapXlib.Feature SET Ftr=MainMap.FeatureFactory. IntersectFeatures(Ftr1,Ftr2) ‘交点坐标信息 For J=1 to Ftr.parts.item(1).count X1= Ftr.parts.item(1).Item(J).X Y1= Ftr.parts.item(1).Item(J).Y Next 4、 测距 使用 Map 对象的 Distance 方法。如何测量任意多边形的周长? 使用累加的方法,还要使用图元节点集合。 DistanceValue=0 ‘第一个点 Pnt.Set Ftr.Parts.Item(1).Item(1).X, Ftr.Parts.Item(1).Item(1).Y For j=2 TO Ftr.Parts.Item(1).Count ‘累加 X1= Ftr.Parts.Item(1).Item(j-1).X Y1= Ftr.Parts.Item(1).Item(j-1).Y X2= Ftr.Parts.Item(1).Item(j).X Y2= Ftr.Parts.Item(1).Item(j).Y DistanceValue = DistanceValue +MainMap.Distance(X1, Y1, X2, Y2) Next ‘多边形周长 Msgbox DistanceValue+” ”+MainMap.MapUnit 四、对象编辑 (1)、对属性的编辑 主要使用 Fields 对象。示例: Dim Flds AS MapXlIB.Fields

“修改当前图层的每一个字段For J=1 to Flds. Count“使当前图层指向J字段Lyr.KeyField=Flds.Item(i).Name“更新当前图元的J字段值Ftr.KeyValue=NewValueStr())Ftr.Update True“并未写入硬盘NextLyr.Refresh“保存修改到硬盘(2)、移动地图首先创建一个移动工具句柄MainMap.CreateCustomTool MoveFeature, miToolTypeLine,miPanCursor在Map对象的ToolUsed事件的ToolNum参数为当前所激活的工具捕捉MoveFeature工具句柄“传过来的参数:X1,Y1,X2,Y2Select case ToolNum.......Case MoveFeatureDim Lyr AS MapXlib.LayerDim Ftr AS MapXlib.FeatureDimFtrsASMapXlib.Features“坐标偏移量Dim Xe,Ye AS DoubleXe=X2-X1Ye=Y2-Y1SetLyr=Mainmap.Layers.Item(LayerName)“将当前图层中选定的集合复制到Ftrs变量中SetFtrs=Lyr.Selection.CloneMainMap.AutoRedraw=FalseLyr.Editable-TrueFor J=1 to Ftrs.CountSet Ftr=Ftrs.Item(J)Ftr.Offset Xe,YeFtr.Update TrueNextLyr.RefreshLyr.Editable=FalseMainMap.AutoRedraw-TrueSET 1yr=NothingSET Ftr=NothingEnd Select
‘修改当前图层的每一个字段 For J=1 to Flds.Count Lyr.KeyField= Flds.Item(j).Name ‘使当前图层指向 J 字段 ‘更新当前图元的 J 字段值 Ftr.KeyValue=NewValueStr(J) Ftr.Update True ‘并未写入硬盘 Next Lyr.Refresh ‘保存修改到硬盘 (2)、移动地图 首先创建一个移动工具句柄 MainMap.CreateCustomTool MoveFeature, miToolTypeLine, miPanCursor 在 Map 对象的 ToolUsed 事件的 ToolNum 参数为当前所激活的工具 捕捉 MoveFeature 工具句柄 ‘传过来的参数:X1,Y1,X2,Y2 Select case ToolNum . Case MoveFeature Dim Lyr AS MapXlib.Layer Dim Ftr AS MapXlib.Feature Dim Ftrs AS MapXlib.Features Dim Xe,Ye AS Double ‘坐标偏移量 Xe=X2-X1 Ye=Y2-Y1 Set Lyr=Mainmap.Layers.Item(LayerName) Set Ftrs=Lyr.Selection.Clone ‘将当前图层中选定的集合复制到 Ftrs 变量中 MainMap.AutoRedraw=False Lyr.Editable=True For J=1 to Ftrs.Count Set Ftr=Ftrs.Item(J) Ftr.Offset Xe,Ye Ftr.Update True Next Lyr.Refresh Lyr.Editable=False MainMap.AutoRedraw=True SET lyr=Nothing SET Ftr=Nothing End Select
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- MAPGIS制图培训教材(讲稿,共十讲).doc
- 《电子地图分析与导航》课程教学设计.pdf
- 《普通地图编制》课程教学设计.pdf
- 《地理科学导论》课程授课教案(文字版).pdf
- 《地理科学导论》课程教学大纲.pdf
- 《地理信息系统》课程教学资源(PPT课件)第1章 导论 Geographic Information System(1/3).ppt
- 《地理信息系统》课程教学资源(PPT课件)第1章 导论 Geographic Information System(3/3).ppt
- 《地理信息系统》课程教学资源(PPT课件)第1章 导论 Geographic Information System(2/3).ppt
- 《地理信息系统》课程教学资源(PPT课件)第2章 GIS的数据结构(1/3).ppt
- 《地理信息系统》课程教学资源(PPT课件)第2章 GIS的数据结构(2/3).ppt
- 《地理信息系统》课程教学资源(PPT课件)第2章 GIS的数据结构(3/3).ppt
- 《地理信息系统》课程教学资源(PPT课件)第3章 空间数据处理(1/2).ppt
- 《地理信息系统》课程教学资源(PPT课件)第5章 空间分析原理与方法(1/3).ppt
- 《地理信息系统》课程教学资源(PPT课件)第3章 空间数据处理(2/2).ppt
- 《地理信息系统》课程教学资源(PPT课件)第5章 空间分析原理与方法(2/3).ppt
- 《地理信息系统》课程教学资源(PPT课件)第4章 GIS空间数据库.ppt
- 《地理信息系统》课程教学资源(PPT课件)第5章 空间分析原理与方法(3/3).ppt
- 《地理信息系统》课程教学资源(PPT课件)第7章 GIS设计与评价.ppt
- 《地理信息系统》课程教学资源(PPT课件)第6章 GIS的应用模型(3/3).ppt
- 《地理信息系统》课程教学资源(PPT课件)第6章 GIS的应用模型(1/3).ppt
- 《气候与环境研究》:中国地区日照时数近50年来的变化特征.pdf
- 行星大气研究进展综述.pdf
