Convert Coordinate Notation (Data Management)
Summary
Converts coordinate notations contained on one or two fields from one notation format to another.
Usage
The input table can be a text file or any table supported by ArcGIS. Point features are also valid.
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 output is a point feature class where each input location with a valid notation is represented as a point. The records with invalid notations will not have any geometry, and values of records in the newly added output fields will be empty.
- No point geometry is created for input records with invalid notations. Run Check Geometry to find records that are not converted.
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 nonsystem fields from the input table, including the input format fields, are transferred to the output point feature class.
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 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.
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
Parameter | Explanation | Data Type |
in_table |
The table containing the fields with coordinate notations to convert. | Table View |
out_featureclass |
The output feature class of points. 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, 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. 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, 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, 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 nonsystem 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, the default of GCS_WGS_1984 is used. | Coordinate System |
Code Sample
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 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 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 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"""
try:
# DDLon field contains longitudes in a string field
arcpy.CalculateField_management(in_table,"DDLonDbl","convertToDouble(!DDLon!)","PYTHON_9.3",expr)
except:
print arcpy.GetMessages()
# 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"""
try:
# DDLat field contains latitudes in a string field
arcpy.CalculateField_management(in_table,"DDLatDbl","convertToDouble(!DDLat!)","PYTHON_9.3",expr)
except:
print arcpy.GetMessages()