寻找与其他坐标最近的坐标

时间:2016-11-16 15:13:35

标签: c# arrays optimization location coordinates

给定一组地理坐标和另一个地理坐标,我想找到最近的坐标。

例如,给定数组:

LAT长
52.525782 13.316927
52.526409 13.319083
52.525678 13.320317

关键点:52.525730, 13.314556,然后返回第一个点52.525782, 13.316927,因为它是最接近的点。

实现它的唯一方法是循环遍历所有阵列并找到点之间的距离吗?如果数组包含太多坐标会发生什么?

2 个答案:

答案 0 :(得分:1)

您可以使用LINQ进行尝试,但LINQ的内部工作方式仍会在您的集合中循环。例如:

//Your list with coordinates
List<GeoCoordinate> coords = new List<GeoCoordinate>();

//The coord you want to compare
GeoCoordinate crd = new GeoCoordinate();

//Sorts the list based on the proximity of the coords to crd
var sortedCoords = coords.OrderBy(x => x.GetDistanceTo(crd)).ToList();

我知道它没有使用数组,但我发现使用列表更容易。

我认为这应该有用,如果有,请告诉我!

答案 1 :(得分:0)

    struct coord
    {
        public  double lat;
        public double lon;
    }

    public void Main(coord coord)
    {

        var coords = new[]{ new coord(){lat=1, lon=1} };
        var closest = coords.Min(p => Math.Abs(p.lat - coord.lat) +    Math.Abs(p.lon - coord.lon));


    }