無料のライブラリを使用して空間データを再投影する方法は?


13

無料のライブラリを使用して空間データを変換するにはどうすればよいですか?

たとえば、C#Webアプリケーションのコード内でShapefileの投影を変更したい。それ、どうやったら出来るの?


これは実際には「Xのリスト」の質問であるため、CWに変換されます。
whuber

2
CWの馬はすでにゲートから出ているので少し遅れていますが、回答者が「どうすればそれを行うことができますか?」Qの一部は、単なる「Xのリスト」ではありません。
マットウィルキー

これをすばらしい答えで素晴らしい質問にしようとしましょう。
暗闇

回答:


10

DotSpatial.Projectionsライブラリを試すことができます。

ウェブサイトには、「地理座標系から投影座標系への変換」の例がリストされています。

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

誰もproj.4とshapelibに言及していないことに少し驚いた。どちらもCプロジェクトですが、C#バインディングが作成されています(または、p / invokeすることもできます)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.