FAQ
度単位で表示されている緯度経度の値を度分秒の値にフィールド演算で変換する方法

ナレッジ番号:2728 | 登録日:2023/05/29 | 更新日:2023/07/21

概要

ジオメトリ演算などで入力した、既存のフィールドに格納されている 10 進度数の座標値を、度分秒の形に変換する方法です。
この例では、変換後の文字列を格納するためのフィールドを新規に追加して、Python を使ったフィールド演算を行います。

例)

  • 変換前:35.658099222222
  • 変換後:北緯 35度39分29.1572秒

手順

  1. ArcMap にテーブルまたはデータを追加します。
  2. 該当するデータまたはテーブルをテーブルオブコンテンツで右クリックし、[属性テーブルを開く] をクリックします。
  3. [オプション] をクリックし、[フィールドの追加] をクリックします。
  4. 「DMSLat」など、任意のフィールド名を入力します。フィールドの種類には [Text] を指定します。
  5. 新規に作成したフィールド名を右クリックし、[フィールド演算] をクリックします。
  6. 「編集セッション外で~」といったメッセージが表示された場合、[OK] をクリックします。
  7. [フィールド演算] ダイアログにて、形式に [Python] を選択します。
    形式に Python を選択
  8. [コードブロックを表示] にチェックをいれます。
    コードブロックを表示
  9. Pre-Logic Script Code: 部分のテキスト ボックスに以下のコードを入力します:
    def getDMS(val):
        hs = u"北緯" if (val >= 0) else u"南緯"
        val = abs(val)
        deg = int(val)
        val = (val - deg) * 60
        min = int(val)
        sec = (val - min) * 60
        return hs + u" %d度%d分%.3f秒" % (deg, min, sec)
    
  10. 度分秒の値の後につく文字を(°' " など)変更したい場合は、最後の行 u" %d度%d分%.3f秒" に含まれる 度、分、秒 の文字を修正します。
    • Python ではインデントに意味があります。1 行目の def はインデントなし、2 行目以降はすべて同じインデント(半角空白 x2 など)に揃えます。
    • 秒の値(%.3f秒)にて、.3 の値を変えると小数点以下の桁数を変更できます。桁数を指定しない場合は %f秒 とします。
    • 北緯・南緯の表示が不要な場合は、最後の行で hs + の部分を削除します。
  11. [フィールド演算] ダイアログの、<フィールド名>= 部分のテキストボックスには、以下のように入力します:
    getDMS(float( !<フィールド名>! ))
    

    <フィールド名> の部分は、変換元の緯度が格納されているフィールドを指定します。フィールドの一覧にあるフィールド名をダブルクリックすると簡単に入力できます。
  12. [OK] をクリックします。
  13. 経度についても上記のステップ 3 ~ 12 を行ないます。ただし上記コード中 u"北緯" u"南緯" と指定してある部分はそれぞれ、u"東経" u"西経" とします。

メタデータ

種類

製品

バージョン