如何计算边界框的中心?

时间:2015-12-31 17:37:28

标签: python api geolocation latitude-longitude bounding-box

我试图用这些给定点计算边界框的中心

(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)))
谢谢你:)

1 个答案:

答案 0 :(得分: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)))

你给出的例子中没有浮动错误....我不喜欢输出 - 但这不是问题。