C# 计算批次位置的中心

C# 计算批次位置的中心,c#,geospatial,C#,Geospatial,我有一些代码,每个地址间隔5英里。这是通过在地址列表中循环并计算第一个地址和其余地址之间的站点距离线来实现的。然后将列表中的第一个地址以及任何匹配的地址放入另一个列表中 一旦我对地址进行了批处理,我想成为abe来计算批处理的中心。目前我使用的是第一个地址,但是我希望有更好的准确性。因为我有lat/lon,我能用一个数学函数来做这个吗 马克我相信“中心”是最高和最低纬度以及最高和最低经度的平均值 var hilat = list.Max(loc=>loc.Latitute); v

我有一些代码,每个地址间隔5英里。这是通过在地址列表中循环并计算第一个地址和其余地址之间的站点距离线来实现的。然后将列表中的第一个地址以及任何匹配的地址放入另一个列表中

一旦我对地址进行了批处理,我想成为abe来计算批处理的中心。目前我使用的是第一个地址,但是我希望有更好的准确性。因为我有lat/lon,我能用一个数学函数来做这个吗

马克

我相信“中心”是最高和最低纬度以及最高和最低经度的平均值

   var hilat = list.Max(loc=>loc.Latitute);
   var lolat = list.Min(loc=>loc.Latitute);
   var hilng = list.Max(loc=>loc.Longitute);
   var lolng = list.Min(loc=>loc.Longitute);

   var center = new Location() { Latitute = (hilat-lolat)/2 + lolat, 
                                 Logitute = (hilng-lolng)/2 + lolng};
“中心”应该是(我相信)最高和最低纬度以及最高和最低经度的平均值

   var hilat = list.Max(loc=>loc.Latitute);
   var lolat = list.Min(loc=>loc.Latitute);
   var hilng = list.Max(loc=>loc.Longitute);
   var lolng = list.Min(loc=>loc.Longitute);

   var center = new Location() { Latitute = (hilat-lolat)/2 + lolat, 
                                 Logitute = (hilng-lolng)/2 + lolng};

该中心将是所有位置的平均值:

var center = new Location
             {
                 Latitude = list.Average(loc => loc.Latitude),
                 Longitude = list.Average(loc => loc.Longitude)
             };

该中心将是所有位置的平均值:

var center = new Location
             {
                 Latitude = list.Average(loc => loc.Latitude),
                 Longitude = list.Average(loc => loc.Longitude)
             };

这不会给你中心。如果多个地址彼此靠近(例如,在一个城市中),而其中一个地址位于该地区的另一侧,则您的位置将更靠近该地址组,而不是位于真正的中心。@JamesCurran,是的,这是正确的。看见现在,您可能对“中心”有不同的定义;我的代码计算几何中心,但不会给出中心。如果多个地址彼此靠近(例如,在一个城市中),而其中一个地址位于该地区的另一侧,则您的位置将更靠近该地址组,而不是位于真正的中心。@JamesCurran,是的,这是正确的。看见现在,您可能对“中心”有不同的定义;我的代码计算几何中心。