程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

业余电台梅登黑德定位系统python计算程序

hfteth 2024-12-29 00:54:42 技术文章 17 ℃

"""
业余电台地理位置报告中位置可以用4个或6个字符表示粗略或精确位置;
该系统将地球表面分成324(18X18)场(field),各占经度20度,纬度10度,AA~RR表示;
每个场又分成100(10X10)个方(square),00~99表示;
每个方又分成5766(24X24)个块(subsquare),AA~XX表示;
例如:My QTH is Pinggu Beijing and grid location is ON66GF.
"""
def degree_minutes_seconds(loc_wm):
    #位置坐标转换成度,分,秒坐标
    degree = int(loc_wm)
    minutes = int((loc_wm - degree)/(1/60))
    seconds = int((loc_wm - degree - minutes*(1/60))/(1/3600))
    print(degree, minutes, seconds)

if __name__=='__main__':

    degree_minutes_seconds(117.123987)
    degree_minutes_seconds(40.2109324)

    list_wm = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'G', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
            'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

    list_nv = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

    x = 200
    while x <= -180 or x >= 180 or b >= 60 or c >= 60:
        print('请输入位置的经度,小于等于180且大于等于-180,分秒小于60')
        a, b, c = map(float, input("东经为正,西经为负,度、分、秒中间用逗号隔开(英文字符):").split(','))
        x = a + b/60 + c/60/60 + 1/999999
        print('经度:', x)

    y = 100
    while y <= -90 or y >= 90 or e >= 60 or f >= 60:
        print('请输入位置的纬度,小于等于90且大于等于-90,分秒小于60')
        d, e, f = map(float, input("北纬为正,南纬为负,度、分、秒中间用逗号隔开(英文字符):").split(','))
        y = d + e/60 + f/60/60 + 1/999999
        print('纬度:', y)

    x_num = int((x + 180)/20)
    str_j = list_wm[x_num]
    y_num = int((y + 90)/10)
    str_w = list_wm[y_num]
    loc_1 = str_j + str_w
    #print(loc_1)

    xx_num = int((x+180-x_num*20)/2)
    #print('xx_num:', xx_num)
    str_jj = list_nv[xx_num]
    yy_num = int((y+90-y_num*10)/1)
    #print('yy_num:', yy_num)
    str_ww = list_nv[yy_num]
    loc_2 = str_jj + str_ww
    #print(loc_2)

    loc_four = loc_1 + loc_2
    print('四位简码网格定位:', loc_four)

    xxx_num = int(((x+180)/2 - int((x+180)/2))*60/5)
    #print('xxx_num:', xxx_num)
    str_jjj = list_wm[xxx_num]
    yyy_num = int((y + 90 - int((y + 90)/1))*60/2.5)
    #print('yyy_num:', yyy_num)
    str_www = list_wm[yyy_num]
    loc_3 = str_jjj + str_www

    loc_six = loc_four + loc_3
    print('六位网格定位:', loc_six)

    """
    #运行结果
    117 7 26
    40 12 39
    请输入位置的经度,小于等于180且大于等于-180,分秒小于60
    东经为正,西经为负,度、分、秒中间用逗号隔开(英文字符):116,23,29.22
    116,23,29.22
    经度: 116.39145100000101
    请输入位置的纬度,小于等于90且大于等于-90,分秒小于60
    北纬为正,南纬为负,度、分、秒中间用逗号隔开(英文字符):39,54,26.37
    39,54,26.37
    纬度: 39.907326000001
    四位简码网格定位: OM89
    六位网格定位: OM89CV
    """
    """
    Pgabc 2022000003
    author : Pgabc
    www.wmdbsoft.com
    """

Tags:

最近发表
标签列表