2 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
只是一些簡(jiǎn)單的事情:
>>> s = '123.45678W123.45678S'
>>> int(s.translate(str.maketrans('EWNS', '1234', '.')))
123456782123456784
不是您在問題中仍然要求的不可能的 12 位數(shù)字,而是您在評(píng)論中允許的 20 位數(shù)字以下。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
由于您正在處理坐標(biāo),我會(huì)盡力將信息保留在最后的 12 位 ID 中。
如果您的點(diǎn)是全球性的,則可能有必要保留度數(shù),但它們可能分布廣泛,因此您可以在精度方面犧牲一些信息。
如果您的點(diǎn)是局部的(都在小于 10 度的范圍內(nèi)),您可能會(huì)跳過度數(shù)的前兩位數(shù)并關(guān)注小數(shù)點(diǎn)。
由于兩個(gè)點(diǎn)可能彼此接近,因此保留一位數(shù)字作為序列號(hào)可能是謹(jǐn)慎的做法。
廣泛點(diǎn)的建議:
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'
該示例將轉(zhuǎn)換為123451234530.
在計(jì)算出每個(gè) ID 的初始ident數(shù)字后,您應(yīng)該遍歷它們并遞增最后一位數(shù)字(如果ident已使用)。
通過這種方式,您可以通過將前 10 位數(shù)字分隔為格式 ddd.dd 的兩度并使用 [-2] 數(shù)字作為象限的指示符(0:SW,1:SE, 2:西北,3:東北)。
添加回答
舉報(bào)