在C#中使用GEO坐标绘制地图

时间:2010-11-23 12:12:22

标签: c# graphics drawing coordinates graphicspath

他,

我想用CAT和LAT / LNG坐标绘制一个Countrymap。我必须将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;
    }

1 个答案:

答案 0 :(得分:0)

您需要选择地图投影(例如墨卡托,圆柱等面积或Mollweide),然后转换地理纬度,LNG的坐标以使用此投影。

标准的开源库是proj.4。我知道有C#包装器,我个人已经使用OGR和ogrsharp包装器。 OGR在内部使用proj.4,但是当你想使用特定的坐标系(例如在prj文件中定义)时,它还会添加许多使用过的函数。