.net core 计算两个GeoJSON要素之间的距离

.net core 计算两个GeoJSON要素之间的距离,.net-core,geojson,geojson.net,.net Core,Geojson,Geojson.net,我正在使用GeoJSON.NETLibrary()在代码中创建一些GeoJSON特性。点、多行等。在我需要计算某些特征对之间的距离之前,所有这些都可以正常工作。这个库没有任何能力做到这一点 我尝试使用GeoJSON.Net.Contrib.MsSqlSpatial()将要素转换为SqlGeographies,然后使用该类型的方法计算距离。这是完美的,但有一点需要注意:它只是.NET框架。该库不适用于.NET Core 请注意,我需要能够计算两个任意特征之间的距离-点、多线、多边形,而不仅仅是两点

我正在使用GeoJSON.NETLibrary()在代码中创建一些GeoJSON特性。点、多行等。在我需要计算某些特征对之间的距离之前,所有这些都可以正常工作。这个库没有任何能力做到这一点

我尝试使用GeoJSON.Net.Contrib.MsSqlSpatial()将要素转换为SqlGeographies,然后使用该类型的方法计算距离。这是完美的,但有一点需要注意:它只是.NET框架。该库不适用于.NET Core

请注意,我需要能够计算两个任意特征之间的距离-点、多线、多边形,而不仅仅是两点之间的距离。必须针对SRID 4326(WGS84)执行此操作

有什么想法吗


向您致意,Dmytro。

GeoJSON.Net只是一个根据RFC 7946反序列化GeoJSON的库

为了计算距离,您可以编写自己的实现,或者使用现有的库,如

为了方便起见,您可以编写一些扩展方法

public static class PositionExtension
{
    public static double GetDistanceTo(this Position origin, Position destination,
        DistanceUnit unit = DistanceUnit.Kilometers)
    {
        return GeoCalculator.GetDistance(
            origin.Latitude, origin.Longitude,
            destination.Latitude, destination.Longitude, distanceUnit: unit);
    }
}

非常感谢您的建议,但您在我的问题中遗漏了这一部分:“我需要计算两个任意特征之间的距离的能力-点、多线、多边形,而不仅仅是两点之间的距离”@DmytroGokun您可以将其分解为
i位置
,它保存lat/lon,并通过处理坐标的所有类继承。点、多线、多边形可以继承
i位置
,也可以保留其集合。例如,如何从多边形定义测量点取决于您的需要。您需要计算这个值,或者只是迭代,然后在集合中找到最小的
i位置。