Как перепроектировать пространственные данные, используя бесплатные библиотеки?

13

Как я могу использовать бесплатные библиотеки для преобразования пространственных данных?

Например, я хочу изменить проекцию Shapefile в коде моего веб-приложения на C #. Как мне это сделать?

user1899
источник
Преобразован в CW, потому что это действительно вопрос «списка Х».
whuber
2
сейчас немного поздно, так как лошадь CW уже вышла из ворот, но если ответчики обратили больше внимания на «как мне это сделать?» часть Q это был бы не просто «список X».
Мэтт Вилки
Давайте попробуем сделать этот отличный вопрос с отличными ответами.
Подземье

Ответы:

10

Вы можете попробовать библиотеку DotSpatial.Projection .

На веб-сайте приведен пример «Преобразование из географической системы координат в спроектированную систему координат» :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DotSpatial.Projections;

namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //Sets up a array to contain the x and y coordinates
        double[] xy = new double[2];
        xy[0] = 0;
        xy[1] = 0;
        //An array for the z coordinate
        double[] z = new double[1];
        z[0] = 1;
        //Defines the starting coordiante system
        ProjectionInfo pStart = KnownCoordinateSystems.Geographic.World.WGS1984;
        //Defines the ending coordiante system
        ProjectionInfo pEnd = KnownCoordinateSystems.Projected.NorthAmerica.USAContiguousLambertConformalConic;
        //Calls the reproject function that will transform the input location to the output locaiton
        Reproject.ReprojectPoints(xy, z, pStart, pEnd, 0, 1);
        Interaction.MsgBox("The points have been reporjected.");
    }
  }
}
темноте
источник
2

Я был немного удивлен, что никто не упомянул proj.4 и shapelib. Хотя оба являются C-проектами, привязки C # уже сделаны (или вы можете просто вызвать их / вызвать).

johanvdw
источник