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?
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?
Risposte:
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.");
}
}
}
Un'altra alternativa è http://projnet.codeplex.com/
C'è anche GDAL / OGR: http://trac.osgeo.org/gdal/wiki/GdalOgrInCsharp La pagina sembra piuttosto vecchia, non sono sicuro che i binding siano aggiornati.