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

MapObjects 坐標系統轉換:從平面經緯度到 Winkel II 投影

     編輯:關於C語言

需求背景

MapObjects 預設使用 moProjCS_World_PlateCarree(等距圓柱投影),經緯度線筆直,視覺呈現類似簡易網格。若需呈現類似教科書世界地圖的弧度效果(如 Winkel II 投影),只需變更 AxMap.CoordinateSystem 即可。

核心代碼

// 定義投影坐標系
MapObjects2.ProjCoordSys csmap = new MapObjects2.ProjCoordSysClass();

// 關鍵:選擇 Winkel II 投影(帶弧度的世界地圖)
csmap.Type = MapObjects2.ProjectedCoordSysConstants.moProjCS_World_WinkelII;

// 套用至地圖控制項
axMap1.CoordinateSystem = csmap;

常用投影常數對照

  • moProjCS_World_PlateCarree:預設平面經緯度(直角坐標系)
  • moProjCS_World_WinkelII:Winkel II,兼顧面積與形狀,教科書常用
  • moProjCS_World_Mercator:墨卡托,航海導航標準
  • moProjCS_World_Robinson:羅賓森,視覺美觀折衷

注意事項

  1. 投影變更後,現有圖層座標會自動重投影,但若圖層無空間參考資訊,可能導致位置偏移。
  2. 量測工具(距離、面積)會依新投影單位運算,Winkel II 為米制,需注意單位換算。
  3. 效能:投影轉換在繪圖管線即時進行,大量要素時可能影響幀率,建議預先將資料投影至目標坐標系存儲。

一行屬性賦值即可切換世界觀,MapObjects 的坐標系統架構設計相當優雅。

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