他,
我想在 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/