サマリー
属性テーブルの元のデータ型が適切に設定されていないことが原因でデータ分析の実行ができない場合、文字列 (テキスト) フィールドの値を数値に変換することがあります。 (特に外部ソースのデータを共有またはインポートする場合) データの整合性を確保するために、フィールドを別のタイプに変換する方法は、データを目的のタイプの新しいフィールドにコピーすることです。
次に示す 3 つの解決策は、1 つ目は ArcGIS Pro 1.x と 2.x に対応し、2 つ目の解決策は ArcGIS Desktop 10.x、3 つ目はもっと古いソフトウェア (ArcView GIS 3.x など) に対応します。
手順
ArcGIS Pro 1.x および 2.x の場合
- ArcGIS Pro プロジェクトを開き、該当するデータまたはテーブルをプロジェクトに追加します。
- [コンテンツ] ウィンドウでデータかテーブルを右クリックし、[属性テーブル] を選択します。
- [追加] ボタンをクリックして新しいフィールドを作成します。
- [フィールド] リスト ビューで、次のプロパティを設定します。
- 新しいフィールドの名前を設定します。
- [データ タイプ] を数値タイプに設定します。 最も一般的なのは、Long または Double フィールド タイプです。
- [数値形式] を [数値] に設定し、必要に応じて設定を調整します。
- 必要に応じて、ドメイン、デフォルト、フィールドの長さの値を設定します。
- 上部のリボンで ([フィールド] タブ)、[保存] をクリックし、編集内容をテーブルに保存して、[フィールド] ビューを閉じます。
- 新しく作成した数値フィールドの見出しを右クリックし、[フィールド演算 (Calculate Field)] を選択します。 [フィールド演算] ジオプロセシング ダイアログ ボックスが開きます。
- [入力テーブル]、[フィールド名]、および [式の種類] は自動的に入力されています。 [条件式フィールド] リスト ウィンドウで、新しく作成された数値フィールドに移行する必要がある属性を含む文字列フィールドを特定し、ダブルクリックします。 [条件式] テキスト ボックスには次のように入力されます。
!<String field name>!
- [実行] をクリックして、ツールを実行します。
注意: 文字列フィールドに NULL (空) の値があると、ツールの実行に失敗する可能性があります。 詳細については、ArcGIS Pro Web ヘルプ ドキュメント「新規フィールドの作成とドメインおよびデフォルト値の適用」をご参照ください。
ArcGIS Desktop 10.x の場合
- ArcMap を開き、レイヤーまたはファイル ジオデータベースの属性テーブルを開きます。
- ArcMap でフィールドのデータ タイプを確認するには、フィールドの見出しを右クリックし、[プロパティ] を選択します。
- [テーブル] ウィンドウの左上で、[テーブル オプション] ドロップダウン ボタン をクリックして [フィールドの追加] を選択します。
注意: [フィールドの追加] オプションは、ユーザーがデータへのアクセス権を持ち、かつデータが他のユーザーやアプリケーションからアクセスされていない場合にのみ使用されます。 このオプションは、マップが編集セッションである場合にも無効になります。
- 新しいフィールドの [名前] を指定します。
- フィールドの [タイプ] を [Long Integer] または [Double] などの数値タイプに設定します。
- 必要に応じて、[全桁数] と [小数点以下桁数] を設定します。
- [OK] をクリックします。
- 新しく作成したフィールドの見出しを右クリックして、[フィールド演算] を選択します。
- 文字列フィールドに数値しか含まれない場合、次の手順を実行して、数値フィールドに属性をコピーします。
- [形式] を [VB Script] に設定します。
- 条件式のウィンドウに「String field name」を入力するか、[フィールド] ボックスで文字列フィールドを選択して [OK] をクリックします。
- 文字列フィールドに英数字が混合している場合は、次の手順を実行して属性をコピーします。
- [形式] を [VB Script] に設定し、[コードブロックを表示] チェックボックスをオンにします。
- 以下のコードをコピーして [事前に作成したスクリプト コード] テキスト ウィンドウに貼り付け、「String field name」を変換するフィールドの名前に置き換えます。 左右の角括弧はそのままにしておきます。
Dim String, Check String = [String field name] Check = IsNumeric(String) If Check = True then Output = CDbl(String) else Output = null End if
注意: 5 行目の「CDbl(String)」を、手順 3 (b) で選択した数値フィールド タイプに応じて、次の関数に置換します。 - Integer: CInt(String) - Long: CLng(String) - Double: CDbl(String)
- 2 つ目の条件式ウィンドウで (この例では「DoubleV =」)、次のように入力します。
出力
次の図に、[フィールド演算] ダイアログ ボックスを示します。 この例では、文字列フィールドを [Double] フィールドに変換します。
- [OK] をクリックします。 スクリプトを実行すると、数値フィールドに文字列フィールドの値が入ります。
注意: 文字列フィールドに数値以外の文字またはシンボルが含まれている場合、数値フィールドに変換してもそのセルの値はデフォルトの <Null> のままです。
ArcView GIS 3.x の場合
注意: ArcView GIS は、2012 年 12 月の時点で廃止された製品です。 以下の手順は、情報提供のみを目的としています。
文字列フィールドを数値フィールドに変換するには、新しい数値フィールドを作成して、元のフィールドから新しいフィールドに値をコピーします。
テーブルに数値フィールドを追加する- テーブルを開き、[テーブル] メニューで [編集の開始] を選択します。
- [編集] メニューから [フィールドの追加] を選択します。
- [フィールド定義] ダイアログ ボックスで、次の操作を行います。
- [名前] を適切な名前に設定します (Area など)。
- [タイプ] を [数値] に設定します。
- [幅] を適切な数値に設定します (32 など)。
- [桁数] を目的の数値に設定します (6 など)。
- [OK] をクリックします。
- [テーブル] メニューで [編集の終了] を選択して、編集内容を保存します。
[フィールド演算] を使用して、新しいフィールドに値をコピーし、その値を数値に変換します。- 必要に応じ、テーブルを開いて [編集の開始] を選択します。
- [数値] フィールドを選択します。
- [フィールド] メニューから [計算] を選択します。
- [フィールド] リストの文字列フィールドをダブルクリックします。
- [タイプ] を [文字列] に設定します。
- [リクエスト] リストを下にスクロールして、[AsNumber] をダブルクリックします。
- 最終的な条件式は、次のようになります。
[Strng_fld].AsNumber
- [OK] をクリックします。
- [テーブル] メニューで [編集の終了] を選択して、編集内容を保存します。