2010-11-23 167 views
3

他,在C#中使用GEO座標繪製地圖

我想用LAT/LNG座標在C#中繪製國家地圖。我必須將lat/lng轉換爲像素,那麼最好的方法是什麼?我可以繪製'地圖',但它非常小,並且不在窗口的中心。

有人可以幫忙嗎?我有這樣的代碼:

void draw(Graphics g, PointF[] points, Pen p) 
    {    
     Graphics gfx = g; 
     gfx.PageUnit = GraphicsUnit.Point; 

     GraphicsPath gpath = new GraphicsPath(); 
     gpath.StartFigure(); 
     gpath.AddLines(points); 
     gpath.CloseFigure(); 

     Matrix m = new Matrix(); 
     m.Scale(5, 5); 

     gfx.Transform = m; 
     gfx.DrawPath(p, gpath);    
     gfx.Dispose(); 
     gpath.Dispose(); 

     return; 
    } 
+0

pointsf是一個具有緯度/經度座標的數組,其數組與緯度座標 – 2010-11-23 12:13:00

+0

@Alon:不涉及個人得分,但我更願意在尊重「SO遊戲規則」時表現出一點善意。 – 2010-11-23 12:39:17

回答

0

你需要選擇一個地圖投影(如墨卡託,圓柱等面積,或Mollweide。),然後變換從地理緯度,經度座標使用此投影。

這個標準的開源庫是proj.4。我知道有C#的包裝,我個人使用OGR與ogrsharp包裝。 OGR在內部使用proj.4,但當您想要使用特定的座標系(例如,在prj文件中定義)時,OGR還會添加大量使用的功能。