Использование координат GEO в C # для рисования карты - PullRequest
3 голосов
/ 23 ноября 2010

Он,

Я хочу нарисовать карту страны на C # с координатами 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 голосов
/ 23 ноября 2010

Вам нужно будет выбрать проекцию карты (например, Меркатора, Цилиндрическая равная область или Моллвейд), а затем преобразовать координаты из географического широта, СПГ, чтобы использовать эту проекцию.

Стандартная библиотека с открытым исходным кодом для этого - proj.4. Я понимаю, что есть обертки C #, но лично я использовал OGR с обертками ogrsharp. OGR использует proj.4 внутри, но также добавляет много используемых функций, когда вы хотите работать с конкретными системами координат (например, определенными в файле prj).

...