Необходимо быстро добавить несколько слоев из нескольких папок в проект QGIS

12

Я загрузил несколько Zip-файлов изображений (содержимое каждого из них - jp2, jpg, jpw, xml, htm и .dbf, .prj, .sbn, .sbx, .shp, .shx) и хотел бы быстро добавить эти изображения в мой рабочий проект в QGIS 2.6.1. Я пытаюсь избежать перехода и добавления каждого файла отдельно. Поскольку каждый файл находится в отдельной папке, я не смог найти способ добавить несколько файлов одновременно.

reevesii
источник
Итак, у вас есть zip-файлы в ваших папках или вы уже распаковали содержимое zip-файлов? Я разрабатываю ответ для последнего случая. Боюсь, что первый случай потребует немного (Python) сценариев.
Герман Каррильо
Я уже извлек содержание.
reevesii

Ответы:

23

Вам нужен плагин QGIS Load Them All . Помимо загрузки файлов из нескольких каталогов одновременно, вы можете:

  • Отразите структуру каталогов в оглавлении QGIS (с помощью вложенных групп слоев).
  • Примените буквенно-цифровые фильтры, чтобы загружать слои, соответствующие вашему фильтру (подумайте о регулярных выражениях).
  • Загружать только определенную геометрию или тип растра (например, только многоугольные векторы или многозонные растры).
  • Загружать только определенные расширения файлов (например, только файлы .shp).
  • Загружайте только те слои, которые лежат внутри или пересекают заданную ограничивающую рамку.

и более. Загляните на https://github.com/gacarrillor/loadthemall для получения более подробной информации.

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

Герман Каррильо
источник
@ Germán Carrillo Кажется, что это идеальный плагин для моих нужд, но когда я пытаюсь загрузить файлы, я получаю сообщение об ошибке: «Нет файлов KML для загрузки из базового каталога с этим фильтром. Измените эти параметры и попробуйте снова». Я использую QGIS 2.14.2, все фильтры отключены, и выбранная карта содержит две карты с одним файлом kml каждая (просто для проверки, у меня есть большой набор данных для импорта).
Ханнес Ледеген
@HannesLedegen Пробовали ли вы использовать фильтр «Интересы» вместо «Содержит»? Если это не сработает, пожалуйста, откройте новый выпуск на странице проекта GitHub, подробно описав все.
Герман Каррильо
2

В качестве альтернативы использованию плагина вы можете задать команде Add Layer список файлов, разделенных точкой с запятой. Вы можете создать такой список следующим образом:

cd /d <Path_to_the_directory_where_your_files_are>
dir *.shp /s /b >All.txt

Это дает вам файл с именем All.txt, который содержит пути ко всем файлам с определенным расширением (вы можете использовать разные маски в зависимости от ваших файлов), где каждый файл находится на новой строке.

D:\Data\01\data01_1.shp
D:\Data\01\data01_2.shp
D:\Data\02\data02_1.shp
D:\Data\02\data02_2.shp

Затем просто замените все новые строки с ;помощью текстового редактора (например, Notepad ++ ) и вставьте результат в Add Vector Layer...диалоговое окно.

Для Notepad ++ вам нужно изменить режим замены на Расширенный и заменить \r\nна ;. Вы получите файл, который выглядит следующим образом:

D:\Data\01\data01_1.shp;D:\Data\01\data01_2.shp;D:\Data\02\data02_1.shp;D:\Data\02\data02_2.shp
Alex
источник
0

В Linux вы можете извлечь список .shpфайлов и передать его непосредственно в диалог «Импорт вектора»:

#on the command line
ls /home/yourpath/*/*shp|tr "\n" '@'|sed 's/@/" "/g'|sed 's/^/"/g'

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

Я нашел это полезным в QGIS Docker , потому что по какой-то причине плагин «Load Them All» не отображал свое диалоговое окно.

RafDouglas
источник