シェープファイルフィールドの長さを決定していますか?


8

私の仕事では、QGISの新しいプロジェクトに取り込むMapInfoから派生したいくつかのシェープファイルを継承しています。列名を変更したり、列を追加および削除したりする機会があります。列にデータが多すぎないため、新たに開始してフィールド長を調整することもできます。

一部のフィールド長が必要以上に長いことに気付き、20年前の過去のデータベース作成から、フィールド長を必要以上に長くしないことをお勧めします。効率を向上させるために、「スペース」を節約します。

これはまだ望ましいですか、それともフィールド長はもはや問題ではありませんか?


使用しているフォーマットによって異なります。
bugmenot123 2015

1
フィールドの長さは、おそらく何も必要ないという定義により、「必要以上に長くない」ように保つ必要があります。もちろん、どのくらいの長さを「必要」とするかは、何をキャプチャするかによって決まります。
DMusketeer 2015

3
IMOの最も重要なベストプラクティスは、可能であればシェープファイルの使用を停止することです。
alphabetasoup

回答:


12

答えはデータ形式に依存します。属性のシェープファイルで使用されるdBase-III +ファイルは固定幅であるため、FIPS列を254幅のテキストとして定義すると、254バイトが使用されます。さらに悪いことに、dBaseの最大レコード幅は4000バイトであるため、5文字のフィールドで浪費される249は他のフィールドには使用できません(標準の実装者に応じて最大100または255です)。制限はdBaseファイル(2Gb)の合計サイズにも適用されます。これには、最大幅が536kのレコードが近づくと、400バイト幅で5.36mのレコードが使用可能になる場合があります。

フィールド幅を制限する別の理由があります-データ品質。指定子が正当に保持できるのは2文字のみで、10文字で定義すると、ファットフィンガーの無効な値がデータファイルに受け​​入れられる可能性が高くなります。

一方、必要な幅のみを指定し、UTF-8形式で国際データを取得する場合、文字が2〜6バイトを使用できるときにスペースが不足することがあります。

そのため、通常は終了しているため、行スペースを無駄にしないデータベース文字列フィールド(ファイルジオデータベースを含む)の場合、柔軟性はオプションですが、固定幅形式の場合は古いルールが適用されます。


答えてくれてありがとう。異なるデータベース構造についてはあまり知らないので、Vinceからの回答を完全に理解しているとは思いませんが、その要点は理解しています。今明らかに思われる- -私は私の主な考慮事項は、データの整合性となり、もはやそれは必要以上には何も設定しませ考える感謝
マーティンHügi

あなたの質問に答えた人に感謝するための主要なツールは、賛成投票し、質問に回答済みのマークを付けることです。不明な点がある場合は、質問してください。ここでの考え方は、良い答えを構築することです。
ビンス

1
@Vinceはこれによく答えましたが、私が追加する理由はもう1つあります。意図を明確にすることです。「state」という名前のフィールドに2文字しかない場合、そのフィールドが州の標準的な略語を保持することになっていることは明らかです。ただし、そのフィールドを50または200文字にすると、州の完全な名前を保持していると解釈される場合があります。これは、全体的なデータ品質に結びついています。
RustProof Labs 2015

フォローアップ-18か月後、これは今ではもっと意味のあることです-素晴らしい答え
MartinHügiMar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.