我有一堆Eastings/Northings坐标,据我所知使用UTM convention - 基本上,它们是笛卡尔坐标 - 我想将其转换为纬度和经度。
据推测,NetTopologySuite可以帮助我解决这个问题,但我找不到很多文档。
有人指点让我开始吗?
编辑:Eastings和Northings特别是OS Grid Reference Eastings和Northings,其问题和惯例是discussed here。
答案 0 :(得分:7)
这是一个非常古老的问题,但由于它在2年后仍然出现在搜索中,我觉得仍然值得提供可能对其他人有帮助的答案。
如果您能够使用它,Ordnance Survey现在提供DLL(和相关数据文件),或NTv2文件,可用于执行更准确的OSTN15转换。这些可在BSD许可证下获得: OSTN15 and OSGM15 for developers
此转换会将您的坐标转换为ETRS89(approximately equivalent to WGS84 in Europe),并且比@codeulike的答案中提到的OSTN97 / 7参数helmert转换更准确。
答案 1 :(得分:3)
Proj.Net library更有可能为您的需求提供更简单的工具集。
您需要从UTM(如果它确实是UTM - 那里有很多卡特尔系统)投影到地理坐标系。您很可能也需要找出数据的数据。如果您在shapefile中有数据,那么在文本编辑器中查看.prj文件 - 它将包含投影信息。否则,您需要返回数据生产者并询问他们的预测。
答案 2 :(得分:3)
为了回答我自己的问题,Eastings和Northings被证明是条例调查(OS),其中转换为纬度和经度的定义很明确。
This very good page by Chris Veness讨论了主要的算法和常见的陷阱。他提出了一个Javascript算法,但我找到了一个C#等价的in this forum。
正如Chris Veness所指出的那样,该算法可以让你获得纬度和经度,但是在OSGB36数据上。通常,您会希望将其转换为更常用的WGS84 / GRS80数据(否则,对于英国地区,您最多可达120米)。为此,您需要进行Helmert转换,as described by Chris here。
编辑:Chris Veness的代码是根据GNU LGPL许可证授权的。
答案 3 :(得分:1)
我知道这是一个老问题,但我一直在寻找如何在C#中执行此操作并找到this recently published article here。
作者在nuget上编写了一个名为GeoUK的C#库。
Install-Package GeoUK
安装此库后,要将easting / northing转换为long / lat,您可以编写如下函数:
static void Main(string[] args)
{
// downing street!
const double easting = 530046;
const double northing = 179914;
var result = ConvertEastNorthToLatLong(easting, northing);
Console.WriteLine("Lat: {0} Long: {1}", result.Latitude, result.Longitude);
var gmaps = string.Format("https://www.google.co.uk/maps/@{0},{1},17z", Math.Round(result.Latitude,6), Math.Round(result.Longitude,6));
}
static LatitudeLongitude ConvertEastNorthToLatLong( double easting, double northing )
{
// Convert to Cartesian
var cartesian = GeoUK.Convert.ToCartesian(new Airy1830(),
new BritishNationalGrid(),
new EastingNorthing(easting, northing));
//ETRS89 is effectively WGS84
var wgsCartesian = Transform.Osgb36ToEtrs89(cartesian);
var wgsLatLong = GeoUK.Convert.ToLatitudeLongitude(new Wgs84(), wgsCartesian);
return wgsLatLong;
}
}
这对我有用并产生result。
我之前提到的文章更深入地解释了。这可能会帮助其他人进一步发展。
答案 4 :(得分:0)