【问题标题】:Using GEO coordinates in C# to draw map在 C# 中使用 GEO 坐标绘制地图
【发布时间】:2011-05-14 10:36:51
【问题描述】:

他,

我想用 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;
    }

【问题讨论】:

  • pointsf 是一个带有 lat/lng 坐标的数组
  • @Alon:这不是关于个人得分,而是当他们表现出一点善意尊重“SO游戏规则”时,我更愿意帮助他们。

标签: c# graphics drawing coordinates graphicspath


【解决方案1】:

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

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

【讨论】:

  • 当然,您对单个投影进行硬编码。这将是最简单的,但您需要先确定您的投影。
  • 好的,感谢您的帮助。我会看看它。我已经知道如何移动绘图并调整它的大小。
猜你喜欢
  • 2014-06-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-17
相关资源
最近更新 更多