Головна » Файли » Готові скрипти

Контроль площі ділянки та площі угідь
26.04.2017, 17:17

Скрипт звіряє площу ділянки з сумою площ усіх угідь та виводить повідомлення, сходяться вони чи ні.

@Map.DeselectAll
@Map.SelectLayer id70005
$N=@Map.SelCount
@if $N<>1 then @Break На карті не знайдено ділянку XML або ділянок більше як одна
$N=@Map.SelectedObject
$AreaD=@Map.Object[$N].Parameter[0]
$AreaD=@Calc replace("$AreaD",",",".")
$AreaD=@DequoteText $AreaD
$AreaD=$AreaD+0
@Map.DeselectAll
@Map.SelectLayer id70009
$SumArea=0
$N=0
%Start
$N=@Map.NextSelected $N
@if $N=0 then @Goto %Next
$Area=@Map.Object[$N].Parameter[0]
$Area=@Calc replace("$Area",",",".")
$Area=@DequoteText $Area
$SumArea=@Calc $SumArea+$Area
@Goto %Start
%Next
@if $SumArea=$AreaD then @Break Площа ділянки ($AreaD) співпадає з сумою площ угідь ($SumArea)
@if $SumArea<>$AreaD then @Break Площа ділянки ($AreaD) не сходиться з сумою площ угідь ($SumArea)

Категорія: Готові скрипти | Додав: Микола
Переглядів: 2985 | Завантажень: 0 | Коментарі: 8 | Рейтинг: 5.0/2
Всього коментарів: 8
avatar
6 ryvol • 21:17, 29.05.2017
Робочий варіант записаний у мене, для контролю ін4-файлів  із функцією підрахунку площ всіх угідь із ID від 30000 до 30810:@Map.DeselectAll@Map.SelectLayer id20000$N=@Map.SelCount@if $N<>1 then @Break На карті не знайдено ділянку iN4 або ділянок більше як одна$N=@Map.SelectedObject$AreaD=@Map.Object[$N].Parameter[0]$AreaD=@Calc replace("$AreaD",",",".")$AreaD=@DequoteText $AreaD$AreaD=$AreaD+0@Map.DeselectAll@Map.SelectLayer id30000$SumArea=0$N=0%Start$N=@Map.NextSelected $N@if $N=0 then @Goto %Next$Area=@Map.Object[$N].Parameter[0]$Area=@Calc replace("$Area",",",".")$Area=@DequoteText $Area$SumArea=@Calc $SumArea+$Area@Goto %Start%Next$MC=@Map.Count%Pochatok$N=$N+1$LID=@Map.Object[$N].LayerID@If ($LID<=30000) then @Goto %Next2@If ($LID>=30810) then @Goto %Next2@Map.SelectObject $N$Area=@Map.Object[$N].Parameter[0]$Area=@Calc replace("$Area",",",".")$Area=@DequoteText $Area$SumArea=@Calc $SumArea+$Area%Next2@if $N<$MC then @Goto %Pochatok@if $SumArea=$AreaD then @Break Площа ділянки ($AreaD) співпадає з сумою площ угідь ($SumArea)@if $SumArea<>$AreaD then @Break Площа ділянки ($AreaD) не сходиться з сумою площ угідь ($SumArea)
avatar
5 ryvol • 21:14, 29.05.2017
Мав на увазі скрипт для ін4 із функцією підрахунку площ всіх угідь із ID від 30000 до 30810...
...
$LID=@Map.Object[$N].LayerID
@If ($LID<=30000) then @Goto %Next2
@If ($LID>=30810) then @Goto %Next2
@Map.SelectObject $N
...
avatar
3 ryvol • 12:53, 29.05.2017
Дякую, замінив, користуюсь, допомагає.
Також користуюсь скриптом для контролю ін4-файлів, який Ви допомогли вдосконалити.
Пропозиція - надати в широкий доступ скрипт для контролю файлів ін4.
Можливо і для ін4-файлів комусь знадобиться.
avatar
0
4 Микола • 20:21, 29.05.2017
та він майже ідентичний, тільки id шарів інші
avatar
1 ryvol • 15:47, 23.05.2017
Дякую за скрипт.
Дуже корисний.
Не один раз доводилось переробляти чужі файли, коли реєстратор завертав з помилкою суми площ...

А Можна його доробити щоб не було такого як у мене, що: 
Площа ділянки (0.2500) не сходиться з сумою площ угідь (0.25)
avatar
0
2 Микола • 20:12, 23.05.2017
доробив, замініть код
avatar
7 riveve60 • 20:58, 22.10.2017
Доброго вечора. Скажіть, куди закинути цей скрипт, щоб він працював! Дякую
avatar
0
8 Микола • 21:59, 22.10.2017
Доброго вечора. Читайте тут, як створити панель інструментів та кнопку, куди потім можна вставити цей код - http://digitals.at.ua/index/sistemni_funkciji/0-5
avatar