Я пишу учебник для студентов MSc, который использует QGIS. Одна из задач требует, чтобы данные атрибута были изменены (см. Черновой вариант учебника в формате PDF здесь, если вы заинтересованы).
Вопрос в том, как заставить их редактировать данные атрибута. Я знаю, что этот вопрос задавался ранее , и раньше ответ был простым: просто используйте LibreOffice calc, чтобы изменить его, а затем сохраните, следя за тем, чтобы порядок строк и заголовки столбцов оставались неизменными. Я использовал этот подход, прежде чем с большим эффектом.
К сожалению, решение больше не работает: сохранение файла .dbf, в LibreOffice (5.4.2) или OpenOffice (3.4.1) Calc скремблирует данные с точки зрения QGIS (в таблице атрибутов появляются только случайные целые числа), и вместо этого создает дополнительный файл .dbt.
Итак, чтобы перейти к вопросу: как я скажу классу студентов магистратуры сделать это на следующей неделе? Я рассмотрел следующие варианты:
- Вместо этого используйте R (отлично для меня, но страшно для студентов)
- Отредактируйте файл как .csv, а затем соедините на основе метки времени (хорошо, но кажется слишком сложным и может привести к большему количеству ошибок за 2 часа практического использования)
- Используйте альтернативную программу: я пробовал Gnumeric и Excel, но ни одна из них не дала быстрых результатов.
Чтобы помочь ответить на этот вопрос, я создал воспроизводимый пример . Откройте файл "points.shp" в QGIS, посмотрите таблицу атрибутов и закройте. Отредактируйте пару ячеек в таблице атрибутов "points.dbf" в LibreOffice - сохраните. Снова откройте «points.shp» в QGIS и посмотрите таблицу атрибутов шифрования. Другие шейп-файлы в папке .zip уже были повреждены LibreOffice и OpenOffice, чтобы проиллюстрировать, как выглядит проблема для меня.
Короче, как мне лучше решить эту проблему?
источник
Ответы:
Простейший ответ, который я нашел, основан на совете Райана Гарнетта сделать это в QGIS:
Используйте regexp_replace
Эта возможность была добавлена в полевой калькулятор 1 год назад Юргеном Фишером (как показано в этом отчете об ошибках ). Некоторое время я пытался выяснить, как это сделать, но не смог найти «qgis regex» и другие смутные термины.
Его функциональность, вероятно, лучше всего иллюстрируется необходимостью стандартизировать все значения в столбце «имя». Например, если нам нужно заменить все ячейки, содержащие шаблон «Tesc», на «Tesco», удалив лишнюю информацию, такую как «Tesco, Infirmary Road» (которую часто добавляют участники OSM), можно использовать следующую функцию:
regexp_replace («имя», «Tesc. *», «Tesco»)
Я предполагаю, что это функциональность регулярных выражений Pythonic, поскольку она немного отличается от grep, который я использовал ранее.
Я думаю, что нужно больше документации (подробности на веб-сайте QGIS ограничены несколькими словами) о том, как это работает, поэтому я добавил в закладки следующие страницы для дальнейшего использования:
Это решение имеет пару преимуществ:
Извиняюсь за ответ на мой собственный вопрос, и большое спасибо другим за то, что они направили меня к свету! Я надеюсь, что эта ветка вопросов будет полезна для других, сталкивающихся с подобными проблемами.
источник
Это может быть глупый ответ, так как это может быть целью обучения для аспирантов, но есть ли причина, по которой вы не редактируете атрибуты в QGIS с помощью Калькулятора поля? В предыдущих версиях QGIS (до 1.7) редактирование атрибутов непосредственно в QGIS было невозможно; отсюда необходимость редактирования файлов .DBF в OpenOffice и т. д.
Начиная с 1.7 и 1.8 вы можете редактировать данные атрибутов непосредственно в Калькуляторе полей с возможностью выполнения условных выражений. Также доступны подключаемые модули Python Attribute, которые могут предоставлять дополнительные параметры для редактирования атрибутов. Это может быть решением, или или, вариант для вашего учебника.
Как предыдущий студент магистратуры, а теперь сотрудник университета, я понимаю эту проблему, предыдущее требование выполнять ее вне QGIS, и теперь я ценю способность выполнять все изменения атрибутов в QGIS. Я был бы рад помочь вам с этим больше, если вы хотите.
источник
Вы можете использовать базу LibreOffice для изменения ваших dbf файлов .
Теперь вы можете начать редактировать их. Надеюсь, этого должно быть достаточно для ваших целей.
Вы также можете попробовать DBF Explorer, хотя это только Windows. У него есть поиск и замена, хотя.
источник