You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET项目中使用C#从英国格网参考获取经纬度的方法

C# 使用GeoUK实现英国格网参考坐标转换

你提到的ST2264属于英国地形测量局定义的OSGB36格网参考编码,GeoUK内置了完整的格网解析、坐标系转换能力,不需要自行实现格网字母映射、坐标转换参数计算,具体使用方式如下:

前期准备

  • 首先在ASP.NET项目中通过NuGet安装GeoUK包,包管理器控制台执行以下命令即可:
Install-Package GeoUK
  • 代码文件中引入所需命名空间:
using GeoUK.Coordinates;
using GeoUK.OSTN15;
using GeoUK;

格网参考转东距/北距(OSGB36平面坐标)

直接调用OsGridRef.Parse方法传入格网参考字符串,就能直接得到对应的东距、北距值,方法会自动识别格网编码的精度(比如ST2264对应1km网格精度,更长后缀的编码会自动匹配更高精度):

string gridReference = "ST2264";
// 解析为OSGB36平面坐标
Osgb36Coordinate osgbCoord = OsGridRef.Parse(gridReference);
double easting = osgbCoord.Easting;  // 东距值,单位:米
double northing = osgbCoord.Northing; // 北距值,单位:米

提示:该解析方法会自动忽略字符串中的空格,传入带格式空格的格网参考(比如ST 22 64)不需要额外做字符串预处理。

格网参考转WGS84经纬度

GeoUK内置英国官方发布的OSTN15高精度转换模型,不要直接使用通用七参数做坐标转换,否则会出现米级到十米级的偏差,转换代码如下:

// 基于OSTN15模型将OSGB36坐标转换为WGS84经纬度(GPS通用坐标系)
LatitudeLongitude wgs84Point = OSTN15.TransformToWgs84(osgbCoord);
double longitude = wgs84Point.Longitude; // 经度,单位:度
double latitude = wgs84Point.Latitude;   // 纬度,单位:度

常见注意事项

  • 如果业务需要ETRS89坐标系的经纬度(欧洲通用坐标系,在英国本土和WGS84偏差在厘米级,多数场景可通用),可直接调用ETRS89.TransformFromOsgb36(osgbCoord)方法转换。
  • 转换得到的经纬度默认是十进制度单位,如果需要度分秒格式可自行做单位换算,注意不要把弧度返回值误当做角度使用。
  • 若传入的格网参考字符串格式不符合OSGB规范,Parse方法会抛出FormatException,生产环境建议增加参数校验和异常捕获逻辑。

内容的提问来源于stack exchange,提问作者CrazyBirdLady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 10:57:54