度分秒轉換十進位制度 之Excel實現

2022-01-20 05:18:52 字數 2423 閱讀 5345

我們都知道,1°=60′,1′=60″,1°=3600″。

那麼,輕而易舉容易計算:112°18′37.6″=112+18/60+37.6/3600≈112.3104444°

這當然是有參考價值的,比如爬下一張只有度分秒形式的經緯度**,但是,我們的gis軟體只認十進位制度(原因無非就是十進位製好算),那麼通過excel的字串操作函式,就可以輕鬆轉換為十進位制度。

更多有關gis的技術、**經驗見小專欄:

【注意】伸手黨(劃掉)急著要結果的同學可以看第4小節,拉最後有完整的公式給出,不必看1、2、3小節這些過程。

find函式可以找到某個字元(串)在指定字串的**。

我們說,china中字母n在第4個,那麼

4=find("

n","china")

如果china在單元格a1,那麼

4=find("

n",a1)

// find函式還有第三個引數,此處不討論

即得出結論:

i =find(s,d)

i——s在d的位置

s——查詢的字元()串

d——被查詢的字串

left()函式可以獲取從左邊開始數的第n個字元,通俗點講就是在第n個處切開,前n個留下形成結果字串,其他的扔了。即:

left("

china", 3)="chi"

left("

china", 1)="c"

與left類似,從左往右第i個起算,取j個,頭和尾不要了。

mid("

china",3,2)="in"

mid("

china",1,4)="chin"

ok,有了上部分的預備,那麼我們就要對[112°18′37.6″]中括號內的字串進行切割,把度分秒分別切出來。

首先,我們要獲取°號、′號、″號的位置:

a1=112°18′37.6

″a2=find("

°", a1) //結果是4

a3=find("

′", a1) //結果是7

a4=find("

″", a1) //結果是12,小數點也佔一位字元

然後,使用left取到度(注意是到°號之前的2,不是到度號):

b1=left(a1,a2) //結果錯誤,是112°,並不是我們想要的112

b1=left(a1,a2-1) //結果是112

用mid取到分的數值。

注意,起點不是°號了,是度號往右乙個,即a2+1。

要取多少個數字呢?這裡分的數值是兩位,則a3-a2-1剛好是2:

b2=mid(a1,a2+1,a3-a2-1) //結果是18
用mid取到秒的數值(起點數字,和取長,與分的數值同理):

b3=mid(a1,a3+1,a4-a3-1) //結果是37.6
如果不太能理解a3-a2-1為啥剛好是分的數值的位數,自己稍微動一下腦筋就想出來了,用位數的順序相減唄。

這一步就簡單了,使用簡單的數學四則運算:

c1=b1+b2/60+b3/3600  //結果是112.3104444

分步列公式是為了清晰過程,實際只需要乙個單元格就可以計算,總結一下:

十進位制度

=取度+取分/60+取秒/3600

=b1 + b2/60 + b3/3600

=left(a1,a2-1) + mid(a1,a2+1,a3-a2-1) + mid(a1,a3+1,a4-a3-1

) =left(a1, find("

°", a1)-1)

+mid(a1, find(

"°", a1)+1, find("′", a1)-find("°", a1)-1)/60

+mid(a1, find(

"′", a1)+1, find("″", a1)-find("′", a1)-1)/3600

如果不寫成換行,那麼結果就會是:

//a1是度分秒形式的座標值單元格

=left(a1, find("

°", a1)-1) + mid(a1, find("°", a1)+1, find("′", a1)-find("°", a1)-1)/60 + mid(a1, find("′", a1)+1, find("″", a1)-find("′", a1)-1)/3600

如下圖所示:

度分秒轉換十進位制度 之Excel實現

我們都知道,1 60 1 60 1 3600 那麼,輕而易舉容易計算 112 18 37.6 112 18 60 37.6 3600 112.3104444 這當然是有參考價值的,比如爬下一張只有度分秒形式的經緯度 但是,我們的gis軟體只認十進位制度 原因無非就是十進位製好算 那麼通過excel的...

度分秒轉換十進位制度 之Excel實現

我們都知道,1 60 1 60 1 3600 那麼,輕而易舉容易計算 112 18 37.6 112 18 60 37.6 3600 112.3104444 這當然是有參考價值的,比如爬下一張只有度分秒形式的經緯度 但是,我們的gis軟體只認十進位制度 原因無非就是十進位製好算 那麼通過excel的...

將度 分 秒值轉換為十進位制度

在arcmap中,在表中新建乙個字段,用於儲存新的十進位制度值,使用字段計算器和 vb 指令碼實現。如下示例,其中,假設 latitude 是表中儲存 dms 緯度值字段的名稱,經緯度資料中的度分秒三個資料是以空格分隔。dim degrees dim minutes dim seconds dim ...