将度分秒值转换为十进制度值

下面是将度分秒转换为十进制度的简单等式。

DD = (Seconds/3600) + (Minutes/60) + Degrees

如果角度值是负数,则转换方法不同。其中一种方法是:

DD = - (Seconds/3600) - (Minutes/60) + Degrees

以下说明讲解了使用字段计算器,将表中字段里以度分秒表示的经度或纬度值转换为十进制度数的方法。代码使用 VBA 编写,但能够轻松转化为其他编程语言。它假定度分秒是以字符串(文本)的形式存储的,数字间留有空格且不带任何符号。例如数据将被存储为:

25 35 22.3

其中 25 是度,35 是分,22.3 是秒。

输出结果将被存储到数字字段中。

步骤:
  1. 将表添加至 ArcMap。
  2. 在内容列表中右键单击该表,并单击打开。
  3. 单击“选项”按钮,然后单击“添加字段”。
  4. 在“名称”字段中键入“Lat2”。
  5. 单击“类型”下拉箭头,然后在列表中单击“双精度”。

    如果“Lat2”已被用作字段名,则另选择一个尚未使用的名称。

  6. 单击“确定”。
  7. 右键单击“Lat2”字段然后单击“字段计算器”。
  8. 若弹出消息框则单击“是”。
  9. 选中“高级”复选框。
  10. 将以下代码粘贴到表达式框:
    Dim Degrees as Double
    Dim Minutes as Double
    Dim Seconds as Double
    Dim DMS as Variant
    Dim DD as Double
    
    DMS = Split([Latitude])
    Degrees = CDbl(DMS(0))
    Minutes = CDbl(DMS(1))
    Seconds = CDbl(DMS(2))
    If Degrees < 0 Then
       DD = -(Seconds/3600) - (Minutes/60) + Degrees
    Else
       DD = (Seconds/3600) + (Minutes/60) + Degrees
    End If

    第六行以“DMS. . .”开头,括号 [ ] 中的文字应当是保存纬度值字段的名称。将代码中的“Latitude”替换为表中存储 DMS 纬度值字段的名称。

  11. 将以下代码粘贴到对话框底部的“Lat2 =”框中。
    CDbl(DD)
  12. 单击“确定”。
  13. 对于经度值的转换,重复步骤 3 到步骤 12 的过程。

7/10/2012