The following is the simple equation to convert degrees, minutes, and seconds into decimal degrees:
DD = (Seconds/3600) + (Minutes/60) + Degrees
The conversion must be handled differently if the degrees value is negative. Here's one way:
DD = - (Seconds/3600) - (Minutes/60) + Degrees
In the instructions below, you will convert one field in a table of latitude or longitude values in degrees, minutes, and seconds to decimal degrees using the Field Calculator. The code is in VBScript but is easily converted to other programming languages. It is assumed that the degrees, minutes, and seconds are stored as a string (text), with spaces between the numbers and no symbols. For example, the data would be stored as:
25 35 22.3
where 25 is degrees, 35 is minutes, and 22.3 is seconds.
The output will be stored in a number field.
- Add the table to ArcMap.
- Right-click the table in the table of contents and click Open.
- Click the Options button and click Add Field.
- Type Lat2 in the Name field.
- Click the Type drop-down arrow and click Double from the list.
If Lat2 is already used as a field name, choose a name that is not used.
- Click OK.
- Right-click the Lat2 field and click Field Calculator.
- Click Yes if presented with a message box.
- Check the Show Codeblock check box.
- Paste the following code into the Pre-Logic Script Code box:
Dim Degrees Dim Minutes Dim Seconds Dim DMS Dim DD 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
In the sixth line, beginning with DMS =, the text within the brackets [ ] should be the name of the field holding the latitude values. Replace the word Latitude in the code with the name of the field (in your table) that stores the DMS latitude values.
- Paste the following code into the Lat2 = box at the bottom of the dialog box:
CDbl(DD)
- Click OK.
- Repeat steps 3 through 12 for the longitude values.