图幅关系如下:
旧分幅的总原理:
计算公式:
新的分幅原理:
比例尺代码:
计算公式:
总代码如下(以溧阳为例):
import math
#北半球分幅
#旧编号
def old(latitude,longitude,scale):
one=chr(int(latitude/4)+65)
print(one)
two=int(longitude/6)+31
print(two)
if scale == 1/500000:
if (longitude-int(longitude/6)*6)>=3:
if (latitude-int(latitude/4)*4)>=2:
three="B"
else:
three = "D"
else:
if (latitude - int(latitude / 4) * 4) >= 2:
three = "A"
else:
three = "C"
print(three)
elif scale == 1 / 250000:
four= int(13-((latitude%4)//1)*4+((longitude%6)//1.5))
print('['+str(four)+']')
else:
five= int(133-((latitude%4)//(1/3))*12+((longitude%6)//0.5)) #1/100000
print(five)
if scale == 1 / 10000:
eight= int(57 - ((latitude % (1 / 3)) // (1 / 24)) * 8 + ((longitude % 0.5) // 0.0625))
print('('+str(eight)+')')
else:
six = chr(int(3 - ((latitude % (1 / 3)) // (1 / 6)) * 4 + ((longitude % 0.5) // 0.25)) + 64) #1/50000
print(six)
if scale==1/25000:
seven=int(3 - ((latitude % (1 / 6)) // (1 / 12)) * 4 + ((longitude % 0.25) // 0.125))
print(seven)
return '-----------------------'
#新编号
def new(latitude,longitude,code):
first=chr(int(latitude/4)+65)
print(first)
second=int(longitude/6)+31
print(second)
if code=='B':
print('B')
third=int(2-(latitude%4)//2)
print('%03d'%third)
fourth=int((longitude%6)//3+1)
print('%03d'%fourth)
elif code=='C':
print('C')
third=int(4-(latitude%4)//1)
print('%03d'%third)
fourth=int((longitude%6)//1.5+1)
print('%03d'%fourth)
elif code=='D':
print('D')
third=int(12-(latitude%4)//(1/3))
print('%03d'%third)
fourth=int((longitude%6)//0.5+1)
print('%03d'%fourth)
elif code=='E':
print('E')
third=int(24-(latitude%4)//(1/6))
print('%03d'%third)
fourth=int((longitude%6)//0.25+1)
print('%03d'%fourth)
elif code=='F':
print('F')
third=int(48-(latitude%4)//(1/12))
print('%03d'%third)
fourth=int((longitude%6)//0.125+1)
print('%03d'%fourth)
elif code=='G':
print('G')
third=int(96-(latitude%4)//(1/24))
print('%03d'%third)
fourth=int((longitude%6)//0.0625+1)
print('%03d'%fourth)
return '-----------------------'
print('旧分幅编号')
print('1:100万分幅编号')
print(old(31.016667,119.01333333,1/1000000))
print('1:50万分幅编号')
print(old(31.016667,119.01333333,1/500000))
print('1:25万分幅编号')
print(old(31.016667,119.01333333,1/250000))
print('1:10万分幅编号')
print(old(31.016667,119.01333333,1/100000))
print('1:5万分幅编号')
print(old(31.016667,119.01333333,1/50000))
print('1:2.5万分幅编号')
print(old(31.016667,119.01333333,1/25000))
print('1:1万分幅编号')
print(old(31.016667,119.01333333,1/10000))
print('新分幅编号')
print('1:50万分幅编号')
print(new(31.016667,119.01333333,'B'))
print('1:25万分幅编号')
print(new(31.016667,119.01333333,'C'))
print('1:10万分幅编号')
print(new(31.016667,119.01333333,'D'))
print('1:5万分幅编号')
print(new(31.016667,119.01333333,'E'))
print('1:2.5万分幅编号')
print(new(31.016667,119.01333333,'F'))
print('1:1万分幅编号')
print(new(31.016667,119.01333333,'G'))