Як уникнути створення пошкоджених Shapefiles під час редагування?


15

У мене є один з моїх ГІС-техніків, які оцифровують деякі рядки в QGIS у форматі shapefile. Я не знаю, як він це зробив (і ні він), але якось форма файлу стала пошкодженою. Це було створення випадкових ліній, або деякі з створених ним ліній просто зникнуть. Я зайшов у ArcCatalogue, щоб побачити, як це виглядало в ArcGIS, і ось що я побачив:

введіть тут опис зображення

Зауважте піктограму знака питання, де я повинен бачити піктограму «рядок» форми. Очевидно, ArcCatalogue не може прочитати цей файл. Крім того, здається, що другий файл dbf був створений із '_packed', приєднаним до кінця. Коли я дивлюся на форм-файл за допомогою провідника Windows, я бачу, що вже існує .dbf для файлу shape 'M3_PRE_SMU_lines_10Apr13_SMC.dbf', тому я не знаю, звідки взявся цей _факульований файл файлів, і я не можу знайти нічого в Інтернеті що це говорить.

Я спробував додати цей файл в ArcMap, і я отримав таку помилку:

введіть тут опис зображення

Помилка досить сама по собі пояснює ... кількість фігур не відповідає кількості записів. Я просто не знаю, чому це відбувається. Здається, в Інтернеті немає нічого, що пояснює, як це відбувається в QGIS, але я бачу пару інструментів для ремонту. Я фактично сам це відремонтував, просто відкривши QGIS, додавши шар, а потім клацнувши правою клавішею миші на шарі та "збережи як" інший файл форми. Отже, я розібрався в роботі, але сподіваюсь знайти рішення, яке не дозволить цьому вперше виникнути. Спасибі, Майку


1
Я використовую QGIS протягом багатьох років і раніше не бачив цієї проблеми. "Чарівний" вигляд іншого .dbf говорить про те, що Shapefile був підроблений за межами QGIS. Якщо ви можете відтворити помилку лише за допомогою QGIS, подайте звіт про помилку. Це було б дуже важливо!
андермаркет

Я намагався повторити проблему без удачі. Одне, що я помітив, це те, що, на відміну від ArcGIS, я не отримую повідомлення про блокування схеми під час редагування в QGIS (тобто якщо хтось має блокування схеми у файлі форм і ви почнете редагувати той самий, ArcGIS видасть помилку під час збереження QGIS ні) Я думаю, що це економить дивно, коли ви зберігаєте файл форми, схема якого заблокована. Я не на 100% впевнений, що це причина, але щось, що варто зазначити.
Майк

У мене також з’явилася ця помилка під час редагування файлів. Моя робота полягала лише в тому, щоб зробити моє редагування в ArcMap. Очевидно, що це не справжнє рішення, але - ви не самотні, відчуваючи подібні помилки.
Кевін

Ви намагалися перейменувати файл ..._ SMC.dbf у ..._ SMC.dbf.backup та ..._ SMC_packed.dbf у ..._ SMC.dbf?
Маттіас Кун

2
привіт ж проблема з Дуфуром. Файли, створені лише в середовищі q gis. Це трапляється, коли я редагую форму і, нарешті, переходжу до збереження, а потім припиняю редагування, тому рядки зникають, а таблиця атрибутів, здається, не має жодних даних. якщо спробувати знову завантажити форму на qgis, вона виглядає порожньою. У папці файл es. mario.shx став mario_packed.shp. Я виявив, що видаливши слово, запаковане з імені (це назад mario.shx), форма завантажується зараз і, здається, працює. Як довго? не знаю, що я просто збожеволів з цим
користувач27144

Відповіді:


16

Пояснення

OGR (частина GDAL) - це бібліотека, яка використовується QGIS для доступу до форм-файлів. Коли OGR видаляє функції, він не видаляє їх відразу, а просто позначає функції як видалені. Час від часу виконується команда під назвою перепакування , яка створює новий файл із суфіксом _repack та копіює всі функції, які не позначені як видалені у цьому новому файлі. Як тільки він закінчується, оригінальний .dbf замінюється на _repack.dbf. Потім це те ж саме робиться з файлом форм: створити новий (_packed.shp), скопіювати всі не видалені функції та врешті-решт замінити оригінал .shp.

Здається, десь у цьому процесі щось не вдалося (можливо, збій?).

У межах цього процесу змінюються ідентифікатори елементів, тому я гадаю, що SHP (геометрія), який ви маєте, і dbf (таблиця атрибутів) використовують різні ідентифікатори функцій для одних і тих же функцій, що призводить до дивної поведінки, яку ви відчуваєте. Здається, що один з двох файлів все ще містить (частину) видалених функцій, а інший - ні.

Як з цим боротися

Оновлення, листопад 2016: GDAL 2.2 поставляється з вбудованою функціональністю для автоматичного виклику перепакування кожного разу, коли файл записується на диск. Отже, перш ніж робити щось інше: перевірте версію GDAL у QGIS щодо діалогового вікна та оновіть свій GDAL (часто поставляється як частина QGIS) до останньої версії.

Ви, мабуть, не дуже багато можете зробити з цим, крім регулярних резервних копій, щоб не втратити більше даних, ніж ви можете обробити (ви все одно робите це, правда??). І якщо ви знайдете спосіб відтворити це (найкраще зі зразком набору даних), створіть звіт про помилку .

Якщо ви знову відчуєте цю проблему, ви також можете спробувати створити просторовий індекс на файлі форм. У цьому процесі QGIS знову зателефонує на перезавантаження на файл форм і може "відновити" shp / dbf. Але це лише неперевірена здогадка.

Як згадує @rhm та у коментарях, це також може допомогти перейменувати файл {xyz} _packed. {Ext} у {xyz}. {Ext} . Якщо упакований файл уже повністю записаний, і це не вдалося перейменувати, абсолютно точно зробити цей крок вручну. Однак якщо файл _packed не повністю записаний, можливо, вам не вистачає інформації про частини ваших функцій. Тому перш ніж спробувати це, зробіть резервні копії всіх залучених файлів.

Довідкова інформація про те, коли викликається переупаковка

Між QGIS 2.0 і 2.8 викликається повторне перезавантаження при кожному завантаженні шару (вихід QGIS, завантаження різних проектів ...). Якщо функцію було видалено або змінилась геометрія, присутні файли .shp та .dbf із записами, виданими як видалені .

Починаючи з QGIS 2.10, повторний перезапуск викликається кожен раз, коли шар зберігається після операції, яка може додати видалений прапор до записів. Тому файли завжди повинні знаходитись у належному стані, щоб оброблятись іншими програмами.


1

Це сталося зі мною в QGIS. Мені вдалося вирішити проблему, просто видаливши "_packed" з імені файлу, як хтось запропонував у розділі коментарів вище.


1

Можливо, це ще одна проблема зламаного індексу .shx. Тип геометрії слід зберігати у заголовку .shp та .shx. Якщо вони не збігаються, програмне забезпечення призведе до помилки.

Схоже, QGIS не дуже суворий по відношенню до розбитих файлів індексу, і він може відтворити його Save As..., тоді як ARCGIS наполягає на правильному індексному файлі та створює запакований dbf (таблиця атрибутів) для функцій, які можна знайти через правильні частини індексний файл або, можливо, не використовуючи індекс.


1

Повторна поява видалених функцій та / або непарна поведінка форм-файлів, з яких були видалені функції у QGIS, є відомою помилкою, дивіться цей звіт про помилку 11007 та пов’язане з цим питання - видалені багатокутники, здається, повертаються до старих версій . Крім того, що ArcGIS має проблеми з такими формами файлів, коли вони зберігаються в QGIS як файли MapInfo TAB, вони потім спричиняють збій плагіна MapInfo RouteFinder, якщо таблиці не будуть спаковані в MapInfo перед завантаженням RouteFinder. Запуск Universal Translator для перетворення цих пошкоджених файлів форм у MapInfo не вдається.

Як ви з’ясували, проблему можна вирішити, зробивши «зберегти як» у QGIS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.