python 经纬度和平面坐标相互转换利用米勒坐标系

xy_coordinate = []  # 转换后的XY坐标集
def millerToXY (lon, lat):
    """
    经纬度转换为平面坐标系中的x,y 利用米勒坐标系
    :param lon: 经度
    :param lat: 维度
    :return:
    """
    L = 6381372*math.pi*2
    W = L
    H = L/2
    mill = 2.3
    x = lon*math.pi/180
    y = lat*math.pi/180
    y = 1.25*math.log(math.tan(0.25*math.pi+0.4*y))
    x = (W/2)+(W/(2*math.pi))*x
    y = (H/2)-(H/(2*mill))*y
    xy_coordinate.append((int(round(x)),int(round(y))))
    return xy_coordinate

lonlat_coordinate = []  # 经纬度坐标集
def millerToLonLat(x,y):
    """
    将平面坐标系中的x,y转换为经纬度,利用米勒坐标系
    :param x: x轴
    :param y: y轴
    :return:
    """
    L = 6381372 * math.pi*2
    W = L
    H = L/2
    mill = 2.3
    lat = ((H/2-y)*2*mill)/(1.25*H)
    lat = ((math.atan(math.exp(lat))-0.25*math.pi)*180)/(0.4*math.pi)
    lon = (x-W/2)*360/W
    # TODO 最终需要确认经纬度保留小数点后几位
    lonlat_coordinate.append((round(lon,7),round(lat,7)))
    return lonlat_coordinate

你可能感兴趣的:(python)