добрый день,
подскажите пожалуйста, каким образом сделать append (в aml-скрипте) для всех покрытий в директории, если ни их количество ни имена заранее не известны?
estensive search в support-esri ничего не дал (может плохо искала конечно)
спасибо!
append в aml
-
- Завсегдатай
- Сообщения: 386
- Зарегистрирован: 07 фев 2004, 14:31
- Репутация: 7
- Откуда: Лозанна
- Контактная информация:
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: append в aml
Пробовал на точках, вроде все работает. Наверное с переменными не очень изящно, но это уже дальше, если хочется надо улучшать.
Код: Выделить всё
/* get a list of all file names to use
&do
&s inf = covs.lst
&if [filelist * covs.lst -cover] < 0 &then
&ret Error creating coverage list
&end
/* Open list file if able
&s infile := [open %inf% status -read]
&if %status% <> 0 &then
&return &warning Error opening file.
&setvar current := [read %infile% readstatus]
&if %readstatus% <> 0 &then
&return &warning Could not read file.
/* Create fake coverage to start with, should be taken from somewhere else, so it is not in the covs.lst
&s i := 0
&s prevoutput := new0
append %prevoutput%
..\3\theme0
~
Y
Y
build %prevoutput% point
/* Select each coverage from list and append it
&do &while %readstatus% = 0
&s i := %i% + 1
&s output := new%i%
&do
&type Appending %prevoutput%
append %output%
%prevoutput%
%current%
~
Y
Y
build %output% point
/* Read next line.
&setvar current := [read %infile% readstatus]
kill %prevoutput%
&s prevoutput := %output%
&end
&end
пристегивайтесь, турбулентность прямо по курсу
-
- Завсегдатай
- Сообщения: 386
- Зарегистрирован: 07 фев 2004, 14:31
- Репутация: 7
- Откуда: Лозанна
- Контактная информация:
Re: append в aml
супер! огромное спасибо!!
теперь правда буду думать как убрать использование покрытия-fake, потому что он конечно лишним оказывается в результирующем покрытии
еще раз огромное спасибо!
теперь правда буду думать как убрать использование покрытия-fake, потому что он конечно лишним оказывается в результирующем покрытии
еще раз огромное спасибо!
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: append в aml
попробуй сначала считать из списка первое покрытие и его использовать, а не левое
я правда не помню, запоминается ли положение курсора при чтение (т.е. при след. чтение начнет со 2 строки), но мне кажется, что должно. Мне лень было проверять.
я правда не помню, запоминается ли положение курсора при чтение (т.е. при след. чтение начнет со 2 строки), но мне кажется, что должно. Мне лень было проверять.
пристегивайтесь, турбулентность прямо по курсу
-
- Завсегдатай
- Сообщения: 386
- Зарегистрирован: 07 фев 2004, 14:31
- Репутация: 7
- Откуда: Лозанна
- Контактная информация:
Re: append в aml
вот еще вариант - чтобы не надо было создавать покрытие_fake
Код: Выделить всё
/* get a list of all file names to use
&do
&s inf = covs.lst
&if [filelist * covs.lst -cover] < 0 &then
&ret Error creating coverage list
&end
/* Open list file if able
&s infile := [open %inf% status -read]
&if %status% <> 0 &then
&return &warning Error opening file.
&setvar current := [read %infile% readstatus]
&if %readstatus% <> 0 &then
&return &warning Could not read file.
&s i := 0
&setvar prevoutput := %current%
copy %prevoutput% %prevoutput%_back
/* Select each coverage from list and append it
&do &while %readstatus% = 0
&s i := %i% + 1
&s output := result%i%
&do
&setvar current := [read %infile% readstatus]
&type Appending %current%
append %output%
%prevoutput%
%current%
~
Y
Y
build %output% point
kill %prevoutput%
&s prevoutput := %output%
&end
&end
&if [close %infile%] <> 0 &then
&return &warning Unable to close %infile%.
&s infile2 := [open %inf% status -read]
&if %status% <> 0 &then
&return &warning Error opening file.
&setvar current := [read %infile2% readstatus]
&if %readstatus% <> 0 &then
&return &warning Could not read file.
copy %current%_back %current%
kill %current%_back
&if [close %infile2%] <> 0 &then
&return &warning Unable to close %infile2%.
-
- Завсегдатай
- Сообщения: 386
- Зарегистрирован: 07 фев 2004, 14:31
- Репутация: 7
- Откуда: Лозанна
- Контактная информация:
Re: append в aml
все-таки еще переписала - теперь все вообще шоколадно работает
Код: Выделить всё
&s count := [filelist * outfile -cover -point]
&if %count% <= 0 &then
&return Error generating output file.
&s unit := [open outfile ok -read]
&s prevoutput := [read %unit% ok]
copy %prevoutput% %prevoutput%_back
&do i := 1 &to %count%
&s output := result%i%
&do
&setvar current := [read %unit% ok]
&type Appending %current%
append %output% point
%prevoutput%
%current%
~
Y
Y
kill %prevoutput%
&s prevoutput := %output%
&end
&end
/* close and delete output file.
&s ok := [close %unit%]
&s unit1 := [open outfile ok -read]
&s current := [read %unit1% ok]
copy %current%_back %current%
kill %current%_back
rename %prevoutput% %current%result
&s ok := [close %unit1%]
&s ok := [delete outfile -file]
&return
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя