**Geographic coordinates**consist of latitude and longitude. There are many ways of writing coordinates, and converting between the different ways is non-obvious but also quite trivial.

Table of contents |

2 Basic Forms 3 Components of a Typical Coordinate 4 Putting it all Together |

## Ways of Writing Coordinates

All of the following are valid and acceptable ways to write geographic coordinates:

- 40:26:46N,79:56:55W
- 40:26:46.302N 79:56:55.903W
- 40°26'21"N 79°58'36"W
- 40d 26' 21" N 79d 58' 36" W
- 40.446195N 79.948862W
- 40.446195, -79.948862

## Basic Forms

There are three basic forms of a coordinate.

- Coordinate containing degrees (integer), minutes (integer), and seconds (integer, or real number).
- Coordinate containing degrees (integer) and minutes (real number).
- Coordinate containing only degrees (real number).

## Components of a Typical Coordinate

### Degrees

40:26:46N 40 W87°43'41 87A sphere is divided into 360 degrees. The number space is divided into two halves, East and West in the case of longitude and North and South in the case of latitude. The maximum ranges are as follows:

Longitude 180 W = -180 180 E = 180Technically you could have latitudes greater than 90 or less than -90, but this is an ambiguous case, since there would be an equivalent coordinate with an inverse longitude.Latitude 90 N = 90 90 S = -90

The minimal case is that you have only degrees:

40.446111 or 40.446111N

### Minutes

Minutes are an optional component, as is implied by the minimal case of degrees. If there is no minutes component, the degrees component contains the entire precision of the coordinate and there must not be a seconds component. Minutes are actually the numerator component of a fraction with denominator 60 of one degree.

With the same examples as above:

40:26:46N 26 W87°43'41 43In the first case, the number of minutes is 26.

To convert, 26 minutes is equal to degrees.

### Seconds

40:26:46N 46 W87°43'41 41In the second case, the number of minutes is 41.

To convert, 41 seconds is equal to minutes.

## Putting it all Together

### Conversion from DMS to Decimal

- Starting with the seconds first, divide 41/60 = ~0.683333 minutes.
- Add fractional minutes to whole minutes, 43 + 0.683333 = 43.683333 minutes.
- Divide minutes: 43.683333 / 60 = ~0.728055 degrees.
- Add fractional degrees to whole degrees to produce final result: 87 + 0.728055 = 87.728055 degrees.
- Since it is a West longitude coordinate, negate the result.
- The final result is
**-87.728055**.

### Conversion from Decimal to DMS

Given a decimal longitudinal coordinate such as -87.728055 it is trivial to convert it to DMS form. It will be necessary to know whether it is a latitudinal or longitudinal coordinate in order to fully convert it. The method is as follows:

- Subtract the whole number portion of the coordinate, leaving the fractional part. The whole number is the number of degrees. 87.728055 = 87 degrees.
- Multiply the remaining fractional part by 60. This will produce a number of minutes in the whole number portion. 0.728055 x 60 = 43.6833 = 43 minutes.
- Multiply the fractional part of the number of minutes by 60, producing a number of seconds. 0.6833 x 60 = 40.998 = 41 seconds. It is possible count this as 40 seconds, truncating the decimal, round it to 41, or keep the entire number.
- Depending on whether the source number was a latitudinal or longitudinal coordinate, and the sign of the number, add the N/S/E/W specifier. The following table shows the possibilities:

Type Dir. Sign Test Lat. N + > 0 Lat. S - < 0 Long. E + > 0 Long. W - < 0A coordinate with at 0°0'0" latitude or longitude is neither North nor South, East nor West. It is simply zero latitude or zero longitude.

- The final result is: W 87°43'41".

#### Programmatical Conversion

The most common programmatical use of these processes is to display a coordinate to an end user in the more common DMS form instead of decimal form. Some example code in the PHP programming language to do this is:

function pretty_coord($coord) { return sprintf("%0.0f° %2.3f", floor(abs($coord)), 60*(abs($coord)-floor(abs($coord)))); };function pretty_coords($latitude, $longitude) { return sprintf("%s %s, %s %s", ($latitude>0)?"N":"S", pretty_coord($latitude), ($longitude>0)?"E":"W", pretty_coord($longitude)); };