1 / 38

MapX4.5 新功能培训教程

MapX4.5 新功能培训教程. 创建新表. 数据类型 字符串 miTypeString = 0 数字 miTypeNumeric = 1 日期 miTypeDate = 2 整型 miTypeInt = 3 短整型 miTypeSmallInt = 4 浮点型 miTypeFloat = 5 逻辑类型 miTypeLogical = 6.

bill
Download Presentation

MapX4.5 新功能培训教程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MapX4.5新功能培训教程

  2. 创建新表 • 数据类型 字符串miTypeString = 0 • 数字 miTypeNumeric = 1 • 日期 miTypeDate = 2 • 整型 miTypeInt = 3 • 短整型 miTypeSmallInt = 4 • 浮点型 miTypeFloat = 5 • 逻辑类型 miTypeLogical = 6

  3. 增加字段的方法Fields.Add method - 增加字段 Fields.AddDateField method - 增加日期类型字段 Fields.AddFloatField method - 增加浮点类型的字段 Fields.AddIntegerField method - 增加浮点类型的字段 Fields.AddLogicalField method - 增加整数类型的字段 Fields.AddNumericField method - 增加数字类型的字段 Fields.AddSmallIntField method - 增加短整数类型的字段 Fields.AddStringField method - 增加字符类型的字段 • 删除字段Fields.Remove method - 删除一个字段 Fields.RemoveAll method - 删除所有字段

  4. 创建新表 - LayerInfo对象 LayerInfo.type常数 miLayerInfoTypeTemp = 6 - 临时表 miLayerInfoTypeNewTable = 7 - 磁盘表

  5. 创建新表 LayerInfo参数layerinfotype ; parameter ; required ; type miLayerInfoTypeTemp: Name: No; String; 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: Native(临时tab表), MemTable(存在于内存)。

  6. miLayerInfoTypeNewTabFileSpec:Yes ; String ; Name of .tab file for new table.Name:No ; String ; Name of the added layer ; Default: built on filespec. Fields:No ; Fields collection ; Specifies the column the table will have.Features:Yes,if no Fields ; Features collection; Specifies the rows to fill the table with ; Default: NONE .

  7. 示例For i = 1 To Grid1.Rows - 1 If InStr(StrType, "字符型") > 0 Then • flds.AddStringField StrName, NumWidth • ElseIf InStr(StrType, "整型") Then • flds.AddIntegerField StrName • ElseIf InStr(StrType, "短整型") Then • flds.AddSmallIntField StrName • ElseIf InStr(StrType, "浮点型") Then • flds.AddFloatField StrName • ElseIf InStr(StrType, "十进制型") Then • flds.AddNumericField StrName, NumWidth, NumDec • ElseIf InStr(StrType, "日期型") Then • flds.AddDateField StrName • ElseIf InStr(StrType, "逻辑型") Then • flds.AddLogicalField StrName • End If • Next i

  8. If Check2.Value = 1 Then‘创建新表 • LayerInfo.Type = 7 'miLayerInfoTypeNewTab • LayerInfo.AddParameter "filespec", filespec • ElseIf Check2.Value = 0 Then’创建临时表 • LayerInfo.Type = 6 'miLayerInfoTypeTemp • 'LayerInfo.AddParameter "TableStorageType", "MemTable" '临时文件保存在磁盘上还是内存。 • End If • LayerInfo.AddParameter "Name", layername • LayerInfo.AddParameter "Fields", flds • If Option_AddToDataset = True Then ’加入数据集 • LayerInfo.AddParameter "AutoCreate", 1 • LayerInfo.AddParameter "DatasetName", Text1.Text • End If

  9. 支持日期类型 • MapX4.5支持Date类型的字段,还有 Numeric 和 String类型的字段.也就是说,若从外部数据源引入数据到数据集时,日期类型的字段将作为日期类型被引入,而不是以字符串类型引入,或者不引入。日期的格式由控制面板上区域设置中的日期来定义。

  10. Dim DateFld As Date • ‘定义数据源 • OdbcQueryInfo.ConnectString = "odbc;" • OdbcQueryInfo.DataSource = “gcgl” ‘oracle数据库 • OdbcQueryInfo.SqlQuery = "select * from team" • ‘定义绑定层 • bindlayer.layername = "Team" • bindlayer.LayerType = miBindLayerTypeXY • bindlayer.RefColumn1 = "lng" '坐标字段-经度 • bindlayer.RefColumn2 = “lat” ‘坐标字段-纬度 • ‘绑定 • Set ds = Formmain.Map1.Datasets.add(miDataSetODBC, OdbcQueryInfo, "team", "Team", , bindlayer) • DateFld = ds.Value(1, ds.Fields.Count)’读出第一行日期值 • MsgBox DateFld

  11. 紧缩 • 在Mapx4.0下作紧缩时,只能事先创建一个带结构的空表。然后将记录加入到空表中。在Mapx4.5下可以使用LayerInfo 的创建带结构的临时表和新表的功能来完成紧缩的功能。

  12. 紧缩 • Set lyr = Formmain.Map1.Layers(ToolBars.combo1.Text) • Set ds = Formmain.Map1.Datasets.add(6, lyr) • '获取被紧缩表的路径及表名 • filespec = Formmain.Map1.Layers.Item(ToolBars.combo1.Text).filespec • layername = lyr.Name'将表临时存放于内存

  13. 紧缩 • LayerInfo.Type = 6 'miLayerInfoTypeTemp • LayerInfo.AddParameter "TableStorageType", "MemTable" '临时文件保存在磁盘上还是内存。 • LayerInfo.AddParameter "Name", "lyrpack" • LayerInfo.AddParameter "Fields", ds.Fields • LayerInfo.AddParameter "Features", lyr.AllFeatures • Formmain.Map1.Layers.add LayerInfo, LayerPos ‘注意: Set LayerInfo = Nothing

  14. 紧缩 • '从地图窗口删除原表 • Formmain.Map1.Datasets.Remove (ds.Name) • Formmain.Map1.Layers.Remove (lyr.Name) • Formmain.Map1.Refresh • Set lyr = Nothing • Set ds = Nothing • Set lyr = Formmain.Map1.Layers("lyrpack") • Set ds = Formmain.Map1.Datasets.add(6, lyr) • '从磁盘删除原表 • Kill filespec

  15. 紧缩 • ‘创建新表 • LayerInfo.Type = 7 'miLayerInfoTypeNewTab • LayerInfo.AddParameter "filespec", filespec • LayerInfo.AddParameter "Name", layername • LayerInfo.AddParameter "Fields", ds.Fields • LayerInfo.AddParameter "Features", lyr.AllFeatures • Formmain.Map1.Layers.add LayerInfo, LayerPos

  16. 紧缩 • 从地图窗口删除临时表 • Formmain.Map1.Datasets.Remove (ds.Name) • Formmain.Map1.Layers.Remove (lyr.Name) • Formmain.Map1.Refresh • '注意: • Set ds = Nothing • Set lyr = Nothing • Set LayerInfo = Nothing

  17. SQL查询 • Layer.search方法,使用Where子句,查询定位所需数据。 • Variable 对象和Variables集合: MapX4.5 在表达式中支持变量替换.通过Variable 对象和 Variables集合,一个表达式中将包含对任意变量的引用,如字符串类型,feature对象类型的数据。Layer.search将之作为一个可选参数。

  18. 地理运算符的使用 object1 CONTAINS object2:object2的中心点在object1中 object1 CONTAINS_ENTIRE object2:object2完全在object1中. • object1 CONTAINS_PART object2:object1与object2相交. • object1 ENTIRELY_WITHIN object2:object1完全在object2中. • object1 INTERSECTS object2:object1与object2相交 • object1 PARTIALY_WITHIN object2:object1与object2相交. • object1 WITHIN object2:object1的中心点在object2中.

  19. Dim f As MapXLib.Feature • Dim v As New MapXLib.Variables • 查找州中的某一个城市 • Set f = Map1.Layers.Item(“states”).Selection.Item(1) ‘选择州 • ‘ 将’城市‘的图层加入数据集 • Map1.Datasets.Add miDatasetLayer, Map1.Layers("us cities"), "citiesds". • v.Add “var1”, f ‘ 加入 feature 变量 • v.Add “svar”, “TX” ‘加入string 变量 • v.Add “dvar”, Date ‘ 加入 date 变量 • ‘ 查找并将结果放入features collection • Set ftrs = Map1.Layers.Item("us cities").Search("obj within var1 and year(dvar) = 2000 and state <> svar ", v) • ‘ 高亮显示 • Map1.Layers.Item("us cities").Selection.Replace ftrs

  20. 节点编辑 • 编辑条件: 1、具有节点的对象,如点(point),线(line),折线(polyline),区域(region)。节点可选择的对象有点,线,折线,区域。节点可增加的对象有点,线,面。不具有节点的对象有弧段(Arc),圆域(ellipse/circle),矩形(rectangle),圆角矩形(round rect),文本(text) 2、对象处于被选中且可编辑状态。 3、Map控件处于获得焦点状态。

  21. 选择节点: 选择工具(miSelectTool) 1. Click鼠标,选择一个 2. Ctrl+Click:在选择与不选择间切换;选择多个;或选择范围的首点 3. Shift+Click: 选择范围的尾点,离首点距离最短 4. Shift+Ctrl+click:选择范围的尾点,离首点距离最长

  22. 编辑模式:由Map1.FeatureEditMode来设置图元编辑模式 - 拖动四个句柄,改变图元的形状:Map1.FeatureEditMode = miEditModeFeature,默认值节点编辑模式: Map1.FeatureEditMode = miEditModeNode 移动或删除重叠的节点模式:Map1.FeatureEditMode = miEditModeNode | miMoveDuplicateNodes | miDeleteDuplicateNodes 增加节点模式: Map1.FeatureEditMode = miEditModeNode | miEditModeAddNode

  23. FeatureEditMode的常量设置miEditModeFeature = 0x1 miEditModeNode = 0x2 miMoveDuplicateNodes = 0x4 miDeleteDuplicateNodes = 0x8 miEditModeAddNode = 0x40

  24. 增加节点 • Private Sub Command1_Click() • Map1.Layers.Add "c:\program files\mapinfo\mapx 4.0\maps\usa.tab" • Map1.Layers.Item(1).Editable =True • Map1.Layers.Item(1).ShowNodes = True • Map1.CurrentTool = miSelectTool • Map1.FeatureEditMode = miEditModeNode Or miEditModeAddNode • End Sub

  25. 移动或删除单个图元上的节点,而与之邻接的图元上的节点并不移动或删除。移动或删除单个图元上的节点,而与之邻接的图元上的节点并不移动或删除。 • Formmain.Map1.FeatureEditMode = miEditModeNode • Formmain.Map1.SetFocus '获取焦点

  26. 移动相邻图元重叠(重合)的节点 • Formmain.Map1.FeatureEditMode = miEditModeNode or miMoveDuplicateNodes • Formmain.Map1.SetFocus '获取焦点

  27. 删除相邻图元重叠(重合)的节点 • Formmain.Map1.FeatureEditMode = miEditModeFeature or miDeleteDuplicateNodes • Formmain.Map1.SetFocus '获取焦点

  28. 新加函数 • 用于创建专题图,标注,SQL的表达式 • Buffer • DeformatNumber$ • Format$ • FormatDate$ • FormatNumber$ • StringCompare • StringCompareIntl • StringToDate • ObjectType

  29. 以buffer为例 [region object=] Buffer( inputobject, resolution, width, unit_name ) • Private Sub BufferState_Click() • Dim ftr As MapXLib.Feature • Dim ftrs As MapXLib.Features • Dim vars As New MapXLib.Variables • ’获取第一个州 • Set ftr = Map1.Layers.Item("USA").AllFeatures.Item(1) • vars.Add "varFirstState", ftr • ‘对图层 “USA”中每个对象做距离为 10 英里的buffer • Set ftrs = Map1.Layers.Item("USA").Search _ • ("buffer(obj, 4, 10, ""mi"") contains entire varFirstState", vars) • MsgBox ftrs.Count • End Sub

  30. 其他 • 支持DAO 3.6

  31. 连接Oracle8.1.6—VB6.0 • 使用LayerInfo对象加入oracle8i数据。 Dim lInfo As Object • Set lInfo = CreateObject("mapx.layerinfo.4") • lInfo.Type = 4 Dim ConnectStr As String • ConnectStr = "SRVR=" + Combo1 + ";UID=" + txtUserName.Text + ";PWD=" + txtPassword.Text

  32. 连接Oracle8.1.6 • lInfo.AddParameter "connectstring", ConnectStr • lInfo.AddParameter "name", "TempConnect" • lInfo.AddParameter "toolkit", "ORAINET" • lInfo.AddParameter "query", "select OBJECT from states where 1=0" • lInfo.AddParameter "cache", "OFF" • lInfo.AddParameter "mbrsearch", "ON" • g_map.Layers.Add lInfo • Set lInfo = Nothing

  33. 连接Oracle8.1.6——VC6.0 • CMapXLayers layers = m_ctrlMapX.GetLayers(); • CMapXLayerInfo layerInfo; • layerInfo.CreateDispatch( "MapX.LayerInfo.4"); • layerInfo.SetType(4); • if(dlg.DoModal()==IDOK) • { CString ConnectStr = "SRVR=map.mapinfo.com.cn;UID=dzn;PWD=dzn";

  34. 连接Oracle8.1.6——VC6.0 • layerInfo.AddParameter("connectstring",COleVariant(ConnectStr)); • layerInfo.AddParameter("name",COleVariant("USA"); • layerInfo.AddParameter("toolkit",COleVariant("ORAINET")); • layerInfo.AddParameter("query",COleVariant("Select * from • China")); • layerInfo.AddParameter("cache",COleVariant("ON"); • layerInfo.AddParameter("mbrsearch",COleVariant("OFF"); • layers.RemoveAll(); • layers.Add(layerInfo);

  35. 下载Oracle8i的各参数含义 缓冲区Cache ON - 下载数据放在内存和磁盘(*.map,*.id),这将有助于提高选择速度、刷新速度,平移,放大的操作的速度。缺点下载速度较OFF慢。平移若超出缓冲区所存的数据范围,将从数据库中读取数据,这将影响缩小及平移的速度。 OFF –下载速度快,选择速度慢、平移和缩小、放大慢 MBR Search ON -在从数据库载入数据时要占用一定的时间。

  36. 不同参数设置时下载时间对比 PII 333 64M 数据表为31002条记录情况下: cashe MBRsearch Time off off 0:0:56 on on 0:3:56 on off 0:2:12 off on 0:1:20

  37. 增加图元-PRINX • Dim rv As New MapXLib.RowValue • Dim rvs As New MapXLib.RowValues • Set ftr = FtrFac.CreateRegion(points, Map1.DefaultStyle) • Set rv.Dataset = Map1.Datasets.Item(1) • Set rv.Field = Map1.Datasets.Item(1).Fields("mi_prinx") • rv.Value = Str(Map1.Layers(ToolBars.Combo1).AllFeatures.Count + 1) • rvs.Add rv • lyr.AddFeature ftr, rvs

  38. 谢谢!

More Related