У меня есть шейп-файл, над которым я работал в ArcGIS Desktop 9.3, как-то поврежден, и он выдает мне ошибку «Количество фигур не соответствует количеству записей таблицы». Я хотел бы восстановить этот шейп-файл, так как он имеет много правок, которых нет в других ревизиях файла.
Раньше я восстанавливался после этой ошибки с помощью ogr2gui, но инструмент теперь просто вылетает. Я даже попробовал версию командной строки ogr2ogr, но все равно не повезло. Этот скрипт, Shapefile Repair Tool с сайта ArcScripts, тоже не помог.
Любые идеи? (кроме того, что я перестаю использовать шейп-файлы)
Вот вывод из ogr2ogr (основываясь на предложении в ответах):
Ответы:
Вариант с потерей поврежденных объектов может заключаться в использовании ogr2ogr для преобразования вашего шейп-файла в другой шейп-файл с опцией -skipfailures:
для более подробной информации смотрите этот пост в блоге PerryGeo:
http://www.perrygeo.net/wordpress/?p=132
источник
Я использую это. Это всегда решало эту проблему для меня.
shapecheck.exe
источник
В Официальном ответе Esri есть несколько советов, но он указывает на утилиту восстановления shp, которая несколько раз спасала меня от увольнения.
Несколько других, о которых я слышал, но не могу сказать, что пытался:
источник
Хорошо, вот еще один трюк, чтобы добавить к куче хороших ответов выше.
Это немного более грубая сила, в большинстве случаев это помогает, иногда - нет, и, хотя это, вероятно, всего лишь первый шаг к решению проблемы (а не решение для себя, которое зачастую таковым не является), оно может помочь доставит вас туда, где вы можете открыть шейп-файл. В большинстве случаев вам все равно нужно будет сделать больше ручного восстановления в ArcMap после открытия шейп-файла (поврежденные объекты? Отсутствующие атрибуты? Выровненные атрибуты? И т. Д.)
Скопируйте шейп-файл в новую пустую папку. Только возьмите SHP, SHX и DBF с собой. Оставьте все остальные файлы позади, и да, включая prj.
(Windows): щелкните правой кнопкой мыши файл SHX и выберите «Свойства», чтобы открыть свойства файла.
На вкладке «Общие» обратите внимание на размер файла EXACT этого файла SHX вплоть до байта. Посмотрите на свойство «Размер», а не на свойство «Размер на диске».
Возьмите этот размер файла в байтах и вычтите 100 байтов (заголовок). Из оставшейся части разделите на 8 (размер каждого «слова»). В результате вы получите количество элементов формы внутри части SHP файла формы.
Откройте DBF в некотором программном обеспечении, которое позволит вам отредактировать DBF и сохранить его обратно как DBF. Добавьте или удалите записи, чтобы строки в DBF соответствовали количеству объектов формы в SHP, которое вы рассчитали на шаге # 4. (Если вы используете более старую версию Excel, имейте в виду, что строка # 1 содержит имена полей, поэтому, если вы собираетесь использовать 1000 записей, это будет 1001 строк на листе с первой строки данных это строка # 2.) Если для того, чтобы количество строк соответствовало, вам нужно было удалить строки, и в этих строках содержались реальные данные, которые вам нужно сохранить, просто сохраните их в новом DBF, и вы сможете снова прочитать эти данные обратно позже, как только вы дойдете до точки, где все снова открывается в ArcMap.
После того, как вы использовали описанные выше шаги, чтобы сопоставить количество объектов в SHP с количеством строк в DBF, попробуйте снова открыть шейп-файл в ArcMap.
источник
Вы можете попытаться подсчитать количество фигур в ваших файлах .shp с помощью ogrinfo (не уверен, что это сработает):
Если вы можете посчитать количество фигур, то можете открыть файл .dbf с помощью open office, чтобы завершить его (или удалить лишние строки).
источник
Мне посчастливилось удалить файлы индекса (.idx и .shx), которые будут восстановлены вашей ГИС при повторном подключении.
источник
Если ваш шейп-файл был точечным слоем и имел значения полей XY, вы можете запустить инструмент Создать слой событий XY, чтобы создать другой слой из поврежденного шейп-файла dbf.
источник