我有一个程序,它接受三对或更多经度和纬度的用户输入。我试图通过用输入坐标构造的多边形找到表格中的所有相交/有界四边形坐标(每个四边形具有4对经度和纬度)。
它需要覆盖整个地球(两极)并尽可能精确。
我尝试将其转换为球面坐标(使用固定高度),但后来不知道下一步该做什么。
我很确定之前已经完成了,但我无法通过谷歌搜索找到它。
我使用的是Java,但Python也可以使用。
我找到了一种检查多边形是否相交的方法,如果它们是笛卡尔坐标。
任何帮助将不胜感激!
答案 0 :(得分:2)
如果点位于数据库中,则可以使用空间索引。在你的所有多边形上做一个蛮力相交很容易,但这需要很长时间。 Mysql,Oracle和SQLServer都有空间扩展,允许您创建空间索引并包含针对它们的函数。如果您不介意数据库负载,这可能是最简单的方法。
http://dev.mysql.com/doc/refman/5.5/en/spatial-extensions.html
如果您想在Java中完成所有操作,那么您可能希望寻找R-tree实现。这是一种使用矩形创建类似B树的结构的方法,并且可以更容易地缩小您需要进行检查的多边形。