Wie projiziert man räumliche Daten mit freien Bibliotheken?

13

Wie kann ich freie Bibliotheken verwenden, um räumliche Daten zu transformieren?

Ich möchte beispielsweise die Projektion eines Shapefiles im Code meiner C # -Webanwendung ändern. Wie mache ich das?

user1899
quelle
In CW konvertiert, da dies wirklich eine "Liste der X" -Frage ist.
Whuber
2
jetzt etwas spät, da das CW-Pferd bereits aus dem Tor ist, aber wenn die Antwortenden mehr auf das "Wie mache ich das?" Teil des Q wäre es nicht nur eine "Liste von X".
Matt Wilkie
Lassen Sie uns versuchen, dies zu einer großartigen Frage mit großartigen Antworten zu machen.
Underdunkel

Antworten:

10

Sie können die DotSpatial.Projections- Bibliothek ausprobieren .

Die Website listet ein Beispiel "Konvertieren von einem geografischen Koordinatensystem in ein projiziertes Koordinatensystem" auf :

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.");
    }
  }
}
unterdunkelt
quelle
2

Ich war ein bisschen überrascht, dass niemand proj.4 und shapelib erwähnt hat. Obwohl beide C-Projekte sind, wurden C # -Bindungen erstellt (oder Sie können sie einfach p / aufrufen).

johanvdw
quelle