Comment reprojeter des données spatiales à l'aide de bibliothèques gratuites?

13

Comment puis-je utiliser des bibliothèques gratuites pour transformer des données spatiales?

Par exemple, je souhaite modifier la projection d'un fichier de formes dans le code de mon application Web C #. Comment je fais ça?

user1899
la source
Converti en CW car c'est vraiment une "liste de X" question.
whuber
2
un peu en retard maintenant, car le cheval CW est déjà hors de la porte, mais si les répondeurs accordaient plus d'attention au "comment faire?" une partie du Q ce ne serait pas juste une "liste de X".
matt wilkie
Essayons d'en faire une excellente question avec d'excellentes réponses.
underdark

Réponses:

10

Vous pouvez essayer la bibliothèque DotSpatial.Projections .

Le site Web donne un exemple "Conversion d'un système de coordonnées géographiques en un système de coordonnées projetées" :

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.");
    }
  }
}
obscur
la source
2

J'ai été un peu surpris que personne n'ait mentionné proj.4 et shapelib. Bien que les deux soient des projets C, des liaisons C # ont été faites (ou vous pouvez simplement les p / invoquer).

johanvdw
la source