ESRIジャパン株式会社 ArcGISブログ

検索

2012年5月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

RSS

« 無料でダウンロードできるLandsat画像の活用 | メイン | ArcGISの標準規格対応状況 »

2010年6月18日 (金)

テキスト ファイルのフィールドを定義する方法

「テキスト ファイルのデータをArcGISで読み込もうとしたけれど、希望どおりのデータ型にならなかった」などの経験をされたことはありませんか?
そこで、今回はフィールドのデータ型などを定義できる「schema.ini」ファイルをご紹介します。

ArcGISは、Open Database Communication(ODBC)ドライバ用のMicrosoft OLE DBプロバイダ、Microsoft ODBC Text Driverを使用して、テキストファイル内のデータにアクセスします。このドライバは、「schema.ini」という名前のファイルにテキスト ファイルに関するスキーマ情報を格納します。

ArcCatalogまたはArcMapでテキスト ファイルが格納されているディレクトリを閲覧したり開いたりすると、自動的にそのディレクトリに「schema.ini」が作成されます。

この「schema.ini」ファイルに各フィールドのデータ型やフィールド長などを定義することができます。



・テキスト ファイルの名前
・ファイルのフォーマット
・フィールドの名前、長さ、データ型
・文字セット
・データ型の変換

ただし、「schema.ini」で設定した情報すべてがArcGISでご利用いただけるわけではありません。

■テキスト ファイルの名前
「schema.ini」の最初に記述されるのが角括弧で囲まれたテキスト ファイルの名前です。

---------------------
[SampleData.txt]
---------------------

■ファイルのフォーマット
テキスト ファイルのフォーマットを指定します。

ArcGISでは、ファイルの拡張子をみて、各テキスト ファイルの区切り文字を決定しています。拡張子が「.txt」「.asc」「.csv」のファイルは、カンマ区切りのファイルとして認識され、拡張子が「.tab」ファイルは、タブ区切りのファイルとして認識されます。ですから、拡張子が例えば「.txt」のファイルがあり、そのファイル内でカンマ以外の区切り文字(例えば";")が使用されている場合、デフォルトではファイルが正しく解釈されません。
そのような場合には下記のように記述します。

Format=Delimited(;)

フォーマットの種類:
TabDelimited               - タブ区切り
CSVDelimited               - カンマ区切り
Delimited(custom character)   - ダブルクォーテーション( " )を除く任意の一文字
FixedLength                - 固定長

■フィールドの名前、長さ、型
フィールド名を指定する方法は2通りあります。

1.テキスト ファイルの1行目をフィールドの名前に指定します。
また、フィールドのデータ型を決定するためにフィールドの先頭から何レコード目までに格納されているレコードを検査するかをMaxScanRowsオプションで指定することができます。下記の例のように0を指定するとファイル内のすべてのレコードを検査します。
(デフォルトでは25レコード目までを検査します。)

---------------------
ColNameHeader=True
MaxScanRows=0
---------------------

2.各フィールドのフィールド名、データ型、フィールド長を指定します。
固定長のファイルには必ず各フィールドの名前、データ型、長さを指定する必要があります。固定長以外のファイルでもフィールドの名前や型などを指定することはできますが、Char型以外のフィールド長はデータ型に依存します。

Coln=ColumnName type [Width #]


ColumnName - フィールド名にスペースが含まれている場合は、ダブルクォーテーションで囲む必要があります。
type - データ タイプには次のようなものがあります。
ArcGISでサポートされていないデータ型はご利用になれません。
()内はArcGISで読み込んだ場合のデータ型です。

Microsoft Jetのデータ型:
Byte (Short Integer)
Short (Short Integer)
Long (Long Integer)
Single (Float)
Double (Double)
DateTime (Date)
Text
Memo (Blob)


ODBCのデータ型:
Char (Text)
Float (Double)
Integer (Long Integer)
LongChar (Blob)
Date

-------------------------
Col1=NAME Char Width 30
Col2=XCOORD Float
Col3=YCOORD Float
--------------------------

■文字セット

文字セットには、ANSIまたはOEMのどちらかを選択できます。
Shift-JISをお使いの場合のコードページ番号は932になります。

-----------------------------
CharacterSet=OEM
-----------------------------

■データ型の変換(ArcGISでエクスポートする際に事前に「schema.ini」で設定しますが、ArcGISでサポートされていないデータ型は利用できません。)
データを下記の書式で表示することができます。

DateTimeFormat   - 日付と時刻の書式を設定します(エクスポートのみ有効)
DecimalSymbol   
- 数値の整数部分と端数部分を分けるための1文字を設定します。
NumberDigits        - 数値の小数点以下の桁数を指定します(エクスポートのみ有効)
NumberLeadingZeros - -1より大きく、1より小さい10進値の前に0を付けるかどうかを指定します。
                                           値はFalse(0を付けない)またはTrueです。
                                           ※ArcGISでは利用できません。


※Currencyの書式はArcGISではサポートされていないデータ型なので、ご利用になれません。

CurrencySymbol          - テキスト ファイルの通貨の値に使われる通貨記号を指定します。例: $
CurrencyPostFormat          - 通貨記号と値の表示方法を指定します。
CurrencyDigits                   - 通貨値の小数点以下の桁数を指定します。
CurrencyNegFormat          - マイナスの通貨値の表示方法を指定します。
CurrencyThousandSymbol - 通貨値を3桁の値で区切るために使われる1文字のシンボルを指定します。
CurrencyDecimalSymbol    - 通貨値の整数部分と端数部分を分けるための1文字を設定します。

※これまでにご紹介した「schema.ini」ファイルの項目を指定しない場合は、Windows コントロール パネルの既定値が使われます。

※「schema.ini」ファイルでの設定はWindows レジストリの設定をファイルベースで無効にします。

■サンプル
--------------------------------------
◇「schema.ini」のサンプル
--------------------------------------
[交通事故.txt]
ColNameHeader=False
CharacterSet=932
Format=CSVDelimited
Col1=道路ID Integer
Col2=負傷者数 Integer
Col3=死者数 Integer
Col4=飲酒運転 Char Width 16
Col5=速度 Char Width 9
Col6=事故地点 Integer

---------------------------------------
◇カンマ区切りのテキスト ファイルのサンプル (交通事故.txt)
---------------------------------------
123,2,0,該当,30-60km,18053
124,2,1,,0-30km,18053
125,1,0,,0-30km,18053
126,0,0,,60km以上,18053
127,2,0,,30-60km,18085
---------------------------------------

上記の「schema.ini」とともに「交通事故.txt」をArcGISで読み込むと、「schema.ini」で指定したフィールド名やデータ型で下記のように表示されます。

---------------------------------------
道路ID          Long Integer
負傷者数        Long Integer
死傷者数        Long Integer
飲酒運転        Text
速度              Text
事故地点        Long Integer
---------------------------------------


トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/492067/24433033

テキスト ファイルのフィールドを定義する方法を参照しているブログ: