Jak ponownie rzutować dane przestrzenne za pomocą bezpłatnych bibliotek?

13

Jak korzystać z bezpłatnych bibliotek do przekształcania danych przestrzennych?

Na przykład chcę zmienić rzutowanie pliku Shapefile w kodzie mojej aplikacji internetowej C #. Jak mogę to zrobić?

użytkownik1899
źródło
Konwersja na CW, ponieważ tak naprawdę jest to pytanie „lista X”.
whuber
2
nieco później, bo koń CW już jest poza bramą, ale jeśli odpowiadający zwracają większą uwagę na „jak to zrobić?” część Q to nie byłaby tylko „lista X”.
matt wilkie 30.08.11
Spróbujmy uczynić z tego świetne pytanie z doskonałymi odpowiedziami.
podmroku

Odpowiedzi:

10

Możesz wypróbować bibliotekę DotSpatial.Projections .

Witryna zawiera przykład „Konwersja z geograficznego układu współrzędnych na rzutowany układ współrzędnych” :

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.");
    }
  }
}
podmrok
źródło
2

Byłem trochę zaskoczony, że nikt nie wspomniał o proj.4 i shapelib. Chociaż oba są projektami C, zostały utworzone powiązania C # (lub można je po prostu wywołać / wywołać).

johanvdw
źródło