检查坐标是否在区域内

问题描述:

我遇到了房地产面临的问题。检查坐标是否在区域内

我有一个真实世界的地址,我将转换为地球坐标(如“伦敦眼”到“-0.119543; 51.503324”)。

我还在我要搜索的范围内找到了一个周边或区域(例如“10”是“10公里”)。

现在我得到了一堆坐标(在地球上是完全随机的),我想检查当前坐标是否在伦敦眼坐标的10公里内。

有没有解决这个问题的方法,或者我甚至可以面对x-y-problem

+0

你可以使用毕达哥拉斯来确定两点之间的距离 - 是你问的所有问题?还是你要求一个快速的方法来做到这一点? (你有几百万点检查?)或者你是否需要在坐标系之间转换? – 2013-02-20 13:08:01

+0

@MthetheWWatson这不是关于路由或任何事情,我只是想“在我的中心点周围绘制一个大小为n(例如:10公里)的圆圈,并检查我检查的任何其他点是否在该圆圈内” – SeToY 2013-02-20 13:11:05

您可以使用haversine公式来计算两个点之间的距离:

http://www.stormconsultancy.co.uk/blog/development/code-snippets/the-haversine-formula-in-c-and-sql/

Nearest GPS coordinate based on distance from a given point

然而,对于速度,我认为你需要计算最大/最小经度和纬度值(即伦敦眼周围的一个正方形),因为如果有很多点需要检查,这将会快得多。然后在这个小的子集上(在你的方形内)使用Haversine公式来找到10km以内的点。

+0

这有助于我很多,谢谢。我现在只是测量点之间的距离,并把它们视为理所当然。 – SeToY 2013-02-20 14:44:30

看起来这可以帮助你: http://www.doogal.co.uk/dotnetcoords.php

它是基于http://www.jstott.me.uk/jcoord,这使得点之间的距离计算。不要拿我的话来说,也没有用过。

这个问题有一个众所周知的解决方案。 Haversine_formula

我认为你也可以搜索相同的C#代码。希望能帮助到你。