0

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

忽略此比例数据的球形方面并将其视为平面是否安全?对于我们需要 100% 准确来说,这并不是至关重要的。大约10m的误差可能是可以的。

(我知道 Google 地图 API 中可能有一些功能已经做到了这一点,但我们正在预先计算服务器端。)

4

1 回答 1

1

在最坏的情况下,如果您有一个代表整个伦敦的多边形,则错误可能会超过您的 10m 目标。如果:

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

那么从 N51.5 E0.5 到 N51.5 W0.5 的大圆与相同点之间的恒向线之间的最大位移(恒向线是将球坐标视为平面时使用的方向)将大约142m。如果您使用一个巨大的矩形来模拟伦敦,那么误差将超出您的容忍度。

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

编辑

解决OP的评论:

是的,我相信使用恒向线与天真地假装 lat/lng 是平面坐标相同,并且不需要进一步的转换。在这个简单的例子中,我在 N51.5 E0.5 和 N51.5 W0.5 之间构建了恒向线,它是两点之间的小圆弧,也是一条纬线,在这种情况下也是同一条线如果将纬度/经度视为平面坐标,则绘制。但这是一个特例,专为我的回答量身定做。老实说,我不确定,但我认为在墨卡托投影上这通常是正确的,即恒向线与将纬度/经度视为平面坐标得到的线相同。

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

在一张纸上画一个圆圈。然后在圆上的任意 2 个点之间画一条弦。现在你有一个问题的说明:圆圈代表球形地球上任意两点之间的大圆,直线代表两点之间的小圆。弦和圆之间的距离表示大圆和小圆之间的距离,这是您在幼稚假设下可能犯的错误。

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

于 2012-05-28T13:19:06.663 回答