FAQ
シェープファイルの読み込み時に「フィーチャ数とレコード数が一致しない」のエラーが表示される
ナレッジ番号:1033 | 登録日:2023/05/29 | 更新日:2024/11/21
説明
シェープファイルの破損等により、フィーチャ数とレコード数が一致しなくなり、 ファイルが開かなくなることがあります。
エラーメッセージの例
- フィーチャクラスを開く際にエラーが発生しました。シェープ数がテーブルのレコード数と一致しません。
- 指定したデータ オブジェクトをマップに追加できませんでした。シェープ数がテーブルのレコード数と一致しません。
解決策
こちらのFAQで紹介されている「ShapeFile Repairer Tool 」をお使いいただくことによってシェープファイルの修復に成功した例があります。
10.x の場合
インデックスファイル(.shx)からレコード数を求め、そのレコード数を持つdBASEファイル(.dbf)を新規作成するという手順で行います。(図形情報を復旧する手順です。属性テーブルの内容は復旧されません。)
- (レコード数やフィーチャ数を求める)
インデックスファイルは100バイトのヘッダとその次に長さが8バイトの固定長レコードが含まれます。 この8バイト1つが図形のフィーチャ1つに相当するので、このファイルをバイナリ表示してレコード数を求めれば良いことになります。
または、このインデックスファイルのプロパティにあるファイルサイズからも求めることができます。 ファイルサイズはバイト単位で表示されますので、その値から100を引いて8で割った値がフィーチャ数となります。 - (dBASEファイルを作成する)
ArcMap のカタログ ウィンドウ(または ArcCatalog)にて、[新規作成] → [dBASE テーブル] の操作で dBASE テーブルを作成します。[エディタ] ツールバー の [エディタ] → [編集の開始] をクリックしてテーブルの編集セッションを開始し、テーブルに必要な数だけレコードを作成します。 (既存のdbfファイルの編集はできませんのでご注意ください。)
レコードを作成したら、編集を保存して、ArcMapを閉じます。
Excel 2003 以前のバージョンが使用できる場合は、Excel でも dBASE ファイルを作成できます。新しい Excel シートの 1行目にフィールド名を入力し、2行目以降からレコード数分のセルに、ID番号等を入力し、dBASE Ⅳファイルとして.shpや.shxと同じ名称で保存します。 - Windows エクスプローラーにて、シェープファイルを構成する dBASEファイル(拡張子 .dbf)を退避させるためにファイル名を変更し、代わりに前の手順で新規作成した dBASEファイルを .shpや.shxと同じ名称で保存します。
- ArcMapに シェープファイルを追加して、正しく図形が表示されているかを確認後、属性を入力していきます。
9.x の場合
ArcGIS 9.x 以前のバージョンでは、ArcMap でdbfテーブルを編集することができません。
- (レコード数やフィーチャ数を求める)
インデックスファイルは100バイトのヘッダとその次に長さが8バイトの固定長レコードが含まれます。 この8バイト1つが図形のフィーチャ1つに相当するので、このファイルをバイナリ表示してレコード数を求めれば良いことになります。
または、このインデックスファイルのプロパティにあるファイルサイズからも求めることができます。 ファイルサイズはバイト単位で表示されますので、その値から100を引いて8で割った値がフィーチャ数となります。 - Excel 2003 以前のバージョンを使用して dBASE ファイルを作成/編集することができます。新しい Excel シートの 1行目にフィールド名を入力し、2行目以降からレコード数分のセルに、ID番号等を入力し、dBASE Ⅳファイルとして.shpや.shxと同じ名称で保存します。
(Excel 2007 以降のバージョンでは、dbfファイルがサポートされていませんので編集することができません。) - Windows エクスプローラーにて、シェープファイルを構成する dBASEファイル(拡張子 .dbf)を退避させるためにファイル名を変更し、代わりに前の手順で新規作成した dBASEファイルを .shpや.shxと同じ名称で保存します。
- ArcMapに シェープファイルを追加して、正しく図形が表示されているかを確認後、属性を入力していきます。
ご注意
- ExcelでdBASE(IV)ファイル作成する場合には、ワークシートをdBASEフォーマットで新規保存するときに、 データの存在範囲(行及び列)に"Database"という範囲名を自動的に付けて保存します。 しかし、既存のdBASEファイルを編集したときには、範囲名"Database"の範囲の定義は、自動的には更新されませんので、もとの範囲の定義が残っています。ファイルに実際に保存されるデータは、範囲名"Database" の中にあるものだけなので、この範囲外に入力したデータは失われてしまいます。 "Database"範囲の定義の更新は、「挿入」メニューの「名前」-「定義」で現れるダイアログボックスにて、 新たな範囲で同じ"Database"という名前をつけて「追加」ボタンをクリックして行ってください。
- Excel 2007 以降のバージョンでは、dBASEファイルを編集できなくなりました。これは Microsoft Office の設計によるものです。
メタデータ
機能
種類
製品
バージョン