GDAL创建坐标系与坐标转换

using OSGeo.GDAL;
using OSGeo.OSR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Chapter02
{
    class Program
    {
        static void Main(string[] args)
        {
            SetGCS();

            Console.WriteLine("\n" + "坐标转换:");

            CoordinateTransform();


            Console.ReadKey();
        }

       static void SetGCS()
        {
            SpatialReference osr = new SpatialReference("");

            //设置地理坐标系
            //osr.SetGeogCS("My GCS",
            //    "WGS_1984",
            //    "My WGS84 Spheroid",
            //    Osr.SRS_WGS84_SEMIMAJOR,
            //    Osr.SRS_WGS84_INVFLATTENING,
            //    "Greenwich", 0.0,
            //    "degree",
            //    0.017453925199433);

            osr.SetWellKnownGeogCS("WGS84");

            //osr.SetWellKnownGeogCS("EPSG:4326");

            //osr.SetFromUserInput("");

            string strWkt;
            osr.ExportToWkt(out strWkt);
            Console.WriteLine("普通WKT:");
            Console.WriteLine(strWkt);
            Console.WriteLine();

            string strPrettyWkt;
            osr.ExportToPrettyWkt(out strPrettyWkt, 0);
            Console.WriteLine("美观WKT:");
            Console.WriteLine(strPrettyWkt);
        }

        static void CoordinateTransform()
       {
           //string strXian80 = "+proj=tmerc+lat_0=0+lon_0=117 +k=1+ x_0=39500000+y_0=0 +ellps=";
           //strXian80 += "IAU76+towgs84=34.65192983,-69.97976937,-69.52875538,-0.56104022,";
           //strXian80 += "-1.34050334,1.9067841,-0.27446825 +units=m +no_defs";

           string filePath = @"E:\TEMP\project\123.tif";
           Gdal.AllRegister();
           Dataset ds = Gdal.Open(filePath, Access.GA_ReadOnly);
           string temp = ds.GetProjectionRef();
           Console.WriteLine(temp);


           SpatialReference oXian80 = new SpatialReference(temp);
           SpatialReference oLatLong;
            
           //构造投影坐标系
           //oXian80.SetFromUserInput(strXian80);

            //获取该投影坐标系统中的地理坐标系
           oLatLong = oXian80.CloneGeogCS();

            //构造一个从UTM投影坐标系统到地理坐标系统的转换关系
           CoordinateTransformation ct = new CoordinateTransformation(oXian80, oLatLong);
            if(ct==null)
            {
                Console.WriteLine("构造坐标转换关系失败");
                return;
            }

            double[] dX = new double[2] {39464667.861,39458907.868 };
            double[] dY = new double[2] { 4441766.356, 4444406.349 };
            double[] dZ = new double[2] { 0, 0 };

            Console.WriteLine("转换前:");
            Console.WriteLine("1:({0},{1})", dX[0], dY[0]);
            Console.WriteLine("2:({0},{1})", dX[1], dY[1]);
            
            ct.TransformPoints(2, dX, dY, dZ);

            Console.WriteLine("转换后:");
            Console.WriteLine("1:({0},{1})", dX[0], dY[0]);
            Console.WriteLine("2:({0},{1})", dX[1], dY[1]);

        
        }
    }
}

效果:



  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值