我们都知道,1°=60′,1′=60″,1°=3600″。
那么,轻而易举容易计算:112°18′37.6″=112+18/60+37.6/3600≈112.3104444°
这当然是有参考价值的,比如爬下一张只有度分秒形式的经纬度表格,但是,我们的GIS软件只认十进制度(原因无非就是十进制好算),那么通过Excel的字符串操作函数,就可以轻松转换为十进制度。

更多有关GIS的技术、代码经验见小专栏:https://xiaozhuanlan.com/topic/0593271846

【注意】伸手党(划掉)急着要结果的同学可以看第4小节,拉最后有完整的公式给出,不必看1、2、3小节这些过程。

1 预备知识(三个函数)

1.1 FIND()函数

FIND函数可以找到某个字符(串)在指定字符串的哪里。

我们说,CHINA中字母N在第4个,那么

=FIND("N","CHINA")

如果CHINA在单元格A1,那么

=FIND("N",A1)

// FIND函数还有第三个参数,此处不讨论

即得出结论:

I = FIND(S,D)
I——S在D的位置
S——查找的字符()串
D——被查找的字符串

1.2 LEFT()函数

LEFT()函数可以获取从左边开始数的第n个字符,通俗点讲就是在第n个处切开,前n个留下形成结果字符串,其他的扔了。即:

LEFT("CHINA", 3)="CHI"
LEFT("CHINA", 1)="C"

1.3 MID()函数

与LEFT类似,从左往右第i个起算,取j个,头和尾不要了。

MID("CHINA",3,2)="IN"
MID("CHINA",1,4)="CHIN"

2. 提取度&分&秒的数值

OK,有了上部分的预备,那么我们就要对[112°18′37.6″]中括号内的字符串进行切割,把度分秒分别切出来。

首先,我们要获取°号、′号、″号的位置:

A1=°′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-) //结果是112

用MID取到分的数值。

注意,起点不是°号了,是度号往右一个,即A2+1。

要取多少个数字呢?这里分的数值是两位,则A3-A2-1刚好是2:

B2=MID(A1,A2+,A3-A2-) //结果是18

用MID取到秒的数值(起点数字,和取长,与分的数值同理):

B3=MID(A1,A3+,A4-A3-) //结果是37.

如果不太能理解A3-A2-1为啥刚好是分的数值的位数,自己稍微动一下脑筋就想出来了,用位数的顺序相减呗。

3. 拼接

这一步就简单了,使用简单的数学四则运算:

C1=B1+B2/+B3/  //结果是112.

4. 整合所有公式到一个单元格

分步列公式是为了清晰过程,实际只需要一个单元格就可以计算,总结一下:

十进制度
=取度+取分/+取秒/
=B1 + B2/ + B3/
=LEFT(A1,A2-) + MID(A1,A2+,A3-A2-) + MID(A1,A3+,A4-A3-)
=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. Excel中使用VBA进行度分秒与十进制度的转换

    发现Excel的VBA功能真是批量处理的一把利刃,工作中小试牛刀了一把,将Excel中度分秒形式的坐标批量处理成十进制度形式,处理完后用于GIS展点制图. 原Excel数据如下: VBA代码如下: S ...

  2. GPS整数。度分秒转换

    例如30.453280 104.2018怎么把度数转换为度分秒的格式要详细换算方法 例如30.453280°,30.453280°,则有30°0.453280°×60= 27.1968′则有27′0. ...

  3. C#: 数字经纬度和度分秒经纬度间的转换

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  4. 经纬度、时分秒转换的C#类

    一:新建一个包含经纬度.时间转换的类optaDataConvert public class optaDataConvert { /// <summary> /// 时间转换 /// &l ...

  5. java android 将小数度数转换为度分秒格式

    /** * 将小数度数转换为度分秒格式 * @param numStr (主要用于图片中存储经纬度) * @return */ public static String convertToSexage ...

  6. Kettle 事务、转换内顺序、excel模版、使用踩坑

    kettle中转换和作业的执行顺序:     1.一个作业内的转换,是顺序执行的.     2.一个转换内的步骤是并行执行的.     3.作业内不支持事务,转换内支持事务. 根据业务需要,通常需要在 ...

  7. 【九度OJ】题目1023:EXCEL排序 解题报告

    [九度OJ]题目1023:EXCEL排序 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1023 题目描述: E ...

  8. EXCEL数据处理-经纬度转换:度分秒转换为小数

    背景:工作中遇见此问题,整理了一下,花点时间随便总结下,希望能帮助到大家! 业务描述:红框内110°10′15"这种格式的经度,我想转换为110.36534这种格式. 步骤: 1.现将110 ...

  9. testlink用例转换小工具(excel转为xml,python版)

    前面文章记录了testlink的安装方法(CentOS 7下安装xampp和testlink),由于testlink仅支持xml格式的用例导入,研究了下excel转xml的方法, 从网上其他网友那里借 ...

随机推荐

  1. cw2vec理论及其实现

    导读 本文对AAAI 2018(Association for the Advancement of Artificial Intelligence 2018)高分录用的一篇中文词向量论文(cw2ve ...

  2. [Mysql]——通过例子理解事务的4种隔离级别(转)

    SQL标准定义了4种隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的. 低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销. 一.事务隔离级别分类 第1级别:R ...

  3. .net 工程中引用出现感叹号

    在工程中引用出现感叹号,有两个原因 原因1:  这是由于之前引用的Dll文件不见了. 解决方案: 右键有感叹号的项,然后选择 “属性” 里边有一个路径属性 这个路径就是之前这个Dll文件的路径,现在这 ...

  4. 激活IDEA 2017.3 mac版 2018.05.21亲测可用

    本文激活方式不会导致IEDA打不开,可激活一年,最简便方式,只需要30秒. 1.修改hosts sudo vim /private/etc/hosts 在文件最后一行中添加: 0.0.0.0 acco ...

  5. 近期写js库中遇到的一个判别的问题

    最近在写一个自己的js库,正写到数组包,在里面定义了一个排序,只对纯数字数据进行排序的方法,但是在测试的时候发现一个很诡异的问题,那就是传入一个对象的时候,它没有返回erroemsg而是返回了对象,上 ...

  6. Python 字典(Dictionary) has_key()方法

    描述 Python 字典(Dictionary) has_key() 函数用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false. 语法 has_key()方法语法:dic ...

  7. 比较集合List<T>集合,前后多了哪些数据,少了哪些数据Except

    1.少了哪些数据 private List<int> GetRoleIdListReduce(List<int> roleIdListOld, List<int> ...

  8. admin-handlers.go

    package],,) ],,) ],,) ],,) ],,) ])     if err == redis.Nil {         http.NotFound(w, r)     } else ...

  9. Goroutine陷阱

    Go在语言层面通过Goroutine与channel来支持并发编程,使并发编程看似变得异常简单,但通过最近一段时间的编码,越来越觉得简单的东西,很容易会被滥用.Java的标准库也让多线程编程变得简单, ...

  10. 「WC 2018」州区划分

    题目大意: 给一个无向图$G(V,E)$满足$|V|<=21$,对于某一种将$G(V,E)$划分为k个的有序集合方案,若每一个子集$G_i(V_i,E_i)$,$E_i=\{(x,y)|x\in ...