2015-12-31 118 views
0

我试着去计算边界框的中心,这些给定的点如何计算边界框的中心?

(50.607041876988994, -1.3187316344406208, 52.40735812301099, 1.5737316344406207) 

编辑解决:这是我的代码在python做

from math import cos, sin, atan2, sqrt 

    def center_geolocation(geolocations): 
     """ 
     Provide a relatively accurate center lat, lon returned as a list pair, given 
     a list of list pairs. 
     ex: in: geolocations = ((lat1,lon1), (lat2,lon2),) 
      out: (center_lat, center_lon) 
     """ 
     x = 0 
     y = 0 
     z = 0 

     for lat, lon in geolocations: 
      lat = float(lat) 
      lon = float(lon) 
      x += cos(lat) * cos(lon) 
      y += cos(lat) * sin(lon) 
      z += sin(lat) 

     x = float(x/len(geolocations)) 
     y = float(y/len(geolocations)) 
     z = float(z/len(geolocations)) 

     return (atan2(y, x), atan2(z, sqrt(x * x + y * y))) 

谢谢:)

+0

你传递给函数的参数是什么? –

+0

我试着通过我的计算边框(50.607041876988994,-1.3187316344406208,52.40735812301099,1.5737316344406207) –

回答

0
from math import * 

def center_geolocation(geolocations): 
    """ 
    Provide a relatively accurate center lat, lon returned as a list pair, given 
    a list of list pairs. 
    ex: in: geolocations = ((lat1,lon1), (lat2,lon2),) 
     out: (center_lat, center_lon) 
""" 
x = 0 
y = 0 
z = 0 

for lat, lon in geolocations: 
    lat = float(lat) 
    lon = float(lon) 
    x += cos(lat) * cos(lon) 
    y += cos(lat) * sin(lon) 
    z += sin(lat) 

x = float(x/len(geolocations)) 
y = float(y/len(geolocations)) 
z = float(z/len(geolocations)) 

return (atan2(y, x), atan2(z, sqrt(x * x + y * y))) 


center_geolocation( 
((50.607041876988994, -1.3187316344406208), 
    (52.40735812301099, 1.5737316344406207))) 

你给出的例子中没有float错误....我不喜欢输出 - 但那不是th问题。

+0

感谢我意识到错误 –

+0

高兴你排序问题 –

+1

的一个问题,它打印出来(-1.4093883217883079,0.6741482698408712)的这些坐标的地方应该打印51.51608899635712,0.09891956707558282,你知道我可能出错了吗? –