《MapX45新功能培训教程》由会员分享,可在线阅读,更多相关《MapX45新功能培训教程(37页珍藏版)》请在金锄头文库上搜索。
1、9/22/202419/22/20241MapX4.5新功能培训教程MapX45新功能培训教程9/22/202429/22/20242创建新表创建新表数据类型 字符串 miTypeString = 0 数字 miTypeNumeric = 1日期 miTypeDate = 2整型 miTypeInt = 3短整型 miTypeSmallInt = 4浮点型 miTypeFloat = 5逻辑类型 miTypeLogical = 6MapX45新功能培训教程9/22/202439/22/20243增加字段的方法 Fields.Add method - 增加字段 Fields.AddDateFie
2、ld method - 增加日期类型字段 Fields.AddFloatField method - 增加浮点类型的字段 Fields.AddIntegerField method - 增加浮点类型的字段 Fields.AddLogicalField method - 增加整数类型的字段 Fields.AddNumericField method - 增加数字类型的字段 Fields.AddSmallIntField method - 增加短整数类型的字段 Fields.AddStringField method - 增加字符类型的字段删除字段 Fields.Remove method - 删
3、除一个字段 Fields.RemoveAll method - 删除所有字段 MapX45新功能培训教程9/22/202449/22/20244创建新表 - LayerInfo对象 LayerInfo.type常数 miLayerInfoTypeTemp = 6 - 临时表 miLayerInfoTypeNewTable = 7 - 磁盘表 MapX45新功能培训教程9/22/202459/22/20245创建新表 LayerInfo参数 layerinfotype ; parameter ; required ; type miLayerInfoTypeTemp: Name: No; Str
4、ing; Name of the added layer ; Default: LayerX”。 Fields:No ; Fields collection ; Specifies the column(s) the table will have。 Features:Yes, if no fields ; Features collection ; Specifies the rows to fill the table with ; Default: none。TableStorageType:No ; String ; Default: Native,Valid options: Nat
5、ive(临时tab表), MemTable(存在于内存)。MapX45新功能培训教程9/22/202469/22/20246 miLayerInfoTypeNewTab :Yes ; String ; Name of .tab new table. Name:No ; String ; Name of the added layer ; Default: built on . Fields:No ; Fields collection ; Specifies the column the table will have. Features:Yes,if no Fields ; Features
6、 collection; Specifies the rows to fill the table with ; Default: NONE .MapX45新功能培训教程9/22/202479/22/20247示例示例 For i = 1 To Grid1.Rows - 1 If InStr(StrType, 字符型) 0 Then flds.AddStringField StrName, NumWidthElseIf InStr(StrType, 整型) Then flds.AddIntegerField StrNameElseIf InStr(StrType, 短整型) Then flds
7、.AddSmallIntField StrNameElseIf InStr(StrType, 浮点型) Then flds.AddFloatField StrNameElseIf InStr(StrType, 十进制型) Then flds.AddNumericField StrName, NumWidth, NumDecElseIf InStr(StrType, 日期型) Then flds.AddDateField StrNameElseIf InStr(StrType, 逻辑型) Then flds.AddLogicalField StrNameEnd If Next iMapX45新功
8、能培训教程9/22/202489/22/20248If Check2.Value = 1 Then创建新表 LayerInfo.Type = 7 miLayerInfoTypeNewTab LayerInfo.AddParameter , ElseIf Check2.Value = 0 Then创建临时表 LayerInfo.Type = 6 miLayerInfoTypeTemp LayerInfo.AddParameter TableStorageType, MemTable 临时文件保存在磁盘上还是内存。 End If LayerInfo.AddParameter Name, layer
9、name LayerInfo.AddParameter Fields, flds If Option_AddToDataset = True Then 加入数据集 LayerInfo.AddParameter AutoCreate, 1 LayerInfo.AddParameter DatasetName, Text1.Text End IfMapX45新功能培训教程9/22/202499/22/20249支持日期类型MapX4.5 支持Date 类型的字段,还有 Numeric 和 String类型的字段.也就是说,若从外部数据源引入数据到数据集时,日期类型的字段将作为日期类型被引入,而不是
10、以字符串类型引入,或者不引入。日期的格式由控制面板上区域设置中的日期来定义。MapX45新功能培训教程9/22/2024109/22/202410Dim DateFld As Date定义数据源 OdbcQueryInfo.ConnectString = odbc; OdbcQueryInfo.DataSource = “gcgl” oracle数据库 OdbcQueryInfo.SqlQuery = select * from team 定义绑定层 bindlayer.layername = Team bindlayer.LayerType = miBindLayerTypeXY bindl
11、ayer.RefColumn1 = lng 坐标字段-经度 bindlayer.RefColumn2 = “lat” 坐标字段-纬度绑定 DateFld MsgBox DateFldMapX45新功能培训教程9/22/2024119/22/202411紧缩在Mapx4.0下作紧缩时,只能事先创建一个带结构的空表。然后将记录加入到空表中。在Mapx4.5下可以使用LayerInfo 的创建带结构的临时表和新表的功能来完成紧缩的功能。MapX45新功能培训教程9/22/2024129/22/202412 获取被紧缩表的路径及表名 layername = lyr.Name 将表临时存放于内存 紧缩M
12、apX45新功能培训教程9/22/2024139/22/202413LayerInfo.Type = 6 miLayerInfoTypeTemp LayerInfo.AddParameter TableStorageType, MemTable 临时文件保存在磁盘上还是内存。 LayerInfo.AddParameter Name, lyrpack LayerInfo.AddParameter Fields, ds.Fields LayerInfo.AddParameter Features, lyr.AllFeaturesLayerInfo, LayerPos 注意: Set LayerIn
13、fo = Nothing 紧缩MapX45新功能培训教程9/22/2024149/22/202414从地图窗口删除原表 Set lyr = Nothing Set ds = Nothing 从磁盘删除原表 Kill 紧缩MapX45新功能培训教程9/22/2024159/22/202415创建新表LayerInfo.Type = 7 miLayerInfoTypeNewTabLayerInfo.AddParameter , LayerInfo.AddParameter Name, layernameLayerInfo.AddParameter Fields, ds.FieldsLayerInf
14、o.AddParameter Features, lyr.AllFeatures 紧缩MapX45新功能培训教程9/22/2024169/22/202416从地图窗口删除临时表从地图窗口删除临时表 ds.Name)lyr.Name) 注意: Set ds = Nothing Set lyr = Nothing Set LayerInfo = Nothing紧缩MapX45新功能培训教程9/22/2024179/22/202417SQL查询 Layer.search方法,使用Where子句,查询定位所需数据。Variable 对象和Variables集合: MapX4.5 在表达式中支持变量替换
15、.通过Variable 对象和 Variables集合,一个表达式中将包含对任意变量的引用,如字符串类型,feature对象类型的数据。Layer.search将之作为一个可选参数。MapX45新功能培训教程9/22/2024189/22/202418地理运算符的使用 object1 CONTAINS object2:object2的中心点在object1中 object1 CONTAINS_ENTIRE object2:object2完全在object1中.object1 CONTAINS_PART object2: object1与object2相交.object1 ENTIRELY_WI
16、THIN object2:object1完全在object2中.object1 INTERSECTS object2:object1与object2相交object1 PARTIALY_WITHIN object2:object1与object2相交.object1 WITHIN object2:object1的中心点在object2中.MapX45新功能培训教程9/22/2024199/22/202419Dim f As MapXLib.FeatureDim v As New MapXLib.Variables 查找州中的某一个城市 将城市的图层加入数据集v.Add “var1”, f 加入
17、 feature 变量v.Add “svar”, “TX” 加入string 变量v.Add “dvar”, Date 加入 date 变量 查找并将结果放入features collection 高亮显示MapX45新功能培训教程9/22/2024209/22/202420节点编辑编辑条件编辑条件: 1、具有节点的对象,如点(point),线(line),折线(polyline),区域(region)。节点可选择的对象有点,线,折线,区域。节点可增加的对象有点,线,面。不具有节点的对象有弧段(Arc),圆域(ellipse/circle),矩形(rectangle),圆角矩形(round r
18、ect),文本(text) 2、对象处于被选中且可编辑状态。 3、Map控件处于获得焦点状态。MapX45新功能培训教程9/22/2024219/22/202421选择节点选择节点: 选择工具(选择工具(miSelectTool ) 1. Click鼠标,选择一个 2. Ctrl+Click:在选择与不选择间切换;选择多个;或选择范围的首点 3. Shift+Click: 选择范围的尾点,离首点距离最短 4. Shift+Ctrl+click:选择范围的尾点,离首点距离最长MapX45新功能培训教程9/22/2024229/22/202422编辑模式:由编辑模式:由Map1.FeatureEd
19、itMode来设置来设置图元编辑模式 - 拖动四个句柄,改变图元的形状:Map1.FeatureEditMode = miEditModeFeature,默认值节点编辑模式: Map1.FeatureEditMode = miEditModeNode 移动或删除重叠的节点模式:Map1.FeatureEditMode = miEditModeNode | miMoveDuplicateNodes | miDeleteDuplicateNodes 增加节点模式: Map1.FeatureEditMode = miEditModeNode | miEditModeAddNodeMapX45新功能培
20、训教程9/22/2024239/22/202423FeatureEditMode的常量设置的常量设置miEditModeFeature = 0x1 miEditModeNode = 0x2 miMoveDuplicateNodes = 0x4 miDeleteDuplicateNodes = 0x8 miEditModeAddNode = 0x40MapX45新功能培训教程9/22/2024249/22/202424 增加节点增加节点 Private Sub Command1_Click() mapx 4.0mapsusa.tab ShowNodes = True Map1.CurrentTo
21、ol = miSelectTool Map1.FeatureEditMode = miEditModeNode Or miEditModeAddNode End SubMapX45新功能培训教程9/22/2024259/22/202425移动或删除移动或删除单个图元上的节点,而与之邻接的图元上的节点并不移动或删除。 Formmain.Map1.FeatureEditMode = miEditModeNode Formmain.Map1.SetFocus 获取焦点MapX45新功能培训教程9/22/2024269/22/202426移动移动相邻图元重叠重叠(重合)的节点节点 Formmain.M
22、ap1.FeatureEditMode = miEditModeNode or miMoveDuplicateNodes Formmain.Map1.SetFocus 获取焦点MapX45新功能培训教程9/22/2024279/22/202427删除相邻图元重叠(重合)的节点删除相邻图元重叠(重合)的节点 Formmain.Map1.FeatureEditMode = miEditModeFeature or miDeleteDuplicateNodes Formmain.Map1.SetFocus 获取焦点MapX45新功能培训教程9/22/2024289/22/202428新加函数新加函数
23、用于创建专题图,标注,用于创建专题图,标注,SQL的的表达式表达式BufferDeformatNumber$Format$ FormatDate$FormatNumber$StringCompareStringCompareIntlStringToDateObjectTypeMapX45新功能培训教程9/22/2024299/22/202429以buffer为例 region object= Buffer( inputobject, resolution, width, unit_name )Private Sub BufferState_Click() Dim ftr As MapXLib.
24、Feature Dim ftrs As MapXLib.Features Dim vars As New MapXLib.Variables获取第一个州 Set ftrAllFeatures.Item(1) vars.Add varFirstState, ftr 对图层 “USA”中每个对象做距离为 10 英里的buffer Set ftrs (buffer(obj, 4, 10, mi) contains entire varFirstState, vars) MsgBox ftrs.CountEnd SubMapX45新功能培训教程9/22/2024309/22/202430其他其他支持支
25、持DAO 3.6MapX45新功能培训教程9/22/2024319/22/202431使用使用LayerInfo对象加入对象加入oracle8i数据数据。 Dim lInfo As ObjectSet lInfo = CreateObject(mapx.layerinfo.4)lInfo.Type = 4 Dim ConnectStr As StringConnectStr = SRVR= + Combo1 + ;UID= + txtUserName.Text + ;PWD= + txtPassword.TextMapX45新功能培训教程9/22/2024329/22/202432lInfo.
26、AddParameter connectstring, ConnectStr lInfo.AddParameter name, TempConnect lInfo.AddParameter toolkit, ORAINETlInfo.AddParameter query, select OBJECT from states where 1=0 lInfo.AddParameter cache, OFF lInfo.AddParameter mbrsearch, ON lInfo Set lInfo = NothingMapX45新功能培训教程9/22/2024339/22/202433 CMa
27、pXLayersCMapXLayers layers = m_ layers = m_ctrlMapXctrlMapX. .GetLayersGetLayers();(); CMapXLayerInfo layerInfoCMapXLayerInfo layerInfo; ; layerInfolayerInfo. .CreateDispatchCreateDispatch( ( MapXMapX. .LayerInfoLayerInfo.4);.4); layerInfolayerInfo. .SetTypeSetType(4);(4); if(if(dlgdlg. .DoModalDoMo
28、dal()=IDOK)()=IDOK) CString ConnectStr CString ConnectStrcncn;UID=;UID=dzndzn;PWD=;PWD=dzndzn;MapX45新功能培训教程9/22/2024349/22/202434 layerInfo.AddParameter(connectstring,COleVariant(ConnectlayerInfo.AddParameter(connectstring,COleVariant(ConnectStr);Str); layerInfo.AddParameter(name,COleVariant(USA);la
29、yerInfo.AddParameter(name,COleVariant(USA); layerInfo.AddParameter(toolkit,COleVariant(ORAINET);layerInfo.AddParameter(toolkit,COleVariant(ORAINET); layerInfo.AddParameter(query,COleVariant(Select * fromlayerInfo.AddParameter(query,COleVariant(Select * from China);China); layerInfo.AddParameter(cach
30、e,COleVariant(ON);layerInfo.AddParameter(cache,COleVariant(ON); layerInfo.AddParameter(mbrsearch,COleVariant(OFF);layerInfo.AddParameter(mbrsearch,COleVariant(OFF); layers.RemoveAll();layers.RemoveAll(); layers.Add(layerInfo);layers.Add(layerInfo);MapX45新功能培训教程9/22/2024359/22/202435缓冲区Cache ON - 下载数
31、据放在内存和磁盘(*.map,*.id),这将有助于提高选择速度、刷新速度,平移,放大的操作的速度。缺点下载速度较OFF慢。平移若超出缓冲区所存的数据范围,将从数据库中读取数据,这将影响缩小及平移的速度。OFF 下载速度快,选择速度慢、平移和缩小、放大慢MBR SearchON -在从数据库载入数据时要占用一定的时间。下载下载Oracle8iOracle8i的各参数含义的各参数含义MapX45新功能培训教程9/22/2024369/22/202436PII 333 64M 数据表为数据表为31002条记录情况下:条记录情况下: cashe MBRsearch Time off off 0:0:
32、56 on on 0:3:56 on off 0:2:12 off on 0:1:20不同参数设置时下载时间对比MapX45新功能培训教程9/22/2024379/22/202437增加图元增加图元-PRINX Dim rv As New MapXLib.RowValue Dim rvs As New MapXLib.RowValues Set ftr = FtrFac.CreateRegion(points, Map1.DefaultStyle) Set rv Set rvprinx) rv.Value = Str(Map1.Layers(ToolBars.Combo1).AllFeatures.Count + 1) rvs.Add rv lyr.AddFeature ftr, rvsMapX45新功能培训教程