我在我的数据库中有大量的位置(Lat,Lng)数据,我们假设它有以下列:
度假经纬度
我想定义可用度假村的半径,我需要在西北和东南找到这个地方 . 我需要找到最西北的度假胜地和最东南的度假胜地,我的目标是绘制一个包含所有地方的矩形 .
算法算法是什么?
该表存储在SQL Server中,我可以在这里使用SP或Function . 此外,C#代码也会有所帮助 .
EDIT
我需要在NW和SE上找到一个地方来确定矩形 . 我需要先解决这个问题 . 我现在不想找到一种在该矩形内找到位置的方法 .
EDIT
这是我对我所追求的想象力(抱歉可怕的绘画):
认为这是世界 Map ,蓝色圆圈是度假胜地 . 我需要找到我用棕色圆圈标记的两个地方的纬度和长度 .
EDIT
@Damien_The_Unbeliever指出我在这方面走错了方向 . 我的目标是画一个包含所有地方的矩形 . 我的问题是讲另一个故事 .
3 回答
要绘制一个矩形,其中所有的度假村都适合这里是完整的例子:
你真的想要使用一个考虑到地球曲率的函数,如果距离相当大,这将产生合理的差异 .
例如,您可以基于Haversine forumula创建一个函数:
您可以在where子句中使用它来过滤掉值>您的半径的子句 .
如果我理解正确,你有一堆带有坐标的度假村,你想要这些度假村的边界“矩形” .
然后你需要发出两个查询,一个查找最小和最大纬度,另一个查找最小和最大经度 .
然后组合这些值以获得正确的角点 .
EDIT
您可以像这样使用SQL:
和经度类似 . 然后(@minlat,@ minlong)是一个角落(@maxlat,@ maxlong)是另一个角落 . 你可能需要改变它们:我不确定纬度是否意味着N / S.
对于大多数NW度假村,您有一个问题:如果一个度假村是最北部的,另一个是最西部的度假村怎么办?你打算如何选择?
EDIT2
假设您只有两个度假村,一个在NE角落,另一个在SW角落 . 也许在这两者之间的粗略线上添加更多 . 现在有哪些NW和SE角落度假村?