gpt4 book ai didi

c# - 在 MySQL 中计算距离并在 .NET 中显示它们之间的距离

转载 作者:行者123 更新时间:2023-11-29 08:22:29 26 4
gpt4 key购买 nike

我正在尝试使用 MySQL 的空间扩展来计算一组查询的坐标到地点表的坐标,但我还想显示这组点之间的距离。然后将结果添加到动态列表中以供稍后迭代。

结果将是这样的:地点 1(3 英里远)、地点 2(5 英里远)等...

首先,有没有一种方法可以根据距离计算创建一个变量,以便我可以与上面类似地显示它?其次,我应该如何修改sql语句来查询地点的坐标列?

这是我到目前为止的代码:

List<dynamic> Items = new List<dynamic>();
var longitude = 90.0000;
var latitude = 0.0000;
var radius = 50000;

using(MySqlConnection con = new MySqlConnection("server=localhost;database=database;user id=user;password=pass"))
{
string sql = "SELECT *,(((acos(sin((@latitude*pi()/180)) * sin((`Latitude`*pi()/180))+cos((@latitude*pi()/180)) * cos((`Latitude`*pi()/180)) * cos(((@longitude- `Longitude`)* pi()/180))))*180/pi())*60*1.1515) as distance FROM items HAVING distance <= @radius";
con.Open();

MySqlCommand cmd = new MySqlCommand(sql,con);
cmd.Parameters.Add(new MySqlParameter("@latitude", latitude));
cmd.Parameters.Add(new MySqlParameter("@longitude", longitude));
cmd.Parameters.Add(new MySqlParameter("@radius", radius));

using(MySqlDataReader reader = cmd.ExecuteReader()){
while(reader.Read()){
Items.Add(new {
Name = reader["Name"].ToString(),
Latitude = reader["Latitude"].ToString(),
Longitude = reader["Longitude"].ToString()
});
}
}

con.Close();
}

最佳答案

从该代码来看,它应该很简单:

Items.Add(new {
Name = reader["Name"].ToString(),
Latitude = reader["Latitude"].ToString(),
Longitude = reader["Longitude"].ToString(),
Distance = reader["distance"]
});

关于c# - 在 MySQL 中计算距离并在 .NET 中显示它们之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18957852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com