【问题标题】:Calculate distance between two GeoJSON features计算两个 GeoJSON 特征之间的距离
【发布时间】:2020-11-10 14:37:39
【问题描述】:

我正在使用 GeoJSON.Net 库 (https://github.com/GeoJSON-Net/GeoJSON.Net) 在我的代码中创建一些 GeoJSON 功能。点、多线等。在我需要计算某些特征对之间的距离之前,所有这些都可以正常工作。这个库没有任何能力这样做。

我尝试使用 GeoJSON.Net.Contrib.MsSqlSpatial (https://www.nuget.org/packages/GeoJSON.Net.Contrib.MsSqlSpatial) 将要素转换为 SqlGeographies,然后使用该类型的方法来计算距离。这与一个警告完美配合:它仅适用于 .NET Framework。该库不适用于 .NET Core。

请注意,我需要能够计算两个任意特征之间的距离 - 点、多线、多边形,而不仅仅是两点之间的距离。这必须为 SRID 4326 (WGS84) 完成。

有什么想法吗?

最好的问候,Dmytro。

【问题讨论】:

    标签: .net-core geojson geojson.net


    【解决方案1】:

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

    要计算距离,您可以编写自己的实现,也可以使用现有库之一,例如 Geolocation

    为了方便你可以写一些扩展方法。

    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 您可以将其分解为IPosition,它包含纬度/经度,并通过所有处理坐标的类继承。点、多线、多边形要么继承IPosition,要么持有它的集合。例如,如何从多边形定义测量点取决于您的需要。您需要计算这个,或者可能只是迭代并在集合中找到最小的IPosition
    猜你喜欢
    • 2017-10-14
    • 2021-05-15
    • 1970-01-01
    • 2021-01-14
    • 2010-10-30
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多