ジオプロセシングは、データ タイプという概念を軸に構築されています。どのツール パラメータにも、変数の内容を定義するデータ タイプが関連付けられています。単純なデータ タイプとしては、文字列(英数字のセット)、ブール型(True または False 値)、長整数型(-2,147,483,648 ~ 2,147,483,647 までの整数値)があります。このようなシンプルなデータ タイプに加えて、フィールド、座標系、範囲など、ArcGIS のデータ専用のデータ タイプが多数あります。
各データ タイプは次のファイルで説明されています。Geoprocessing_data_types.pdf. リンクをクリックしても表示されない場合は、ArcGIS for Desktop のインストール フォルダ内の \arcgis\Documentation フォルダから該当のドキュメント(Geoprocessing_data_types.pdf)を開くことができます。
このドキュメントを表示するには、Adobe Reader が必要です。http://get.adobe.com/jp/reader/ から無料でダウンロードできます。
データ タイプが必要な場合
普通のジオプロセシング ユーザはデータ タイプについて知る必要はありません。しかし、変数およびパラメータのデータ タイプを指定しなくてはいけない場合があります。
- ModelBuilder でスタンドアロン変数を作成するときは、作成する変数のデータ タイプを指定する必要があります。
- スクリプト ツール ウィザードを使用してスクリプト ツールを追加するときは、スクリプト ツールの各パラメータについてデータ タイプを指定する必要があります。
ModelBuilder の場合、ほとんどの変数は既存のツール パラメータから作成します。どのパラメータもデータ タイプが関連付けられているため、変数は自動的に正しいデータ タイプで作成されます。
パラメータのデータ タイプの決定
パラメータのデータ タイプを決定する方法はいくつかあります。
- ツールのリファレンス ページの構文セクションに、各パラメータとそのデータ タイプを記述した表があります。
- ModelBuilder で、ツールのパラメータから変数を作成します。変数を右クリックし、[プロパティ] をクリックして、[データ タイプ] タブをクリックします。ダイアログ ボックスの上部にデータ タイプが表示されます。
- ModelBuilder で、モデル レポートを作成します。レポートにすべてのパラメータのすべてのデータ タイプが記載されています。
文字列構文
どのデータ タイプにも、ツールのダイアログ ボックスとスクリプトで使用される文字列構文があります。ほとんどのデータ タイプは、データセットのパス名や数値、キーワードなど、非常に単純な文字列構文です。たとえば、field データ タイプは、フィールドの名前です。他のデータ タイプの構文はもう少し複雑です。
データ タイプの文字列構文は、上記の PDF ファイルに記載されています。あるデータ タイプの特定の文字列構文が不明な場合は、次の方法を試してください。
- そのデータ タイプを使用するツールを見つけます。
- ダイアログ ボックスを使用してツールを実行します。
- [結果] ウィンドウで結果を右クリックして、[Python スニペットとしてコピー] をクリックします。このスニペットを任意のテキスト エディタ(または Python ウィンドウ)に貼り付けて、すべてのパラメータの文字列値を調べます。
データ タイプとスクリプティング オブジェクト
データ タイプの文字列構文には、スクリプトで使用するには複雑すぎるものもあります。たとえば、以下は、エケルト第 4 図法座標系を定義する空間参照データ タイプのテキスト文字列です。
PROJCS['World_Eckert_IV',
GEOGCS['GCS_WGS_1984',
DATUM['D_WGS_1984',
SPHEROID['WGS_1984',6378137.0,298.257223563]],
PRIMEM['Greenwich',0.0],
UNIT['Degree',0.0174532925199433]],
PROJECTION['Eckert_IV'],
PARAMETER['False_Easting',0.0],
PARAMETER['False_Northing',0.0],
PARAMETER['Central_Meridian',0.0],
UNIT['Meter',1.0]]
文字列構文が複雑なデータ タイプの場合、arcpy には、そのデータ タイプを簡単に作成して変更できるメソッドとプロパティを持つクラスが用意されています。たとえば、SpatialReference クラスをご参照ください。