Gdal 之 坐标转换 ( C# 实现 )
定义坐标系
这里就不详细讲解了,如果感兴趣直接私聊,很乐意和您交流。(大地水准面,椭球坐标系,椭球基准,地心坐标系,大地坐标系,投影坐标系(笛卡尔坐标系)->(高斯、UTM等等,投影方式不同))
常用的坐标系
wgs84 -- 最常用的,市面上无论硬件还是软件大都用它作为基准。不是因为精度高等,个人认为就是早先占领市场,垄断了。参控GPS相关产品,信号解析出来就是wgs84的,那能怎么办。
北京54、西安80 -- 这两个不一样 不一样 不一样。我写在一起是因为国家不太支持这两个了,主推2000
cgcs 2000 -- 还没有转换的朋友抓紧了,哈哈。
code
GdalBase.ConfigureAll();
// 创建北京54坐标系
var bj54 = new SpatialReference("");
// 每一套坐标系参数都又一个编号,在 http://epsg.io/ 中可以查找
bj54.ImportFromEPSG(4214);//4214
//计算中央子午线
var clong = 120 + 35 / 60.0;
//设置椭球参数 中央纬度 , 中央经线 , 缩放 , 北向加常数 , 东向加常数
bj54.SetTM(0, clong, 1.0, 50895, -3421829);
//设置七参数 Δx Δy Δz θx θy θz scale Δ -- 偏移 θ -- 旋转
bj54.SetTOWGS84(-14.309, -21.731, -8.562, -1.4979, 0.016604, -0.591758, -0.44782521);
//创建wgs84坐标
var wgs84 = new SpatialReference("");
wgs84.ImportFromEPSG(4326);
//从坐标系克隆出 地理坐标系统
var wgs84Geo = wgs84.CloneGeogCS();
//创建转换
var coordinateTransformation = new CoordinateTransformation(bj54, wgs84Geo);
double[] B = { 42.109450692 };
double[] L = { 120.585583357 };
double[] H = { 0 };
coordinateTransformation1.TransformPoints(1, B, L, H);
Console.WriteLine("北京54投影坐标:X:" + L[0] + " Y:" + B[0]);
总结
这些都是gdal基本写法,没啥总结的。之后文章会写一下 cad转geojson 中间会用到坐标转换,这样就可以将gdal用于生产了
分类:
gis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律