首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# MapX 二次開發基礎:元件模型、圖層架構與專題圖完整指南

     編輯:關於C#

MapX 核心技術特點

  1. 表格式資料組織:每個表 = 一組 MapInfo 檔案,含結構檔、資料檔、幾何檔;典型副檔名 .tab/.dat/.map/.id/.ind
  2. 幾何物件欄位:關聯式 DB 擴充 OBJ 欄位儲存點/線/面幾何,提供豐富幾何操作介面
  3. 圖層疊加:地圖 = 多個透明圖層疊加,每層對應一張表,順序決定繪製優先級
  4. 專題圖:六大類型(範圍值、等級符號、點密度、獨立值、直方圖、餅圖)將資料視覺化
  5. 內建 ODBC:支援 SQL 查詢、空間查詢擴充(緩衝區、疊加)、OLAP 分析
  6. 多格式支援:DWG/DXF、MIF/MID、數位化儀輸入
  7. MapBasic 二次開發:Basic 語法、物件導向、事件驅動、強大 Table/幾何管理 API
  8. OLE 自動化:支援 Delphi/VB/VC/.NET 整合

元件模型結構

頂層 Map 物件,三大分支集合:

  • Layers:圖層集合,含 Layer → Features → Feature 階層,對應點/線/面/符號
  • DataSets:空間資料表集合,實現地圖與屬性資料綁定
  • Annotations:標註集合(文字/符號),位於最上層,不關聯資料

Map 關鍵屬性:Zoom、Rotation、CenterX/Y(投影座標系)。

圖層操作關鍵

  • 圖層順序:Layers(1) 最上層,最後繪製;點圖層應置於面圖層上方避免被遮蓋
  • 選取工具:從可選圖層最上層開始,建議將目標圖層提至最上層
  • InsertionLayer:編輯新增幾何時的目標圖層,需先設為可編輯

GeoSet:圖層組態持久化

.gst 檔案 = 圖層集合與設定,類似 Workspace。執行期指定 GeoSet 會替換現有圖層;指定空字串可清除所有圖層。由 GeoSet Manager 管理,預設路徑 ...\\mapx\\maps。

資料綁定與專題圖

自動綁定:將地圖註冊於 GeoDictionary,再以屬性資料建立專題圖。Themes 集合管理單一 DataSet 的多幅專題圖。

// 建立範圍值專題圖
curmap.Datasets[1].Themes.Add(miThemeRanges, "TotPop", "");

ThemeProperties 物件控制顏色、符號、範圍分佈等細節;Legend 屬性自訂圖例。

專題圖六大類型常數

常數值類型
miThemeRanged0範圍值
miThemeBarChart1直方圖
miThemePieChart2餅圖
miThemeGradSymbol3等級符號
miThemeDotDensity4點密度
miThemeIndividualValue5獨立值
miThemeAuto6自動判斷
miThemeNone9無

標準地圖工具常數

// 導航
axMap1.CurrentTool = MapXLib.ToolConstants.miZoomInTool;    // 放大
axMap1.CurrentTool = MapXLib.ToolConstants.miZoomOutTool;   // 縮小
axMap1.CurrentTool = MapXLib.ToolConstants.miPanTool;       // 平移
axMap1.ZoomTo(initZoom, centerX, centerY);                  // 全圖

// 選取
axMap1.CurrentTool = MapXLib.ToolConstants.miSelectTool;      // 單點
axMap1.CurrentTool = MapXLib.ToolConstants.miRectSelectTool;  // 矩形
axMap1.CurrentTool = MapXLib.ToolConstants.miRadiusSelectTool;// 圓形

// 編輯(需設定 InsertionLayer)
axMap1.CurrentTool = MapXLib.ToolConstants.miAddPointTool;
axMap1.CurrentTool = MapXLib.ToolConstants.miAddLineTool;
axMap1.CurrentTool = MapXLib.ToolConstants.miAddPolyLineTool;
axMap1.CurrentTool = MapXLib.ToolConstants.miAddRegionTool;

// 其他
axMap1.Layers.LayersDlg(null, null);      // 圖層對話框
axMap1.ShowPropertyPages();               // ActiveX 屬性頁
axMap1.Refresh();                         // 重繪

MapX 元件模型結構圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved