数据库存储4个点,坐标如下:
姓名| Lat |长
第1点| 11.111 | 22.222
第2点| 22.222 | 33.333
第3点| 44.444 | 55.555
第4点| 66.666 | 77.777
技术:
MS SQL Server
Web应用程序通过HTML5获取当前用户lat和long,然后它应该计算那些4中的哪些点接近0.5 km。 如何吗
它应该根据此图显示第1点和第2点:
答案 0 :(得分:2)
您可以使用以下功能找到 两个坐标之间的距离
CREATE FUNCTION dbo.fnCalcDistanceKM(@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
RETURNS FLOAT
AS
BEGIN
RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
END
样本使用:
select [dbo].[fnCalcDistanceKM](13.077085,80.262675,13.065701,80.258916)
实体框架5.0允许您像这样编写LINQ表达式
private Facility GetNearestFacilityToJobsite(DbGeography jobsite)
{
var q1 = from f in context.Facilities
let distance = f.Geocode.Distance(jobsite)
where distance < 500 * 1609.344
orderby distance
select f;
return q1.FirstOrDefault();
}
我希望这足以让你开始。
答案 1 :(得分:0)
您需要将您的观点转换为地理数据类型。然后你可以做一个WHERE @ here.STDistance(testPoint)&lt; 500。
使用geogrpahy点计算距离的基础知识可以在this question中找到。