Якщо Сергій Васильович дозволяє, з посиланням на
написаний ним скрипт:
Трансформування растрових зображень з однієї системи координат в іншу з можливістю одразу вставити їх в активну карту за посиланнямКод:
$V=@Version
@If $V>=42881 then @Goto %Start
@Dialog.Message Цей скрипт потребує оновлення програми
@ExecuteMenu HelpAbout
@Break
%Start
$ListDatum=@DatumList
;Тека растрових зображень
$SourceDir=@Dialog.SelectFolder Оберіть теку з растровими зображеннями, які необхідно трансформувати
@If $SourceDir= then @Break Не вказано теку з растровими зображеннями, які необхідно трансформувати
;В який датум трансформувати растри
$DestDatum=
$CountMap=@MapCount
@If $CountMap=0 then $InsertInMap=0
@If $CountMap=0 then @Goto %StartWork
$DestDatum=@Map.Datum
$InsertInMap=@Dialog.Confirm Трансформувати растрові зображення в систему координат $DestDatum і вставити їх за посиланням в активну карту?
@If $InsertInMap=0 then $DestDatum=
%StartWork
@If $DestDatum= then $DestDatum=@Dialog.ListSelect Виберіть датум, в який слід трансформувати растрові зображення|$ListDatum
@If $DestDatum= then @Break Не вказано датум, в який слід трансформувати растрові зображення
;Датум растрових зображень на замовчування
$GetImageDatum=@Dialog.ListSelect В якій системі координат вхідні растрові зображення?|$ListDatum
@If $GetImageDatum= then @Break Не вказано датум растрових зображень на замовчування
@SetDefaultImageDatum $GetImageDatum
;Отримання списку файлів растрових зображень
$L=@Calc length("$SourceDir")
$DestSubDir=@Calc Replace("$DestDatum","/","-",1)
$DestSubDir=@DequoteText $DestSubDir
$DestDir=$SourceDir ($DestSubDir)
@Text[2].Clear
@Text[1].FolderListTree *.tif $SourceDir
$FC=@Text[1].Count
@if $FC=0 then @Break Не знайдено tif-файлів у теці $SourceDir
@Text[2].Add Тека з вхідними зображеннями: $SourceDir
@Text[2].Add Тека із трансформованими зображеннями: $DestDir
@Text[2].Add Трансформовані зображення:
$I=0
%LoopFile
$I=$I+1
@FileNew
@Map.Datum $DestDatum
$FN=@Text[1].Line[$I]
$GSD=@GetImageGSD $FN
$BPP=3
$BPP2=@GetImageBitsPerPixel $FN
@if $BPP2=8 then $BPP=1
@Map.InsertTriangulation $FN
$RP=@Calc copy("$FN",$L+2,1000)
$RP=@DequoteText $RP
$PC=@StringPartCount \ $RP
$SF=
@if $PC<2 then @Goto %Continue1
$J=1
%LoopPart
$SF2=@StringPart $J\$RP
@if $SF2<> then $SF=$SF\$SF2
$J=$J+1
@if $J<$PC then @Goto %LoopPart
%Continue1
@OrthoRectification $GSD $BPP $DestDir$SF
@CloseMap
@Text[2].Add Трансформовано $FN
@Goto %Continue2
%IgnoreRaster
@Text[2].Add Проблема з обробкою $FN
%Continue2
@CloseMap
@if $I<$FC then @Goto %LoopFile
;Вставка растрів за посиланням в активну карту
@If $InsertInMap=0 then @Goto %EndRecalculateImage
@Map.InsertRasters $DestDir\*.tif
@Window.ShowSelected
@Map.Selected.SendToBack
%EndRecalculateImage
@Text[2].Save $SourceDir\OrthoRect.log
@Run notepad.exe $SourceDir\OrthoRect.log
@Run $DestDir