C#查找一英里内的所有纬度和经度

时间:2011-03-15 14:10:28

标签: c# geocoding latitude-longitude

给定lat和long值,有没有办法找到指定距离内的所有lat和long?我有一个lat和long值的数据库表,就像路灯一样,给定一个lat长对,我怎么能找到所有在特定距离内的?

我想从起点画一个圆圈并找到包含的所有纬度和长度是最好的方法,但是,我没有这方面的技能。我是一名c#开发商,但在整个地理编码领域需要一些指示。

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

haversine formula给出两个纬度/经度点之间的距离(以米为单位;转换为英里数是微不足道的)。从那里,你可能会发现相反的情况......

答案 2 :(得分:1)

我回答这个问题的时间有点晚了,但是几年前我想出了一个针对卫星视野基本相同的技巧。

地球上有两个点,您可以准确地知道距离您所在位置的每个点的纬度和经度。这些点是北极和南极。那么让我们把你想要的点放在北极。距离海拔1海里的经度为纬度为90度减去1分钟,或90度至1/60度=北纬89.9833度,因为1分弧= 1海里。

现在你拥有距离纬度为89.9833的极点一英里的经度轨迹,你基本上会旋转地球,直到你想要的纬度/长度是极点所在的位置。此过程称为“地图刻度的旋转”。一旦你考虑了方程式,你的数学就是直截了当的。我把它们埋在某个地方,所以我无法轻易找到代码,但是这个过程和方程式在John Snyder的书“Map Projections:A Working Manual”中。您可以在http://pubs.usgs.gov/pp/1395/report.pdf免费获取pdf。解释见第29-32页。

Chuck Gantz

答案 3 :(得分:0)

前段时间我正在解决如何在路上获取POI的问题。我使用了四叉树,这意味着递归地将整个区域划分为单元格和子单元格。每个POI只属于一个单元格。拥有这些单元格,您可以轻松地在单元格级别上进行高级别计算,之后只搜索具有交集的单元格。这是更多的游戏开发技术,但也可以在这里使用。以下是关于Wiki的内容:

http://en.wikipedia.org/wiki/Quadtree