GIS-LAB

Географические информационные системы и дистанционное зондирование

Основы макроязыка EASI (PCI Geomatica) Часть 4. Примеры автоматизации процессов

Обсудить в форуме Комментариев — 1Редактировать в вики

Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/easi4.html


Четвертая часть серии статей о языке EASI, несколько примеров автоматизации работы с данными.

Содержание

[править] Общие подходы к автоматизации процессов в EASI

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

  1. С помощью функций самого языка EASI
  2. С помощью специальных программ, позволяющих генерировать скрипты на языке EASI и запускать их. В частности, такие программы могут быть легко написаны на языке PERL

В этой статье мы рассмотрим простейшие примеры автоматизации данных с помощью EASI и PERL.

[править] Выполнение операций над набором файлов – скрипт EASI

Пример простого скрипта для выполнения заданных однотипных операций над всеми файлами .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                         (...и удаляем его)

[править] Выполнение операций над набором файлов – запуск скрипта EASI из PERL

Для облегчения автоматизации обработки большого набора файлов их удобно хранить в разных директориях. Наример, все файлы называются однотипно (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

В ряде случаев бывает удобно созадать скрипт 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-15 01:29

Дата создания: 15.08.2007
Автор(ы): Пётр Потапов


(Геокруг)

Если Вы обнаружили на сайте ошибку, выберите фрагмент текста и нажмите Ctrl+Enter