2010-11-23 27 views
3

He、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はlat/lng座標の配列 –

+0

@ Alon:個人的なスコアリングではありませんが、「SOのゲームルール」を尊重して少しでも良い意志を示してくれたら他の人を助ける意欲があります。 –

答えて

0
あなたは地図投影を選択する必要があります

(例えばメルカトル、円筒等しい面積、またはMollweide。)と、この投影を使用する地理的緯度、LNGからの座標を変換:私はこのコードを持っています。

標準オープンソースライブラリはproj.4です。私はC#ラッパーがあることを理解しています。私は個人的にOGRをogrsharpラッパーと一緒に使っています。 OGRではproj.4を内部的に使用していますが、特定の座標系(prjファイルなどで定義されている)で作業したい場合には、多くの関数を追加しています。

+0

もちろん、1つの投影をハードコードします。これは最も簡単なことですが、最初にあなたの投影を決める必要があります。 – winwaed

+0

助けてくれてありがとう。私はそれを見てみましょう。私はすでに図面を移動してサイズを変更する方法を見つけました。 –

関連する問題