python 计算曼哈顿距离

    def clip(self, n, min, max):
        if n < min:
            n = min
        if n > max:
            n = max
        return n

    def longlat2tile(self, x1, y1, level):
        M_PI = 3.1415926
        EarthRadiusInMeters = 6378137
        PixelsPerTile = 256
        EarthCircumferenceInMeters = 2 * M_PI   * EarthRadiusInMeters
        rad_long = x1 * M_PI / 180
        rad_lat = y1 * M_PI / 180
        x_meters = EarthRadiusInMeters * rad_long
        sin_latitude = math.sin(rad_lat)
        i_log = math.log((1 + sin_latitude) / (1 - sin_latitude))
        y_meters = EarthRadiusInMeters / 2 * i_log
        num_pixels = long(PixelsPerTile << level)
        meters_per_pixel = EarthCircumferenceInMeters / num_pixels
        tile_long = int(self.clip((EarthCircumferenceInMeters / 2 + x_meters) / meters_per_pixel + 0.5, 0, num_pixels - 1))
        tmp = long((EarthCircumferenceInMeters / 2 - y_meters))
        tile_lat = int(self.clip(tmp / meters_per_pixel + 0.5, 0, num_pixels - 1))
        return tile_long, tile_lat

 

 

计算直线距离

    def getDistance(self, x1,y1,x2,y2):
        dx = x2 - x1
        dy = y2 - y1
        sx = math.cos(x1* 0.01745329252)
        dis = math.sqrt(dx*dx*sx*sx + dy*dy) * 111195.0
        return dis

 

 

  

你可能感兴趣的:(python 计算曼哈顿距离)