Oracle[转]MapX 操作总结

原贴地址:http://hi.baidu.com/story\_of\_water/blog/item/e47e90b66556eafc30add19f.html

同等、加载地图数据  

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 ′创建管线
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 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.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.count
Set Ftr =Ftrs.Item(I)
SET Ftr.Style=NewStyle ‘更新样式
Ftr.Update True
Next

Lyr.Refresh
Lyr.Editable=False
MainMap.AuyoRedraw=True

2、 空间查找
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
小心:点查找时,一般景象下结果集在一个以上之图层都在。所以取值时承诺分别取

2
园查找:在现图层上画画一个无保留之圆满,然后搜索被此圆所包含的拥有图层的图元对象。
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.MapUnit,,)

‘miSearchTypeCentroidWithin :中心点包含
‘miSearchTypePartiallyWithin :部分含有
‘miSearchTypeEntirelyWithin :全部暗含

Set Ftrs=Lyr.SearchWithinFeature (TempCir,
miSearchTypePartiallyWithin)

For I=1 to Ftrs.Count
‘执行语句
Next

SET Pnt =Nothing
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
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
(3)、样式更新
Dim NewStyle AS MapXLib.Style

‘初始赋值
Set Lyr=MainMap.Layers.Item(LayerName)
Set Ftrs=Lyr.AllFeatures
Set NewStyle=Ftrs.Item(1).Style
‘设置样式
With NewStyle
.SymbolType = miSymbolTypeBitmap
.SymbolBitmapSize = 24
.SymbolBitmapTransparent = False
.SymbolBitmapName = “YIEL2-32.BMP”
End With
‘更新
MainMap.AutoRedraw=False
Lyr.Editable=True
SET Ftr.Style=NewStyle
Ftr.Update True
Lyr.Refresh
Lyr.Editable=False
MainMap.AutoRedraw=True

五、输出

1、属性之输出 输出到EXCEL表:
For I=1 to Flds.Count
Lyr.KeyFields=Flds.Item(i).Name
Excel(1,I).Cell=Ftr.Keyvalue
Next
2、复制、粘贴
Global CopyFtrs AS MapXlib.Features

Set lyr=mainmap.Layers.item(LayerName)
Set Ftrs=Lyr.Selection.Clone ‘复制选中集合
‘复制
For I=1 to Ftrs.Count
CopyFtrs.add Ftrs.Item(I)
Next

‘粘贴(图形)
Set lyr_1=mainmap.Layers.item(LayerName_1)
Mainmap.AutoRedraw=False
Lyr_1.Editabled=True
For J=1 to CopyFtrs.Count
Lyr_1.AddFeature CopyFtrs.Item(J)
Next
Lyr_1.Refresh
Mainmap.AutoRedraw=True
Lyr_1.Editabled=False

3、地图的打印
Dim iScaleMode As Integer

iScaleMode = MainMap.Container.ScaleMode
MainMap.Container.ScaleMode = 6

On Error GoTo PrinterError

Printer.Print ” “
Printer.CurrentX = 0
Printer.CurrentY = 0
MainMap.PrintMap Printer.hDC, 0, 0, MainMap.Width * 100, MainMap.Height
* 100
Printer.NewPage
Printer.EndDoc
MainMap.Container.ScaleMode = iScaleMode
Exit Sub

PrinterError:
If Err.Number = 482 Then
On Error Resume Next
CommonDialog1.Flags = &H40
CommonDialog1.ShowPrinter
Else
MsgBox ” 打印机存在不当,请复凑巧后重试。错误号:” + (Str(Err.Number)), ,
“失败”
End If

4、另存也图文件
MainMap.ExportMap(App.Path+”Images”, miFormatJPEG) ‘输出当前地图窗口
参数设置:MainMap.ExportSelection=True
‘将入选部分盖不同于其它不入选地图局部款式出口

六、专题图

6种植专题图:除独立值专题图绑定的字段类型可以是字符的外场,都必须是数字型。与其他数据源绑定时,使用ODBC
调用ThemeDlg对话框可以为用户自己定义专题图。示例:
For Each ftr In lyr.Selection

′ The children of the layer are the individual

′ features

Set ftrNode = QueryTree.Nodes.Add(lyrNode, tvwChild,lyr.Name _

& ftr.Name & Str$(ftr.FeatureID), ftr.Name)

For Each fld In ds.Fields

′ Each feature has data attached to it; add

′ this data as a child of the feature

lyr.KeyField = fld.Name

QueryTree.Nodes.Add ftrNode, tvwChild, , lyr.KeyField _

& “: ” & ftr.Keyvalue

Next

Next

七、在MapX下紧缩表

于Professional里面,紧缩表用 Pack Table
语句完成。而当MapX中则用运用临时图层,并因而复制技术来完成。示例:
‘紧缩当前Map对象中的具备图层
Dim LayerInfo As New MapXLib.LayerInfo
Dim Lyr As MapXLib.Layer
Dim LyrTemp As MapXLib.Layer
Dim Flds As MapXLib.Fields
Dim Ds As MapXLib.Dataset

Dim I As Integer
Dim LayerName, FilePath As String

On Error Resume Next

For I = MainMap.Layers.Count To 1 Step -1
′复制源表数据到临时表
Set Lyr = MainMap.Layers.Item(I)
Set Ds = Lyr.Datasets.Item(1)
Set Flds = Ds.Fields

LayerName = Lyr.Name

LayerInfo.Type = miLayerInfoTypeTemp
LayerInfo.AddParameter “FileSpec”, LayerName
LayerInfo.AddParameter “NAME”, LayerName
LayerInfo.AddParameter “Features”, Lyr.AllFeatures‘复制所有中图元
LayerInfo.AddParameter “Fields”, Flds ’复制字段列表

LayerInfo.AddParameter “AutoCreateDataset”, 1
LayerInfo.AddParameter “datasetname”, LayerName
Set LyrTemp = MapTemp.Layers.Add(LayerInfo, 1) ‘复制到另外Map对象

′删除源表
Set Lyr = Nothing
FilePath = MainMap.Layers.Item(I).Filespec
LayerName = Mid(FilePath, InStr(1, FilePath, “Maps” + 6, Len(FilePath) –
InStr(1, FilePath, “Maps”)
FilePath = Mid(FilePath, 1, InStr(1, FilePath, “Maps” + 5)
LayerName = Mid(LayerName, 1, Len(LayerName) – 4)

MainMap.Layers.Remove (I)
MainMap.Refresh

Kill FilePath + LayerName + “.TAB”

′复制临时表数据到源表
Set LyrTemp = MapTemp.Layers.Item(LayerName)

LayerInfo.Type = miLayerInfoTypeNewTable
LayerInfo.AddParameter “FileSpec”, FilePath + LayerName + “.TAB”
LayerInfo.AddParameter “NAME”, LayerName
LayerInfo.AddParameter “Features”, LyrTemp.AllFeatures
LayerInfo.AddParameter “Fields”, Flds

LayerInfo.AddParameter “AutoCreateDataset”, 1
LayerInfo.AddParameter “datasetname”, LayerName
Set Lyr = MainMap.Layers.Add(LayerInfo, 1)

′删除临时表
MapTemp.Layers.Remove (MapTemp.Layers.Count)
MapTemp.Refresh
Next

Set Lyr = Nothing
Set Ds = Nothing
Set Flds = Nothing
Set LayerInfo = Nothing

八、如何跟大型数据库关联

网是混合结构:对地图的看使的是文本访问方式,对属性数据的拜访使的是巨型数据库形式利用ID关联:在TAB表和数据库中发生ID字段,两单字段作为唯一值关联字段。(一对一底关系)。示例:

Lyr.KeyField=”ID”
Set Ftr=Ftrs.Item(J)

‘SQL语句查找对应的性信息
SampleAdo.RecordSource =”Select a.id as id,b.name as name from Table1 a,
Table2 b WHERE (a.id=b.id) AND ( a.id LIKE ‘%“ +Ftr.Keyvalue+“%’)”

九、空间数据库

2
空间数据库中之目技术从而底凡R_Tree技术,而休是原一般意义及之B_Tree索引技术。
2 空间数据在Spatial中为地理特性信息形式存放。
2 在Oracle的版本被出如下需要注意事项:
a) Oracle
8.1.5是本被,首赖引入Spatial组件。使用及老糟糕:图形的样式非常单一,且为黑白的假设非彩色,上载地图数据常常,数据丢失坏惨重。存取数据时好慢。在Spatial中自行创建prinx字段作为地图索引主关键字段
b) Oracle
8.1.6本子:图形为花团锦簇的,增加了体的支撑,但未支持同一图层下的多样式(主要指对象)。创建地图数据经常,地图的坐标常来偏移。属性数据更新
时,需要简单不良刷新才能够完整提交;地图数据数据交由时,其坐标发生偏移:向原点偏移,需要看地独自将该动到该开头创建位置。存取速度上或者于缓慢,离实
用尚有必然距离。在Spatial中自行创建mi_prinx字段作为地图索引主关键字段
2 Oracle
8.1.7版:支持多样式,数据达充满丢失坏小(只有文本对象有丢失的记录)。在地形图数据存取不是老怪之时段,速度达到可以吃用户接受。
2 如何以MapInfo 的TAB表内容达盛传Oracle 中?
a) 免费工具:easyloader6.7(Oracle
8.1.7),下载地址Oracle 1http://www.mapinfo.com.cn
/;
b) 如何达到载?注意:上载之前对Tab表进行缩小。
c) 在先后中什么使空间数据库中之地形图数据?
d)
添加地形图时,必须指定字段mi_prinx的肯定值,且该值未克啊说明中就是的价值。写副地图数据常常,应将那全NOT
NULL 字段值赋给,否则保存失败。
e) 示例:Tab表+空间数据表 的数据分布形式。

十、GIS应用的散发

1、
制作而协调之系的安装盘:可执行文件、必要系统文件、运行库文件、其他数据文件。
2、 单独的MapX安装盘:MapInfo MapX
Runtime安装程序,实际上是MapX控件安装程序(存在于MapX sdk包)
3、
注册:安装好之后,运行GeosetManager40.exe程序获取硬件ID号,然后通过EMAIL的花样拿该ID号发送至MapX产品供应商申请
正式的认可文件(mapx40.lic)。获得后挂原mapx40.lic文件即可。注意:硬盘格式化后该ID号失效。

十一、构造一个GIS应用系统

求:鹰眼功能、拓扑关系、不同图形不同颜色呈现、数据绑定、系统特性。

组织解析:做根据TAB文件的GIS系统
1、 鹰眼功能
(1) 建立两只Form对象,将少独Map对象分别在立片个窗口对象中。
(2) 一个有些窗口作为鹰眼窗口,大
窗口作为主地图窗口。鹰眼窗口中之Map对象的视野应充分十分,而主地图窗口的视野根据需要设置。
(3)
两个窗口中加载不同的GST文件。需要之是主地图窗口的示范围应为鹰眼窗口中之一矩形所蕴含的地图对象范围。
(4) A、在鹰眼窗口中画一个矩形(Rect为矩形对象),B、主地图窗口实行 Set
MainMap.Bounds = Rect
(5) 需要注意的凡:鹰眼窗口与主地图窗口两者中的坐标投影系统应完全一致。

2、 拓扑关系
实则就是图元与图元的上空关系。说历史:原来建立拓扑关系下的凡性质关联。
接触查询、圆查询、矩形查询、多边形查询等这些是属于简单空间关系之对立统一。而针对性拓扑关系的查询多数情形下利用Parts对象来缓解。
Ftr1与外一个Ftr2底上空关系:先找到Ftr1的其止节点,然后盖这节点吧主导画一个好小之通盘,在此圆范围内的某部设备可当跟该Ftr1相连。
判定有图元在指定图层上的交接对象集合:
Set Ftrs=Lyr.SearchWithinFeature (SearchFtr,
miSearchTypePartiallyWithin)

3、 不同图形不同颜色呈现
(1)更新样式
再组成临时图层就得死好解决(使用图层刷新)。而且刷新时莫会见挑起上上下下Map对象的基础代谢(屏幕抖动)
(2)专题图 存在创新属性值后未能够实时刷新专题图的题目。
4、 数据绑定
针对不绑定的习性集合使用 MainMap.Datasets.ADD
地图集合和性能集合为一个数据集合的不可分割的简单个部分
5、 系统性能
快是不是也用户所承受、系统是否平安(界面要求)、修改数据数据的当儿是不是留存多少一致性维护问题、造价是否站得住。
(1)速度:使用数据分布可以于好地解决:地图数据:地形图数据为文件形式存放,业务地图数据存放于空间数据库中;属性数据:全部存放于巨型数据库中。

(2)系统是否稳定(界面要求):A、字段全部因此英文,B、地图拓扑关系在入系统以前进行必要之辨证,C、文件地图数据遭到配段往往减去到最好小,可要
访问属性频率大大减少,可有效担保其他用户访问时无会见大量涌出访问拒绝的场面;D、数据提交时尽量使用事务机制:
事务开始:
Lyr.BeginAccess,事务了:Lyr.EndAccess;E、数据修改提交时尽可能用批量提交。至于界面要求,应着重满足从地图对象获得
取相关的渴求。
(3)数据一致维护:遵循图元优先的规则。图形对象要首先在,其他有关信息于斯基础及树立。注意:
2 修改时许先行改地图对象,后交属性信息
2 删除时承诺先去其他消息,最后去图形信息
(4)造价
这里要靠平台费用。A、现有数量格式,B、功能要求:空间分析是否复杂、地图图层是否分散、系统受到地图输出的色要求、系统受统计分析复杂程度是否正如麻烦、直接的平台运用用户数(并发数)。

 

相关文章