2 回答

TA贡献1830条经验 获得超9个赞
只是一些简单的事情:
>>> s = '123.45678W123.45678S'
>>> int(s.translate(str.maketrans('EWNS', '1234', '.')))
123456782123456784
不是您在问题中仍然要求的不可能的 12 位数字,而是您在评论中允许的 20 位数字以下。

TA贡献1860条经验 获得超9个赞
由于您正在处理坐标,我会尽力将信息保留在最后的 12 位 ID 中。
如果您的点是全球性的,则可能有必要保留度数,但它们可能分布广泛,因此您可以在精度方面牺牲一些信息。
如果您的点是局部的(都在小于 10 度的范围内),您可能会跳过度数的前两位数并关注小数点。
由于两个点可能彼此接近,因此保留一位数字作为序列号可能是谨慎的做法。
广泛点的建议:
s = "123.45678N123.45678E"
ident = "".join([s[0:6],s[10:16]]).replace(".","")
q = 0
if s[9]=="N":
q+=1
if s[-1]=="E":
q+=2
ident+=str(q)+'0'
该示例将转换为123451234530.
在计算出每个 ID 的初始ident数字后,您应该遍历它们并递增最后一位数字(如果ident已使用)。
通过这种方式,您可以通过将前 10 位数字分隔为格式 ddd.dd 的两度并使用 [-2] 数字作为象限的指示符(0:SW,1:SE, 2:西北,3:东北)。
添加回答
举报