概要
1 つまたは 2 つのフィールドに含まれている座標表記の形式を変換します。
使用法
[X フィールド (経度)] および [Y フィールド (緯度)] に格納される値の座標系は、[入力データの座標系] パラメーターで指定されます。入力テーブルがフィーチャクラスでない限り、デフォルトは GCS_WGS_1984 です。入力テーブルがフィーチャクラスである場合、デフォルトは入力フィーチャの座標系です。
以下の形式がサポートされています。
- 度 (10 進) (DD)
- 度分 (10 進) (DDM)
- 度分秒 (DMS)
- GARS (Global Area Reference System)
- GEOREF (World Geographic ReferenceSystem)
- ユニバーサル横メルカトル図法 (UTM)
- USNG (United States National Grid)
- MGRS (Military Grid Reference System)
DD_1、DDM_1、および DMS_1 の場合、場所を表すために必要な緯度と経度の値は、単一の文字列に結合され、単一のフィールドに格納されます。
DD_2、DDM_2、DMS_2 の場合、緯度と経度の値は別々の 2 つのフィールドによって表されます。
DD_NUMERIC の場合、緯度と経度の値は double タイプの別々の 2 つのフィールドに格納されます。
GARS、GEOREF、UTM_ZONES、UTM_BANDS、USNG、および MGRS は単一文字列の座標形式です。これは、1 つのフィールドだけに座標が格納されることを意味しています。
詳細については、後述する [入力座標の形式] パラメーターの説明をご参照ください。
OID フィールドや入力形式フィールドなどの、入力テーブルのすべてのフィールドは、出力ポイント フィーチャクラスに変換されます。OID フィールド値を使用して、[表記が無効なレコードを除外] をオンにした場合に変換される有効な表記を区別できます。
出力フィールド名は、出力の座標表記の名前に一致します。たとえば、出力フォーマットが MGRS の場合、新しい出力フィールド名は MGRS になります。
入力フィールドと同じ名前のフィールドが出力にすでに存在する場合、コピーされたフィールドの名前には一意の数字が追加されます。
[表記が無効なレコードを除外] パラメーターをオフにすると、すべての入力レコードに関する情報が維持されます。[ジオメトリのチェック (Check Geometry)] ツールを使用して、表記が無効なレコードを識別できます。
表記が無効なレコードが存在する場合、ツールのメッセージに、すべての無効なレコードの ID が出力されたログ ファイルのパスが含まれます。
[XY 座標の追加 (Add XY Coordinates)] ツールを使用すると、POINT_X フィールドおよび POINT_Y フィールドという 2 つのフィールドを出力ポイント フィーチャクラスに追加できます。これらのフィールドには、ポイントの座標が、フィーチャクラスの座標系の単位で入ります。
構文
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 | 経度の値を含む入力テーブルからのフィールド。DD_2、DD_NUMERIC、DDM_2 の場合、これは経度フィールドです。 DD_1、DDM_1、および DMS_1 の場合、このフィールドには単一の文字列の中に経度と緯度の両方の値が含まれています。 GARS、GEOREF、UTM_ZONES、UTM_BANDS、USNG、および MGRS の場合、このフィールドでは、1 つのテキスト フィールドに英数字表記が含まれています。 1 列フォーマットの 1 つを選択すると、y_field パラメーターは無視されます。 | Field |
y_field | 緯度の値を含む入力テーブルからのフィールド。DD_2、DD_NUMERIC、DDM_2、DMS_2 の場合、これは経度フィールドです。 DD_1、DDM_1、および DMS_1 の場合、このフィールドには単一の文字列の中に経度と緯度の両方の値が含まれています。 GARS、GEOREF、UTM_ZONES、UTM_BANDS、USNG、および MGRS の場合、このフィールドでは、1 つのテキスト フィールドに英数字表記が含まれています。 1 列フォーマットの 1 つを選択すると、このパラメーターは無視されます。 | Field |
input_coordinate_format | 入力フィールドの座標形式。デフォルトは DD_2 です。
DD、DDM、DMS、UTM も有効なキーワードです。これらを使用するには、(ダイアログで) 入力したり、スクリプトから値を渡したりします。アンダースコアおよび修飾子のあるキーワードは、フィールド値の詳細を示しています。 | String |
output_coordinate_format | 入力表記が変換される座標形式。デフォルトは DD_2 です。
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_records を True に設定した場合、出力は有効な表記のみをポイントに変換します。オンにしない場合、無効なレコードは NULL ジオメトリとして含められます。
| Boolean |
コードのサンプル
ConvertCoordinateNotation (座標表記の変換) の例 1 (スタンドアロン スクリプト)
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 (スタンドアロン スクリプト)
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_ZONES 形式による UTM_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 (スタンドアロン スクリプト)
出力テキストの 10 進度値を浮動小数点値に変換する 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)
環境
ライセンス情報
- Basic: はい
- Standard: はい
- Advanced: はい