Tôi có hai tọa độ GPS tôi muốn tính toán khoảng cách giữa những điều đó nhưng kết quả trên máy chủ SQL hoàn toàn khác với kết quả trong C# tôi googled và thấy rằng cả hai phương pháp tiếp cận khoảng cách về mét nhưng sự khác biệt này là lái xe tôi điên.SQL Server Geography vs DbGeography
SQL SERVER Query
select geography::Point(25.3132666, 55.2994054 ,4326)
.STDistance(geography::Point(25.25434, 55.32820,4326)) as Distance;
Web API
String format = "POINT(25.25434 55.32820)";
DbGeography myLocation = DbGeography.PointFromText(format, 4326);
var users = context.Users.Select(u => new
{
fullName = u.name,
lat = u.location.Latitude,
lng = u.location.Longitude,
distance = myLocation.Distance(u.location)
}).ToList();
đáp ứng
,{"fullName":"jons smith","lat":25.3132666,"lng":55.2994054,"distance":4133581.8647264037}
Cảm ơn trước.
Nếu để so sánh trực tiếp mã trong câu hỏi của bạn chúng tôi không biết vị trí của người dùng là gì. Trong SQL bạn hardcode một số tọa độ. Tôi cho rằng chúng khác với tọa độ của người dùng. –
Khẳng định cả hai đều sử dụng cùng một hệ thống trắc địa (hầu hết có thể là WGS 84). Tuy nhiên, tôi có thể tưởng tượng phép tính có thể khác nhau, ví dụ: tùy thuộc vào đường kính trái đất được sử dụng (Đưa vào tài khoản trái đất không phải là một quả cầu hoàn hảo). Chỉ cần đoán ... – CHS
@AndriiLitvinov Tôi chỉ dán bản ghi đó từ phản hồi dưới dạng tham chiếu có cùng giá trị giống nhau, bạn có thể thấy thời lượng dài của bản ghi chính xác giống như của SQL-Query –