Обсудить в форуме Комментариев 1Редактировать в вики
Четвертая часть серии статей о языке EASI, несколько примеров автоматизации работы с данными.
Содержание |
В большинстве случаев автоматизация требуется для выполнения однотипных операций над растровыми данными. В одних случаях это могут быть однотипные растровые данные, которые необходимо одновоременно обработать. В других случаях необходимо создать скрипт для запуска набора операций над файлом по коменде пользователя. Автоматизация потоков операций над растровыми данными с помощью языка EASI может быть выполнена двумя путями:
В этой статье мы рассмотрим простейшие примеры автоматизации данных с помощью EASI и PERL.
Пример простого скрипта для выполнения заданных однотипных операций над всеми файлами .pix в рабочей директории:
sys "dir *.pix /b > dirlist.txt (создаем список фалов) local int tfid (задаем набор переменных) local string ReadLine tfid = TEXTOpen("dirlist.txt", "r") (открываем список файлов) ReadLine = TEXTRead(tfid) (читаем первую строку файла) While ReadLine <> "<EOF>" (начало цикла «до конца файла») fili=ReadLine (задаем прочитанную строку как параметр команды EASI – имя входного файла) filo=ReadLine+”_out” (создаем имя выходного файла с суффиксом) (Здесь помещаем список команд) ReadLine = TEXTRead(tfid) (читаем новую строку файла) EndWhile (конец цикла) Call TEXTClose(tfid) (закрываем список файлов...) sys "del dirlist.txt (...и удаляем его)
Для облегчения автоматизации обработки большого набора файлов их удобно хранить в разных директориях. Наример, все файлы называются однотипно (data.pix) но хранятся в разных директориях (s1, s2, s3 и т.д.). В таком случае для обработки каждого файла вы сможете использрвать один срипт EASI, который должен быть скопирован и запущен в каждой из директорий. Для этого мы используем простой скрипт на PERL.
#!/usr/local/bin/perl # начало скрипта system("dir s* /A:D /O:N /B >dirlist.txt"); # создаем список директорий open (DAT, "dirlist.txt"); # открываем список директорий while (<DAT>) # начало цикла «до конца файла» { $line = $_; # читаем строку файла $line =~ s/\n//; # удаляем символ конца строки chdir "$line"; # переходим в заданную директорию system("copy D:\\xscripts\\myscript.eas script.eas /y"); # копируем скрипт EASI в директорию system("easi r script"); # выполняем скрипт EASI system("del script.eas"); # удаляем скрипт chdir ".."; # возврящяемся в корневую директорию } close (DAT); # закрываем и удаляем список директорий system("del dirlist.txt");
В ряде случаев бывает удобно созадать скрипт EASI из готовых команд с помощью программы на PERL. Приведем пример для импорта набора файлов в формате *.img с записью выходных файлов PCIDSK в разные директории:
#!/usr/local/bin/perl # начало скрипта system("dir *.img /B >dirlist.txt"); # создаем список файлов open (DAT, "dirlist.txt"); # открываем список файлов open (OUT, ">script.eas"); # создаем скрипт EASI while (<DAT>) # начало цикла «до конца файла» { $line = $_; # читаем строку файла $line =~ s/\n//; # удаляем символ конца строки $line1 =~ s/.img//; # удаляем расширение print OUT" # запись команд в скрипт EASI sys “mkdir $line1” # создание директории fili=\"$line # импорт файла filo=\"$line1\\img.pix r fimport "; } close (OUT); system(“easi r script”); # выполняем скрипт EASI... system("del script1.eas"); # ...и удаляем его
Обсудить в форуме Комментариев 1Редактировать в вики
Последнее обновление: 2014-05-14 23:29
Дата создания: 15.08.2007
Автор(ы): Пётр Потапов
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).