Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 伦敦地图数据的多边形点测试_Google Maps_Geometry_Geospatial_Geo - Fatal编程技术网

Google maps 伦敦地图数据的多边形点测试

Google maps 伦敦地图数据的多边形点测试,google-maps,geometry,geospatial,geo,Google Maps,Geometry,Geospatial,Geo,我需要测试一个点是否在伦敦的一些地图数据的多边形中 在这个尺度上忽略数据的球形方面,仅仅将其视为平面,安全吗?对我们来说,100%准确并不是非常重要的。大约10米的误差可能是可以的 (我知道Google maps API中可能有一些函数已经做到了这一点,但我们正在对服务器端进行预计算。)在最坏的情况下,如果您有一个代表整个伦敦的多边形,则误差可能会远远超过您的目标10米。如果: 伦敦以51.5度为中心,0.0度为中心 伦敦的半径为经度的0.5度 然后,从N51.5 E0.5到N51.5 W0

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

在这个尺度上忽略数据的球形方面,仅仅将其视为平面,安全吗?对我们来说,100%准确并不是非常重要的。大约10米的误差可能是可以的


(我知道Google maps API中可能有一些函数已经做到了这一点,但我们正在对服务器端进行预计算。)

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

  • 伦敦以51.5度为中心,0.0度为中心
  • 伦敦的半径为经度的0.5度

然后,从N51.5 E0.5到N51.5 W0.5的大圆与相同点之间的等角线(等角线是将球坐标视为平面时使用的等角线)之间的最大位移约为142m。如果你用一个巨大的矩形来模拟伦敦,误差将超过你的承受能力

因此,近似的安全性取决于用于表示伦敦的多边形数量,特别是表示中任何多边形边的最大长度

编辑

针对OP的评论:

是的,我认为使用等角线与天真地假设lat/lng是平面坐标一样,不需要进一步变换。在这个简单的例子中,我在N51.5 E0.5和N51.5 W0.5之间构建了一条直角线,这是两个点之间的一条小圆弧,这也是一条纬度线,在这种情况下,如果将纬度/长度视为平面坐标,那么这条线也是您绘制的同一条线。但这是一个特例,是为我的答案量身定做的。老实说,我不确定,但我认为在墨卡托投影上,这通常是正确的,也就是说,直角线与将纬度/长度视为平面坐标得到的线相同

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

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


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

如果你不担心地形方面,然后你可以把三角形看作平面,在三角形测试中做一个点,这是否有用?你的坐标投影(x,y)还是地理(LAT,LNG)。多边形中的点便于投影坐标。acraig5075-使用lat,lng。这是kml就绪的数据。“如果将球坐标视为平面,则使用的是直角线”-这是否与天真地假设lat/lng为平面坐标相同,或者是否涉及一些额外的变换?另外,“任何多边形边的最大长度”-我很惊讶这里的关键不是多边形的整体大小。这是否取决于我用于内部/外部测试的算法?