转换坐标记法 (数据管理)

摘要

将一个或两个字段包含的坐标记法从一种注记格式转换为另一种注记格式。

了解有关受支持的记法格式的详细信息

使用情况

  • 存储在 X 字段(经度)Y 字段(纬度)值中的值的坐标系通过输入坐标系参数进行指定。 默认值为 GCS_WGS_1984,除非输入表为要素类(此时,默认值为输入要素的坐标系)。

  • 所支持的格式如下:

    • 十进制度 (DD)
    • 十进制度分 (DDM)
    • 度-分-秒 (DMS)
    • 全球区域参考系统 (GARS)
    • 世界地理参考系(GEOREF 和 GEOREF 16)
    • 通用横轴墨卡托 (UTM)
    • 美国国家格网(USNG 和 USNG 16)
    • 军事格网参考系(MGRS 和 MGRS 16)

  • 对于输入坐标格式参数选项 DD 1DDM 1DMS 1,纬度和经度值必须表示一个串联在一起并存储在单个字段中的位置。

    对于 DD 2DDM 2DMS 2 选项,纬度值和经度值将由两个单独的字段表示。

    对于 DD 数字选项,纬度和经度值将存储在两个单独的双精度型字段中。

    对于 GarsGeorefGeoref 16UTM 带UTM 波段USNGUSNG 16MGRSMGRS 16 选项,这些值为单字符串坐标格式,这意味着只有一个字段包含坐标。

  • 对于输入坐标格式输出坐标格式参数,MGRS 16(例如:11SLT7858811533670379)、USNG 16Georef 16 选项的精度(16 位)要高于等效的 MGRS(例如:11SLT78588115)、USNGGeoref 选项(8 位)。

  • 输入表中的所有字段(包括 OID 字段和输入格式字段)将传递到输出点要素类。 如果选中排除带有无效注记的记录参数,则 OID 字段值可用于区分转换的有效注记。

    输出字段名将与输出坐标记法的名称一致。 例如,如果输出格式为 MGRS,那么新的输出字段名将为 MGRS

    如果在输出中已存在与输入字段同名的字段,则复制字段的名称将附加一个唯一编号。

  • 取消选中排除带有无效注记的记录参数可保留全部输入记录的相关信息。 检查几何工具可用于识别带有无效注记的记录。

    如果存在带有无效注记的记录,则工具消息将包括含有所有无效记录 ID 的日志文件的路径。

  • 可利用添加 XY 坐标工具将 POINT_XPOINT_Y 两个字段添加到输出点要素类中。 这两个字段中所包含的是点要素的坐标,其坐标单位采用的是要素类坐标系的单位。

  • 此工具可以将数字记法 DD、DMS 或 DDM 转换为其他输出格式,前提是 DD、DMS 和 DDM 格式的输入值不含字母字符。

参数

标注说明数据类型
输入表

输入表或文本文件。 点要素同样有效。

Table View
输出要素类

输出点要素类。 属性表将包括输入表的所有字段以及以输出格式表示转换值的字段。

Feature Class
X 字段(经度)

输入表中包含经度值的字段。

对于输入坐标格式参数的 DD 2DD 数字DDM 2DMS 2 选项,该字段为经度字段。

对于 DD 1DDM 1DMS 1 选项,此字段包含单个字符串中的纬度值和经度值。

对于 GarsGeorefGeoref 16UTM 带UTM 波段USNGUSNG 16MGRSMGRS 16 选项,此字段在单个文本字段中包含一个字母数字记法。

Field
Y 字段(纬度)

输入表中包含纬度值的字段。

对于输入坐标格式参数的 DD 2DD 数字DDM 2DMS 2 选项,该字段为纬度字段。

选择其中一种单字符串格式时,此参数将处于非活动状态。

Field
输入坐标格式

指定输入字段的坐标格式。

DD、DDM、DMS 和 UTM 也是有效关键字;可通过(在对话框中)直接输入或在脚本中传递值的方式来使用这些关键字。但是,带下划线和限定符的关键字包含更多有关字段值的信息。

  • DD 1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DD 2经度值和纬度值位于两个不同的字段中。这是默认设置。
  • DDM 1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DDM 2 经度值和纬度值位于两个不同的字段中。
  • DMS 1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DMS 2经度值和纬度值位于两个不同的字段中。
  • Gars全球区域参考系。根据纬度和经度,该参考系将世界划分成大量的格网单元。
  • Georef世界地理参考系。一个基于格网的参考系统,将世界划分成 15 度的地图方格,然后再细分成更小的地图方格。
  • Georef 16世界地理参考系,精度为 16 位。
  • UTM 带UTM 带编号后的字母 N 或 S 仅用于指定北半球或南半球。
  • UTM 波段UTM 带编号后的字母用于指定 20 个纬度带之一。N 或 S 不用于指定半球。
  • USNG美国国家格网。与 MGRS 几乎完全相同,但其基准面采用的是北美洲基准面 1983 (NAD83)。
  • USNG 16美国国家格网,精度高于 16 位。
  • MGRS军事格网参考系。按照 UTM 坐标,将世界划分成 6 度的经度带和 20 个纬度带,但 MGRS 将这些格网区域进一步划分成更小的 100,000 米格网。这些 100,000 米的格网再被细分成 10,000 米、1,000 米、100 米、10 米 和 1 米格网。
  • MGRS 16军事格网参考系,精度为 16 位。
  • Shape仅在选择点要素图层作为输入时可用。每个点的坐标都用于定义输出格式。
String
输出坐标格式

指定输入记法转换后的坐标格式。

DD、DDM、DMS 和 UTM 也是有效关键字;可通过(在对话框中)直接输入或在脚本中传递值的方式来使用这些关键字。但是,带下划线和限定符的关键字包含更多有关字段值的信息。

  • DD 1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DD 2经度值和纬度值位于两个不同的字段中。
  • DD 数字经度值和纬度值位于两个不同的“双精度”类型字段中。 “西”部和“南”部的值以减号表示。
  • DDM 1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DDM 2 经度值和纬度值位于两个不同的字段中。
  • DMS 1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DMS 2经度值和纬度值位于两个不同的字段中。
  • Gars全球区域参考系。根据纬度和经度,该参考系将世界划分成大量的格网单元。
  • Georef世界地理参考系。一个基于格网的参考系统,将世界划分成 15 度的地图方格,然后再细分成更小的地图方格。
  • Georef 16世界地理参考系,精度为 16 位。
  • UTM 带UTM 带编号后的字母 N 或 S 仅用于指定北半球或南半球。
  • UTM 波段UTM 带编号后的字母用于指定 20 个纬度带之一。N 或 S 不用于指定半球。
  • USNG美国国家格网。与 MGRS 几乎完全相同,但其基准面采用的是北美洲基准面 1983 (NAD83)。
  • USNG 16美国国家格网,精度高于 16 位。
  • MGRS军事格网参考系。按照 UTM 坐标,将世界划分成 6 度的经度带和 20 个纬度带,但 MGRS 将这些格网区域进一步划分成更小的 100,000 米格网。这些 100,000 米的格网再被细分成 10,000 米、1,000 米、100 米、10 米 和 1 米格网。
  • MGRS 16军事格网参考系,精度为 16 位。
String
ID
(可选)

由于所有字段都被传输到输出表,因此不再使用此参数。

Field
输出坐标系
(可选)

输出要素类的空间参考。 默认值为 GCS_WGS_1984。

此工具将输出投影到指定的空间参考中。 如果输入坐标系和输出坐标系具有不同的基准面,则将根据输入坐标系和输出坐标系以及数据范围使用默认转换。

Spatial Reference
输入坐标系
(可选)

输入数据的空间参考。 如果无法从输入表中获取输入空间参考,则将使用默认值 GCS_WGS_1984。

Coordinate System
排除带无效注记的记录
(可选)

指定是否排除具有无效注记的记录。

  • 未选中 - 系统将排除无效记录,且仅会将有效记录转换为输出中的点。 这是默认设置。
  • 选中 - 有效记录将被转换为输出中的点,无效记录将作为空几何包括在内。

Boolean

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})
名称说明数据类型
in_table

输入表或文本文件。 点要素同样有效。

Table View
out_featureclass

输出点要素类。 属性表将包括输入表的所有字段以及以输出格式表示转换值的字段。

Feature Class
x_field

输入表中包含经度值的字段。

对于 input_coordinate_format 参数的 DD_2DD_NUMERICDDM_2DMS_2 选项,此字段为经度字段。

对于 DD_1DDM_1DMS_1 选项,此字段包含单个字符串中的纬度值和经度值。

对于 GARSGEOREFGEOREF16UTM_ZONESUTM_BANDSUSNGUSNG16MGRSMGRS16 选项,此字段包含单个文本字段中的字母数字记法系统。

Field
y_field

输入表中包含纬度值的字段。

对于 input_coordinate_format 参数的 DD_2DD_NUMERICDDM_2DMS_2 选项,此字段为经度字段。

选择其中一种单字符串格式时,此参数将被忽略。

Field
input_coordinate_format

指定输入字段的坐标格式。

  • DD_1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DD_2经度值和纬度值位于两个不同的字段中。这是默认设置。
  • DDM_1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DDM_2 经度值和纬度值位于两个不同的字段中。
  • DMS_1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DMS_2经度值和纬度值位于两个不同的字段中。
  • GARS全球区域参考系。根据纬度和经度,该参考系将世界划分成大量的格网单元。
  • GEOREF世界地理参考系。一个基于格网的参考系统,将世界划分成 15 度的地图方格,然后再细分成更小的地图方格。
  • GEOREF16世界地理参考系,精度为 16 位。
  • UTM_ZONESUTM 带编号后的字母 N 或 S 仅用于指定北半球或南半球。
  • UTM_BANDSUTM 带编号后的字母用于指定 20 个纬度带之一。N 或 S 不用于指定半球。
  • USNG美国国家格网。与 MGRS 几乎完全相同,但其基准面采用的是北美洲基准面 1983 (NAD83)。
  • USNG16美国国家格网,精度高于 16 位。
  • MGRS军事格网参考系。按照 UTM 坐标,将世界划分成 6 度的经度带和 20 个纬度带,但 MGRS 将这些格网区域进一步划分成更小的 100,000 米格网。这些 100,000 米的格网再被细分成 10,000 米、1,000 米、100 米、10 米 和 1 米格网。
  • MGRS16军事格网参考系,精度为 16 位。
  • SHAPE仅在选择点要素图层作为输入时可用。每个点的坐标都用于定义输出格式。

DD、DDM、DMS 和 UTM 也是有效关键字;可通过(在对话框中)直接输入或在脚本中传递值的方式来使用这些关键字。但是,带下划线和限定符的关键字包含更多有关字段值的信息。

String
output_coordinate_format

指定输入记法转换后的坐标格式。

  • DD_1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DD_2经度值和纬度值位于两个不同的字段中。
  • DD_NUMERIC经度值和纬度值位于两个不同的“双精度”类型字段中。 “西”部和“南”部的值以减号表示。
  • DDM_1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DDM_2 经度值和纬度值位于两个不同的字段中。
  • DMS_1经度值和纬度值位于同一个字段。两个值之间用空格、逗号或斜线进行分隔。
  • DMS_2经度值和纬度值位于两个不同的字段中。
  • GARS全球区域参考系。根据纬度和经度,该参考系将世界划分成大量的格网单元。
  • GEOREF世界地理参考系。一个基于格网的参考系统,将世界划分成 15 度的地图方格,然后再细分成更小的地图方格。
  • GEOREF16世界地理参考系,精度为 16 位。
  • UTM_ZONESUTM 带编号后的字母 N 或 S 仅用于指定北半球或南半球。
  • UTM_BANDSUTM 带编号后的字母用于指定 20 个纬度带之一。N 或 S 不用于指定半球。
  • USNG美国国家格网。与 MGRS 几乎完全相同,但其基准面采用的是北美洲基准面 1983 (NAD83)。
  • USNG16美国国家格网,精度高于 16 位。
  • MGRS军事格网参考系。按照 UTM 坐标,将世界划分成 6 度的经度带和 20 个纬度带,但 MGRS 将这些格网区域进一步划分成更小的 100,000 米格网。这些 100,000 米的格网再被细分成 10,000 米、1,000 米、100 米、10 米 和 1 米格网。
  • MGRS16军事格网参考系,精度为 16 位。

DD、DDM、DMS 和 UTM 也是有效关键字;可通过(在对话框中)直接输入或在脚本中传递值的方式来使用这些关键字。但是,带下划线和限定符的关键字包含更多有关字段值的信息。

String
id_field
(可选)

由于所有字段都被传输到输出表,因此忽略此参数。

Field
spatial_reference
(可选)

输出要素类的空间参考。 默认值为 GCS_WGS_1984。

此工具将输出投影到指定的空间参考中。 如果输入坐标系和输出坐标系具有不同的基准面,则将根据输入坐标系和输出坐标系以及数据范围使用默认转换。

Spatial Reference
in_coor_system
(可选)

输入数据的空间参考。 如果无法从输入表中获取输入空间参考,则将使用默认值 GCS_WGS_1984。

Coordinate System
exclude_invalid_records
(可选)

指定是否排除带无效注记的记录。

  • EXCLUDE_INVALID系统将排除无效记录,且仅会将有效记录转换为输出中的点。 这是默认设置。
  • INCLUDE_INVALID有效记录将被转换为输出中的点,无效记录将作为空几何包括在内。
Boolean

代码示例

ConvertCoordinateNotation 示例 1(独立脚本)

以下独立脚本演示了如何将 ConvertCoordinateNotation 函数与一个输入格式字段结合使用。

# 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 示例 2(独立脚本)

以下独立脚本演示了如何将 ConvertCoordinateNotation 函数与两个输入格式字段结合使用。

# 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 示例 3(独立脚本)

以下独立脚本演示了如何将 ConvertCoordinateNotation 函数与 UTM_ZONESUTM_BANDS 格式结合使用。

# 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 示例 4(独立脚本)

以下独立脚本演示了如何使用 ConvertCoordinateNotation 函数将输出文本的十进制度值转换为浮点值。 注意,要使用减号取代 S 和 W。

# 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)