c# - C#中使用GEO坐标绘制 map

标签 c# graphics drawing coordinates graphicspath

他,

我想在 C# 中使用 LAT/LNG 坐标绘制国家 map 。我必须将纬度/经度转换为像素,最好的方法是什么?我可以绘制“ map ”,但它非常小而且不在窗口中央。

有人可以帮忙吗?我有这段代码:

    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;
    }

最佳答案

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

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

关于c# - C#中使用GEO坐标绘制 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4255883/

相关文章:

ios - 橡皮擦在 iOS 绘图中不起作用

ios - 在 iOS 上高效绘制多点图表

c# - ASP.NET Core 2.1 无效请求行问题

Java 创建浮雕(红/蓝图像)

c# - Linq to Entities - Skip 和 Take 的内部行为

Android 二维图形库

c# - 在 XNA 中更改 BackBuffer 高度/宽度 - 不需要的结果

Swift 函数不在更新 View 中绘制圆圈

c# - 我可以在 asp.net 文本框失去焦点之前触发文本更改事件吗?

c# - 在 C# 中使用反射识别自定义索引器