c# - 在 STRtree 中找到最近的位置

标签 c# java .net jts

我正在使用 nettopologysuite (JTS Topology Suite 的端口)。我正在使用 SRTtree 实现来存储时区列表和相应的坐标(基于此 suggestion )。我从 geonames 中获取了城市列表,提取了城市的时区和坐标,并将它们存储在 STRtree 中。我遇到的问题是此实现不提供“最近”功能。为了进行查询,我必须提供起点和圆周。目前,我在循环中将周长增加 .1,直到找到一些结果,然后我取第一个。有更好的方法吗?

这是我正在做的:

    public static SRTtree Cities { get; set; }

    public static string GetTimezone(double lat, double lng)
    {
        var envelope = new Envelope(new Coordinate(lat, lng));

        IList results;

        do
        {
            envelope.ExpandBy(.1);
            results = Cities.Query(envelope);
        } while (results.Count == 0);

        return results[0] as string;
    }

最佳答案

JTS 1.13 提供了 STRTree.nearestNeighbour执行此操作的方法。我不知道它是否已经移植到 NTS,但如果没有,也许你可以请求它。

关于c# - 在 STRtree 中找到最近的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6258751/

相关文章:

c# - 按不同的对象排序并转换不同的对象

c# - 无法使用 System.IO.Ports 使用 gsm 调制解调器通过 C# 代码发送 SMS

c# - 我如何使用线程在 XNA 中运行数据库查询?

java - 这段代码有什么问题,数字溢出警告

c# - .NET BinaryReader 不遵守编码

c# - 使用 DataContractSerializer 序列化对象

java - Dynamodb - 扫描并过滤数字列表中的数据,而不在过滤条件中包含关键属性

java - 这个带有 for 循环的递归调用的 Big-O 时间复杂度是多少

java - 方法 __execute 公开为 WebMethod,但没有名称为 {http ://microsoft. com/webservices/} 的相应 sdl 操作

c# - 如何使用 MassTransit 在 Azure 中创建死信队列处理程序?