Bagaimana cara memproyeksi ulang data spasial menggunakan perpustakaan gratis?

13

Bagaimana saya bisa menggunakan perpustakaan gratis untuk mengubah data spasial?

Misalnya, saya ingin mengubah proyeksi Shapefile di dalam kode aplikasi web C # saya. Bagaimana aku melakukan itu?

pengguna1899
sumber
Dikonversi ke CW karena ini benar-benar pertanyaan "daftar X".
whuber
2
sedikit terlambat sekarang karena kuda CW sudah keluar gerbang, tetapi jika penjawab lebih memperhatikan "bagaimana saya melakukan itu?" bagian dari Q bukan hanya "daftar X".
matt wilkie
Mari kita coba buat ini pertanyaan yang bagus dengan jawaban yang bagus.
underdark

Jawaban:

10

Anda dapat mencoba perpustakaan DotSpatial.Projections .

Situs web mencantumkan contoh "Konversi dari Sistem Koordinat Geografis ke Sistem Koordinat yang Diproyeksikan" :

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.");
    }
  }
}
underdark
sumber
2

Saya sedikit terkejut tidak ada yang menyebutkan proj.4 dan shapelib. Meskipun keduanya adalah proyek C, binding C # telah dibuat (atau Anda bisa meminta mereka).

johanvdw
sumber