指向伦敦地图数据的多边形测试

时间:2012-05-28 11:14:34

标签: google-maps geometry geospatial geo

我需要测试一个点是否在伦敦的某些地图数据的多边形中。

在这个尺度上忽略数据的球形方面是否安全,只是将其视为平面?对于我们100%准确的需求而言,这不是至关重要的。大约10米的误差可能没问题。

(我知道Google Maps API中可能存在已经执行此操作的功能,但我们正在预先计算服务器端。)

1 个答案:

答案 0 :(得分:1)

在最坏的情况下,如果你有一个代表整个伦敦的多边形,那么误差可能会超过你的目标10米。如果:

  • 伦敦以N51.5deg为中心,E0.0deg;
  • 伦敦半径为经度0.5度;

那么从N51.5 E0.5到N51.5 W0.5的大圆与相同点之间的垂直线之间的最大位移(如果将球面坐标视为球面坐标,则垂直线是你将使用的线飞机)大约142米。如果您使用一个巨大的矩形来模拟伦敦,则误差将超出您的容差。

因此,近似值的安全性取决于您使用多少个多边形来表示伦敦,尤其是表示任何多边形边长的最大长度。

修改

解决OP的评论:

是的,我认为使用rhumb线与天真假装的lat / lng相同是平面坐标,并且不需要进一步的转换。在简单的例子中,我构造了N51.5 E0.5和N51.5之间的垂直线.W0.5是点之间的小圆弧,也是纬线,在这种情况下也是同一条线你如果将纬度/长度视为平面坐标,则绘制。但这是一个特殊的案例,为我的答案量身打造。说实话我不确定,但我认为在墨卡托投影上这通常是正确的,即通过将纬度/长度视为平面坐标来确定一条直线与你得到的直线相同。

提出的问题可以简化为询问一个点是在一条线的一边还是另一边。如果一个点位于多边形内部,如果它位于形成多边形边界的一个线段的内侧。

在一张纸上画一个圆圈。然后在圆圈上的任意2个点之间绘制一个和弦。现在你有一个问题的例子:圆圈代表球形地球上任意2个点之间的大圆,直线代表点之间的小圆圈。和弦和圆圈之间的距离代表大圆和小圆之间的距离,这是你可能用天真假设做出的错误。

它是粗糙的并且已经准备好了,我唯一的主张是,如果你的伦敦地图被建模为一个多边形,其边长约为1经度,那么将球面坐标视为平面所产生的定位误差可能是大于140米。