무료 라이브러리를 사용하여 공간 데이터를 재 투영하는 방법?


13

공간 라이브러리를 사용하여 공간 데이터를 변환하려면 어떻게해야합니까?

예를 들어 C # 웹 응용 프로그램의 코드 내에서 Shapefile의 투영을 변경하고 싶습니다. 어떻게해야합니까?


이것은 실제로 "X 목록"질문이므로 CW로 변환되었습니다.
whuber

2
CW 말이 이미 문 밖으로 나오면서 조금 늦었지만 응답자가 "어떻게해야합니까?" Q의 일부는 "X 목록"이 아닙니다.
matt wilkie

이 질문에 대한 훌륭한 답변을 드리겠습니다.
underdark

답변:


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.