输入地理坐标,返回输入坐标x英里内的坐标 - C#.NET

时间:2017-09-13 04:54:45

标签: c# coordinates geography

正如标题所示,我正在尝试根据输入的半径x英里(或最方便的单位)半径内的另一个坐标生成坐标。

举个例子:

  • 我获得了 39.083056,-94.820200 的地理坐标(lat,lon)。
  • 我希望返回x中的另一组坐标 该坐标的半径半径,例如 39.110998,-94.799668
  • x英里半径与返回的事实并不重要 坐标在x英里半径范围内。

我已经搜索过,但我一定是在寻找错误的东西,因为我能找到的所有帖子看起来都非常接近我想做的但是并没有完全达到钉在头上。

1 个答案:

答案 0 :(得分:0)

我很抱歉你被遗忘了。我理解在不知道究竟要搜索什么的情况下尝试搜索某些内容会令人沮丧。

您可能对 Orthodromic Lines / Distances 感兴趣:wiki。如果这个答案不能满足你的需求,至少你有一个新的术语谷歌,希望能引导你到一个适合你的。

您可以尝试使用Geo库。它的文档很少,但它确实包含一个对你有用的方法:CalculateOrthodromicLine(startPoint, heading, distance)

伪代码就像这样简单:

var startPoint = new Coordinate(lat, long);
var heading = Random between 0 and 360 degrees
var distance = Random between 0 and X metres
var endPoint = //<-- et voila!
    GeoContext.Current.GeodeticCalculator
    .CalculateOrthodromicLine(startPoint, heading, distance)
    .Coordinate2;

编辑:正如维基所说,地球不是一个完美的球体,而是一个球体。默认情况下,库GeoContext.Current使用其Spheroid计算,因此您应该没问题。

祝你好运!