?? mapx中文培訓教材 在線看 ← mapinfo ← 地理信息系統論壇社區.htm
字號:
對象,然后修改該 Graphic 對象。<BR>第十一節
柵格圖像<BR>柵格圖像是計算機化的圖片類型,由多行點(像素)構成。柵格圖像有時被稱為位圖。航空照片和衛星圖像是 GIS
中的柵格數據的常見類型。<BR>將柵格圖像作為地圖圖層顯示 <BR>使用 MapX 可以將柵格圖像(位圖)作為所創建地圖的背景顯示。但是柵格圖像必需首先成為
MapInfo 表的一部分。然后可以在圖像的上方覆蓋另外的數據,如街道地圖和客戶位置。
<BR><BR>盡管柵格圖像可以成為地圖圖片,但圖像不能有附加數據。圖像只能作為背景或襯墊來觀看。
<BR>如何顯示柵格圖像<BR>每幅柵格圖像都必須有相應的‘TAB’文件來存儲圖像的地理坐標。TAB 文件通過使用 MapInfo Professional
來創建并‘注冊’相應的圖像。<BR>說明:將柵格圖像作為地圖圖層顯示時,MapX
會自動設置所有的矢量地圖圖層的旋轉和投影,以便使它們與柵格圖像的旋轉和投影相配。<BR>第十二節 動態圖層<BR>Animation
圖層在地圖圖元需要經常更新(例如在實時應用時)時很有用。例如,可以開發一套艦隊管理應用程序,將每一艘艦船用一個點對象來代表。 可以通過使用
GPS(全球衛星定位)技術獲取艦船的當前位置,然后更新點對象以顯示艦船在地圖上的更新位置。在這類應用程序中,如果被更新的對象存儲在動態圖層而不是常規圖層,那么在地圖對象經常改變的地方,地圖可以更快地重新繪制。<BR>最初,AnimationLayer
設置為 null。可以向 Layer 對象分派屬性以使圖層成為動態圖層(它可以是常規圖層或是用戶繪制圖層)。當圖層被分派了 AnimationLayer
屬性,它就會繪制在所有圖層的上方,包括 Annotations 圖層和選擇結果。該圖層仍然在 Layers
集合中的同樣位置。浮動對象如圖標符號仍然顯示在動態圖層的頂端,盡管它們因為被省略了而不必每次重新繪制。如果普通的圖層被用作動態圖層,其選擇結果和標注會依然有效。<BR>示例<BR>Set
Map.Layers.AnimationLayer = Layers(3)<BR>for each lyr in Map.Layers<BR>if
Map.Layers.AnimationLayer = lyr then<BR>... <BR>end
if<BR>next<BR>要關閉動態圖層,給它賦予空值:<BR>Set Map.Layers.AnimationLayer =
nothing<BR>這樣使該圖層變回普通圖層,且其在圖層列表中的位置不變。<BR>第十三 繪制圖層<BR>Layers 集合的 AddUserDraw
Layer 方法使開發人員在地圖上繪制圖層。當需要繪制圖層時,它與激活的 DrawUserLayer 事件結合在一起使用。該方法返回新創建的 Layer
對象。用戶可以繪制任意數量的圖層。<BR>如何工作<BR>首先,添加用戶繪制圖層到圖層集合:<BR>Dim lyr as Layer<BR>Set lyr =
Map1.Layers.AddUserDrawLayer("My Layer", 1)<BR>然后,設置 DrawUser Layer
事件中的代碼以繪制圖層。當應用程序使用 Layers 集合的 AddUserDrawLayer 方法創建了 UserDraw
圖層,在窗口需要更新時,應用程序就會激活該事件。<BR>下面是完整的示例。<BR>' API DEFS should be declared in a
separate module<BR>Declare Function MoveToEx Lib "gdi32" Alias "MoveToEx" (ByVal
hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As
Long<BR>Declare Function LineTo Lib "gdi32" Alias "LineTo" (ByVal hdc As Long,
ByVal x As Long, ByVal y As Long) As Long<BR>Declare Function SetMapMode Lib
"gdi32" Alias "SetMapMode" (ByVal hdc As Long, ByVal nMapMode As Long) As
Long<BR>Type POINTAPI<BR>x As Long<BR>y As Long<BR>End Type<BR>Public Const
MM_TWIPS = 6<BR><BR>' this sets the UserDraw Layer to “My Layer”<BR>Dim lyr as
Layer<BR>Set lyr = Map1.Layers.AddUserDrawLayer("My Layer", 1)<BR><BR>' this
example draws a line between the corners of Wyoming<BR>Private Sub
Map1_DrawUserLayer(ByVal Layer As Object, ByVal hDC As stdole.OLE_HANDLE, ByVal
hAttributeDC As stdole.OLE_HANDLE, ByVal RectFull As Object, ByVal RectInvalid
As Object)<BR>Dim pt As POINTAPI<BR>SetMapMode hDC, MM_TWIPS<BR>dim PX as
single<BR>dim PY as single<BR>Dim X1 As Double, Y1 As Double, X2 As Double, Y2
As Double<BR><BR>X1 = -111.0542<BR>Y1 = 45.0009<BR>X2 = -104.0528<BR>Y2 =
41.0018<BR><BR>if map1.ClipLine(X1,Y1,X2,Y2) then<BR>mp1.ConvertCoord X, PY,
X1,Y1, miMapToScreen<BR>MoveToEx hDC, PX, -PY, pt ' win api
call<BR>map1.ConvertCoord PX, PY, X2,Y2, miMapToScreen<BR>LineTo hDC, PX, -PY '
win api call<BR>end if<BR><BR>End Sub <BR><BR><BR><BR>
<DIV style="CLEAR: both"></DIV></DIV>
<DIV class=postname>
<DIV class=pf>6樓 </DIV><B>tracking</B> 發表于:2004-11-22 9:59:00</DIV>
<DIV class=postbody>第四章 Features 和 Selections<BR>概述<BR>Selections 和 Features
對象的方法使您得以“標記”或選擇符合特定條件的圖元。地圖上表示紐約市的點就是一個 Feature 對象的示例。假設您需要查找所有在 Sheep’s Head
Bay, Brooklyn 周圍 5
英里內的潛在客戶。一旦創建此數據集合,就可以通過收集的數據來完成一組操作,如打印數據、取平均值、計算有多少符合條件的數據、并將它們保存到文件中,或者執行其它任務。在本章中將詳細介紹圖元和選擇。<BR>第一節
基本概念<BR>什么是地圖圖元?<BR>地圖圖元是地圖上的地理對象,例如點、線或區域。例如,在美國地圖中區域表示州、線表示公路、點表示城市。在 MapX
中,地圖圖元表示為 Feature 對象。<BR>什么是 Features 集合?<BR>在 MapX
中,組成地圖的不同圖層中的每個圖層通常具有相同類型的圖元。例如,“US States”圖層使用區域圖元表示每個州,“US
Highways”圖層使用線圖元表示主要的美國公路,“US Capitols”圖層使用點圖元表示每個州的首府城市。在 MapX
中,地圖圖層中的所有圖元及其所有子集表示為 Features 集合。許多 Layer 對象方法都返回圖層的 Features
集合。<BR>一般說來在地圖上不突出顯示 Features 集合中的圖元。要想突出顯示,那么使用 Selection 集合。<BR>什么是 Selection
集合?<BR>和 Features 集合類似,Selection 集合也是 Feature 對象的集合。但是,Selection 集合表示當前已選中的
Feature 對象。每個圖層對象都有自己的 Selection 集合(Layer.Selection)。根據那些已選中的圖元,MapX 自動高亮顯示在
Selection 集合中的所有圖元。<BR>第二節 使用 Features 集合<BR>Features 集合類似于 Selection
集合,因為兩個集合都是 Feature 對象的集合。但是,Features 集合與 Selection
集合各有一組不同的方法和屬性集,而且兩個集合類型的行為也不同。在 Selections 集合中自動高亮顯示選中的圖元,而在 Features
集合中不會突出顯示圖元。<BR>取得圖層中的圖元<BR>在使用 Features 集合前必須先創建集合。可以用 Layer 對象方法創建 Feature
對象的集合。<BR>以下 Layers 集合的方法提供了多種途徑來取得 Features 集合。<BR><BR><BR><BR><BR>方法 描述
代碼示例(Dim fs as Features創建 Features 集合)<BR>AllFeatures 返回圖層中包括所有圖元的 Features 集合。
Set fs = Map1.Layers(2).AllFeatures<BR>NoFeatures 返回圖層的空 Features 集合。 Set fs =
Map1.Layers(9).NoFeatures<BR>SearchWithinDistance 返回在指定點對象周圍的某個范圍內圖元的 Features
集合。 Set fs = Map1.Layers(3). SearchWithinDistance (objPoint, _36.5, miUnitMile,
miSearchTypeCentroidWithin) <BR>SearchWithinFeature 返回由另一指定區域圖元中圖元組成的圖元對象。 Set
fs = Map1.Layers(3). SearchWithinFeature _(ftr, miUnitMile,
miSearchTypeCentroidWithin)<BR>SearchWithinRectangle 返回在指定矩形邊界中的圖元集合。 Set fs =
Map1.Layers(3). SearchWithinRectangle(miRect, _miUnitMile,
miSearchTypePartiallyWithin)<BR>SearchAtPoint 返回由指定點處圖元組成的圖元集合。 Set fs =
Map1.Layers(3) .SearchAtPoint(objPoint)<BR>搜索類型常數<BR>MiSearchTypeCentroidWithin
如果圖元的中心位于區域中,則在搜索中包含該常數。<BR>MiSearchTypeEntirelyWithin
如果區域包含此圖元,則在搜索中包含該常數。<BR>MiSearchTypePartiallyWithin
如果圖元的任意部分位于區域中,則在搜索中包含該常數。<BR><BR>以下代碼是工具使用的事件,它為用戶單擊點處的圖元創建集合。<BR>Private Sub
Map1_ToolUsed(ByVal ToolNum As Integer, ByVal X1 As Double, ByVal Y1 As Double,
ByVal X2 As Double, ByVal Y2 As Double, ByVal Distance As Double, ByVal Shift As
Boolean, ByVal Ctrl As Boolean, EnableDefault As Boolean)<BR><BR>Dim ftr As
Feature 'creates a Feature object<BR>Dim fs As Features 'creates a collection of
features<BR>Dim pt As New Point 'creates a new point<BR><BR>'the new point
created has coordinate values set when the user clicks on a feature<BR>pt.Set
X1, Y1<BR>'If the tool used is the custom info tool then create a collection of
features from the States ‘layer and print the State Name feature into a message
box.<BR>If ToolNum = InfoTool Then<BR>'create the collecton of features at the
point the user clicked<BR>Set fs =
Map1.Layers("USA").SearchAtPoint(pt)<BR>'print the State Name feature into a
message box.<BR>For Each ftr In fs<BR>MsgBox ftr.Name<BR>Next<BR>End If <BR>操縱
Features 集合<BR>以下方法使您得以通過在集合中添加、刪除、復制圖元對象來操作 Features 集合:<BR><BR>方法 描述<BR>Add 將
Feature 對象或整個 Features 集合添加到集合。<BR>Clone 將集合復制為另一個 Features 集合對象。<BR>Common
將此集合與另一個 Features 集合相結合,這樣該集合將僅包含二者中均包含的圖元(INTERSECT 集合操作)。<BR>Remove 從該集合的
Features 集合中刪除 Feature 對象或所有圖元(SUBTRACT 集合操作)。<BR>Replace 將集合內容替換為 Feature 對象或
Selection 集合對象的所有圖元。<BR><BR>Feature 對象<BR>Features 集合由 Feature 對象集合組成。Feature
對象對應于地圖上的圖元,例如符號、線或區域。<BR>Feature
對象方法使您可以創建和操作獨立圖元對象。在創建獨立圖元對象后,必須將該圖元對象附加到地圖上后才能引用對象的所有方法和屬性。把圖元附加到地圖時地圖的坐標系與圖元相關聯。<BR>以下
Visual Basic 示例顯示如何創建獨立的 Text 圖元,然后修改其標題。<BR>Dim f As New Feature<BR>Dim fNew As
Feature<BR>' Add a new text object to layer 1<BR>f.Attach Map1<BR>f.Type =
miFeatureTypeText<BR>f.Point.Set Map1.CenterX, Map1.CenterY<BR>f.Caption = "This
is a text object"<BR>Set fNew = Map1.Layers(1).AddFeature(f)<BR>' Change the
text caption <BR>fNew.Caption = "Changed
Text"<BR>fNew.Update<BR>圖元對象屬性<BR><BR>以下屬性定義圖元對象:<BR><BR>屬性 描述 代碼示例 <BR>CenterX
包含圖元在 X 軸方向的中心。 Print ftr.CenterX<BR>CenterY 包含圖元在 Y 軸方向的中心。 MsgBox
ftr.CenterY<BR>FeatureID 包含圖元 ID。圖層中的每個圖元在每個圖層中包含唯一 ID。為整數值。 IVar =
ftr.FeatureID<BR>Length 包含圖元長度( 限于線形圖元)。 Print ftr.Length<BR>Perimeter
長度指圖元的周長(限于區域圖元)。 Print ftr.Perimeter <BR>Name 包含圖元名稱。 MsgBox ftr.name<BR>Type
包含圖元(點、線等)類型。 ftr.Type = miFeatureTypeSymbol <BR>第三節 使用Selection 集合<BR><BR>MapX
的一個基本功能是在地圖上選擇圖元,這樣您就可以在圖元上執行其它任務。用戶可以單擊地圖選擇一個或多個圖元(點、區域等)。MapX
高亮顯示所有選中的圖元。<BR>要檢查所選圖元列表,請使用 Selection 集合,它是 Feature 對象的集合。Selection
集合還提供了不同方法(例如
SelectByRadius)使您得以完成不同類型的選擇,例如,選擇以某城市為圓心的一定半徑范圍內的所有圖元。所選圖元將在地圖上高亮顯示出來。每個圖層都有所選圖元對象的集合(Layer.Selection)。<BR>Selection
集合具有在集合中添加和刪除圖元的方法。同時,如果已經具有 Selection 或 Features
集合,那么可以追加、刪除、復制或查找兩個集合的交集。<BR>下表列出了一些 Selection
集合方法。有關完整清單,請參閱《MapX參考指南》或聯機幫助:<BR><BR>方法 描述 代碼示例<BR>ClearSelection
取消選擇該圖層中的所有圖元。使用Layers.ClearSelection 從所有圖層中清除選擇。 Map1.Layers(“SalesReps1997”).
Selection.ClearSelection<BR>Clone 將集合復制為另一個 Selection 集合對象。
Map1.Layers(2).Selection.Clone ftrs<BR>Common 結合該集合與另一個 Selection
對象,使該集合僅包含二者都有的圖元(INTERSECT 集合圖元)。 Map1.Layers(2).Selection.Comm on
Map1.Layers(4).Selection<BR>Remove 從該集合的 Selection 對象中刪除 Feature
對象或所有圖元(SUBTRACT 集合操作)。 Map1.Layers(2).Selection.Remove fs<BR>Replace 將集合內容替換為某個
Feature 對象或某個 Selection 集合對象中的所有圖元。 Map1.Layers(“Boston”).Selection.Replace
lyr.AllFeatures <BR>SelectAll 選擇圖層中的所有圖元。 Map1.Layers(“Cargo”).Selection
.SelectAll<BR>SelectByPoint 選擇圖層中指定點處的圖元。 Map1.Layers(5).Selection.Select
ByPoint 75.14, 42.9, miSelectionAppend <BR>SelectByRadius 從圖層中選擇某點周圍指定半徑內的圖元。
Map1.Layers(4). Selec
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -