Come riproiettare i dati spaziali usando librerie gratuite?


13

Come posso utilizzare le librerie gratuite per trasformare i dati spaziali?

Ad esempio, voglio cambiare la proiezione di uno Shapefile all'interno del codice della mia applicazione web C #. Come lo faccio?


Convertito in CW perché questa è davvero una domanda "elenco di X".
whuber

2
ora un po 'tardi perché il cavallo CW è già fuori dal cancello, ma se i rispondenti prestano maggiore attenzione al "come posso farlo?" parte della Q non sarebbe solo un "elenco di X".
matt wilkie,

Proviamo a rendere questa una grande domanda con ottime risposte.
underdark

Risposte:


10

Puoi provare la libreria DotSpatial.Projections .

Il sito Web elenca un esempio "Conversione da un sistema di coordinate geografiche a un sistema di coordinate proiettato" :

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

Sono rimasto un po 'sorpreso dal fatto che nessuno abbia menzionato proj.4 e shapelib. Sebbene entrambi siano progetti C, sono stati creati collegamenti C # (o potresti semplicemente p / invocarli).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.