从经纬度多边形获取边界框

3
我有一个边界列表(多边形)和一个道路列表,它们都由纬度和经度表示。我想知道一条路是否在一个多边形内。我用perl来实现,但找不到任何有用的计算方法。Math::Polygon(::Calc)有一些有趣的函数,但只适用于x/y,而不是纬度/经度。
因此,我考虑简化操作并为每个多边形生成一个边界框,这样我就可以更轻松地检查道路中的一个点是否在边界框内。
有人知道如何获取边界框的算法吗?伪代码就足够了,这样我就可以用perl编写它。
最好能够检查是否在多边形内,而无需将多边形转换为边界框,但我在网络上没有找到任何有用的信息。对于简单的2D x/y坐标系有一些算法,但不适用于球面的纬度/经度。
1个回答

3

首先,将多边形的每条线段的起点和终点放入一个数组中。然后迭代该数组以查找MinX、MinY、MaxX和MaxY。此时,点(MinX, MinY)是您的盒子的左下角,而点(MaxX, MaxY)是右上角。


7
当你的多边形跨越180°不连续线时要小心。这时上述定义的边界框可能不是你所期望的(在经度方向上将覆盖几乎整个地球)。极点也存在类似的问题。 - letmaik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接