2016-11-17 17 views
3

我有成千上萬NAD83緯度經度值的其中經度值開始以負像-747559718的Python添加到小數經度值

這個特定座標小數需要處於後4到映射適當使用我使用的應用程序。它應該是-74.7559718

有次在經度值將是-123092886在小數應該是3之後應該-123.092886

我通過JSON文件讀取這些座標,對於一些他們沒有小數的原因。我正在尋找一個純粹的Python解決方案在正確的位置插入小數。

數字將是9或10位長

我知道我可以做這樣的事情,一旦我有一個變量

s = longitude 
s[:3] + '.' + s[3:] 
+0

如果它不是爲9位數的情況下,你可以只乘以0.00001 –

+0

及爲何'-123.092886'有六個小數位,但'-74.02373'只有五? –

+0

如何區分-3.000000和-30.00000? – spectras

回答

1

我已經找到了我的問題,我的經度值:我所有的緯度長座標是同期美國,我知道,從一個地理空間分析,在NAD83投影任何經度值,在同期美國,並與1位開始,這將有第3位後小數位。其餘的美國經度值或者以7,8或9開始,這些值在第二個數字後總是有一個小數。我不能確定,如果這個解決方案將在世界其他地區的工作,但它被在這裏做

這裏是我與z是包含經度值的變量的解決方案:

if str(z)[1:2] == '1': 
    longitude = str(z)[0:4]+'.'+str(z)[4::] 
else: 
    longitude = str(z)[0:3]+'.'+str(z)[3::] 

UPDATE

更好的答案:

longitude = z * 0.0000001 

這也適用於緯度值

+0

它看起來很錯,我幾乎可以保證這不是如何建立這些值。 – spectras

+0

它爲什麼看起來不對?有效。「latitudeE7」:402212350, 「longitudeE7」:-747559718直接從json文件中獲得 – ziggy

+1

這看起來不對,因爲沒有開發人員通過像這樣的字符串函數運行它們來構建數字。因此,我確信您的第一個解決方案假定的數字格式必然會打破一些值。 **您的更新解決方案看起來更好**,就像_「開發人員實際上可以編寫的東西」一樣。它也簡單得多,開發人員傾向於實現需求的最簡單方法,因此如果您的解決方案比您正在解決的問題複雜得多,那麼您通常會做錯了。比較兩種解決方案的複雜性和可讀性;) – spectras