Convert Coordinate Notation (Data Management)

Summary

Converts coordinate notations contained on one or two fields from one notation format to another.

Learn more about supported notation formats

Usage

  • The coordinate system of the values stored in the X Field (Longitude) and Y Field (Latitude) is specified with the Input Coordinate System parameter. The default is GCS_WGS_1984 unless the input table is a feature class, in which case the default is the coordinate system of the input features.

  • The following formats are supported:

    • Decimal degrees (DD)
    • Degrees decimal minutes (DDM)
    • Degrees-minutes-seconds (DMS)
    • Global Area Reference System (GARS)
    • GEOREF (World Geographic Reference System)
    • Universal Transverse Mercator (UTM)
    • United States National Grid (USNG)
    • Military Grid Reference System (MGRS)

  • For DD_1, DDM_1, and DMS_1, the latitude and longitude values required to represent a location are concatenated into a single string and stored in a single field.

    For DD_2, DDM_2, and DMS_2, the latitude and longitude values are represented by two separate fields.

    For DD_NUMERIC, the latitude and longitude values are stored in two separate fields of type double.

    GARS, GEOREF, UTM_ZONES, UTM_BANDS, USNG, and MGRS are single-string coordinate formats, meaning only one field contains the coordinate.

    See the Input Coordinate Format parameter explanation below for more information.

  • All fields from the input table, including the OID field and the input format fields, are transferred to the output point feature class. The OID field values can be used to differentiate valid notations that are converted if Exclude records with invalid notation is checked on.

    Output field names are matched to the name of the output coordinate notation; for example, if the output format is MGRS, then the new output field name will be named MGRS.

    If a field with the same name as the input field already exists in the output, the name of the copied field is appended with a unique number.

  • Uncheck the Exclude records with invalid notation parameter to retain information regarding all input records. The Check Geometry tool can be used to identify records with invalid notations.

    If there are records with invalid notations, the tool messages will include the path of log file that contains IDs of all invalid records.

  • The Add XY Coordinates tool can be used to add two fields—POINT_X and POINT_Y—to the output point feature class. These fields contain the coordinates of a point in the unit of the coordinate system of the feature class.

Syntax

arcpy.management.ConvertCoordinateNotation(in_table, out_featureclass, x_field, y_field, input_coordinate_format, output_coordinate_format, {id_field}, {spatial_reference}, {in_coor_system}, {exclude_invalid_records})
ParameterExplanationData Type
in_table

The table can be a text file or table. Point features are also valid.

Table View
out_featureclass

The output point feature class. The attribute table will contain all fields of the input table along with the fields containing converted values in the output format.

Feature Class
x_field

A field from the input table containing the longitude value. For DD_2, DD_NUMERIC, DDM_2, this is the longitude field.

For DD_1, DDM_1, and DMS_1, this field contains both latitude and longitude values in a single string.

For GARS, GEOREF, UTM_ZONES, UTM_BANDS, USNG, and MGRS, this field contains an alphanumeric system of notation in a single text field.

The y_field parameter is ignored when one of the single-string formats is chosen.

Field
y_field

A field from the input table containing the latitude value. For DD_2, DD_NUMERIC, DDM_2, and DMS_2, this is the longitude field.

For DD_1, DDM_1, and DMS_1, this field contains both latitude and longitude values in a single string.

For GARS, GEOREF, UTM_ZONES, UTM_BANDS, USNG, and MGRS, this field contains an alphanumeric system of notation in a single text field.

This parameter is ignored when one of the single-string formats is chosen.

Field
input_coordinate_format

Coordinate format of the input fields. The default is DD_2.

  • DD_1Both longitude and latitude values are in a single field. Two values are separated by a space, a comma, or a slash.
  • DD_2Longitude and latitude values are in two separate fields.
  • DDM_1Both longitude and latitude values are in a single field. Two values are separated by a space, a comma, or a slash.
  • DDM_2 Longitude and latitude values are in two separate fields.
  • DMS_1Both longitude and latitude values are in a single field. Two values are separated by a space, a comma, or a slash.
  • DMS_2Longitude and latitude values are in two separate fields.
  • GARSGlobal Area Reference System. Based on latitude and longitude, it divides and subdivides the world into cells.
  • GEOREFWorld Geographic Reference System. A grid-based system that divides the world into 15-degree quadrangles and then subdivides into smaller quadrangles.
  • UTM_ZONESThe letter N or S after the UTM zone number designates only North or South hemisphere.
  • UTM_BANDSThe letter after the UTM zone number designates one of the 20 latitude bands. N or S does not designate a hemisphere.
  • USNGUnited States National Grid. Almost exactly the same as MGRS but uses North American Datum 1983 (NAD83) as its datum.
  • MGRSMilitary Grid Reference System. Follows the UTM coordinates and divides the world into 6-degree longitude and 20 latitude bands, but MGRS then further subdivides the grid zones into smaller 100,000-meter grids. These 100,000-meter grids are then divided into 10,000-meter, 1,000-meter, 100-meter, 10-meter, and 1-meter grids.
  • SHAPEOnly available when a point feature layer is selected as input. The coordinates of each point are used to define the output format.

DD, DDM, DMS, and UTM are also valid keywords; they can be used just by typing in (on dialog) or passing the value in scripting. However, keywords with underscore and a qualifier tell more about the field values.

String
output_coordinate_format

Coordinate format to which the input notations will be converted. The default is DD_2.

  • DD_1Both longitude and latitude values are in a single field. Two values are separated by a space, a comma, or a slash.
  • DD_2Longitude and latitude values are in two separate fields.
  • DD_NUMERICLongitude and latitude values are in two separate fields of type Double. Values in the West and South are denoted by a minus sign, whereas in DD_2, the values are in text and N, S, E, and W are used to denote direction.
  • DDM_1Both longitude and latitude values are in a single field. Two values are separated by a space, a comma, or a slash.
  • DDM_2 Longitude and latitude values are in two separate fields.
  • DMS_1Both longitude and latitude values are in a single field. Two values are separated by a space, a comma, or a slash.
  • DMS_2Longitude and latitude values are in two separate fields.
  • GARSGlobal Area Reference System. Based on latitude and longitude, it divides and subdivides the world into cells.
  • GEOREFWorld Geographic Reference System. A grid-based system that divides the world into 15-degree quadrangles and then subdivides into smaller quadrangles.
  • UTM_ZONESThe letter N or S after the UTM zone number designates only North or South hemisphere.
  • UTM_BANDSThe letter after the UTM zone number designates one of the 20 latitude bands. N or S does not designate a hemisphere.
  • USNGUnited States National Grid. Almost exactly the same as MGRS but uses North American Datum 1983 (NAD83) as its datum.
  • MGRSMilitary Grid Reference System. Follows the UTM coordinates and divides the world into 6-degree longitude and 20 latitude bands, but MGRS then further subdivides the grid zones into smaller 100,000-meter grids. These 100,000-meter grids are then divided into 10,000-meter, 1,000-meter, 100-meter, 10-meter, and 1-meter grids.

DD, DDM, DMS, and UTM are also valid keywords; they can be used just by typing in (on dialog) or passing the value in scripting. However, keywords with underscore and a qualifier tell more about the field values.

String
id_field
(Optional)

This parameter is ignored as all fields are transferred to output table.

Field
spatial_reference
(Optional)

Spatial reference of the output feature class. The default is GCS_WGS_1984.

The tool projects the output to the spatial reference specified. If the input and output coordinate systems are in a different datum, then a default transformation is used based on the coordinate systems of the input and the output and the extent of the data.

Spatial Reference
in_coor_system
(Optional)

Spatial reference of the input data. If the input spatial reference cannot be obtained from the input table, a default of GCS_WGS_1984 is used.

Coordinate System
exclude_invalid_records
(Optional)

When exclude_invalid_records is set to True, the output will only convert valid notations to points. Otherwise, invalid records will be included as null geometry.

  • EXCLUDE_INVALIDOnly valid records are converted to points in the output. This is the default.
  • INCLUDE_INVALIDValid records are converted to points in the output and invalid records will be included as null geometry.
Boolean

Code sample

ConvertCoordinateNotation example 1 (stand-alone script)

ConvertCoordinateNotation usage with one input format field.

# import arcpy module
import arcpy

# set locals variables
in_tab = r"c:\data\notation.gdb\loc_mgrs"
out_pts = r"c:\data\notation.gdb\loc_final"

# call Convert Coordinate Notation with MGRS as input field.
# leaving out spatial reference parameter will default to WGS 1984 
arcpy.ConvertCoordinateNotation_management(in_tab, out_pts, "m10d", "#", "MGRS", "DD_1")
ConvertCoordinateNotation example 2 (stand-alone script)

ConvertCoordinateNotation usage with two input format fields.

# imports
import arcpy

arcpy.env.workspace = r"c:\data\mtf.gdb"

# set parameter values
input_table = 'rit_up_DD'
output_points = 'ritLOC'
x_field = 'LON'
y_field = 'LAT'
input_format = 'DD_2'
output_format = 'GARS'
id_field = 'CITY_NAME'
spatial_ref = arcpy.SpatialReference('WGS 1984')

try:
    arcpy.ConvertCoordinateNotation_management(input_table, output_points, x_field, y_field, 
                                               input_format, output_format, id_field, spatial_ref)
    print(arcpy.GetMessages(0))

except arcpy.ExecuteError:
    print(arcpy.GetMessages(2))
    
except Exception as ex:
    print(ex.args[0])
ConvertCoordinateNotation example 3 (stand-alone script)

ConvertCoordinateNotation usage with UTM_ZONES and UTM_BANDS formats example.

# imports
import arcpy

arcpy.env.workspace = r"c:\data\ccn.gdb"

# export_utm58 table contains coordinates in UTM_BANDS format 
# where N and S indicate latitude bands, 
# for example, 58S4144921393176 - here 58S is latitude band
input_table = 'export_utm58'

# the coordinate values in output point table will be in UTM_ZONES format
# for example, 58N4144921393176 - note that it is now 58N because
# the point is in UTM 58 North zone
output_points = 'utm_zone18'

spatial_ref = arcpy.SpatialReference('WGS 1984')

try:
    arcpy.ConvertCoordinateNotation_management(input_table, output_points, "LOCS", "", 
                                               "UTM_BANDS", "UTM_ZONES", "", spatial_ref)
    print(arcpy.GetMessages(0))
    
except Exception as ex:
    print(ex.args[0])
ConvertCoordinateNotation example 4 (stand-alone script)

ConvertCoordinateNotation sample that converts the output text decimal degree values to floating point values. Note that Instead of S and W, a negative sign is used.

# imports
import arcpy

# output from Convert Coordinate Notation tool
# for DD_2 (and also for DD_1) format, the output values are in string format
# for example, for DD_1, the output values may be '43.63872N 116.24135W'
in_table = r"c:\data\ccn.gdb\ccn_dd1"

# add a field of type DOUBLE to store the numeric longitude value
arcpy.AddField_management(in_table, "DDLonDbl", "DOUBLE")

# now call CalculateField tool to convert the values, 'W' is negative
expr = """def convertToDouble(fldval):
    val = float(fldval[:-1])
    if fldval[-1:] == 'W':
        return val * -1.0
    else:
        return val"""

# DDLon field contains longitudes in a string field
arcpy.CalculateField_management(in_table,"DDLonDbl","convertToDouble(!DDLon!)","PYTHON_9.3",expr)
    
# add another field to store the numeric longitude value
arcpy.AddField_management(in_table, "DDLatDbl", "DOUBLE")

# call CalculateField again to convert the values, 'S' is negative
expr = """def convertToDouble(fldval):
    val = float(fldval[:-1])
    if fldval[-1:] == 'S':
        return val * -1.0
    else:
        return val"""

# DDLat field contains latitudes in a string field
arcpy.CalculateField_management(in_table,"DDLatDbl","convertToDouble(!DDLat!)","PYTHON_9.3",expr)

Licensing information

  • Basic: Yes
  • Standard: Yes
  • Advanced: Yes

Related topics