我正在使用nettopologysuite(JTS Topology Suite的一个端口)。我正在使用 SRTtree 实现来存储时区列表和相应的坐标(基于此建议)。我从地理名称中获取了城市列表,提取了城市的时区和坐标,并将它们存储在 STRtree 中。我遇到的问题是这个实现不提供“最近”功能。为了进行查询,我必须提供一个起点和一个圆周。目前,我在循环中将圆周增加 0.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;
}