3

他,

我想用 C# 绘制一个带有 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;
    }
4

1 回答 1

0

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

用于此的标准开源库是 proj.4。我知道周围有 C# 包装器,但我个人将 OGR 与 ogrsharp 包装器一起使用。OGR 在内部使用 proj.4,但当您想要使用特定坐标系(例如在 prj 文件中定义)时,还会添加许多使用的功能。

于 2010-11-23T12:27:28.097 回答