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

Виділення ділянок по списку кадастрових номерів
[ Викачати з сервера (1.1 Kb) ] 22.08.2016, 23:03

Задача: Є список кадастрових номерів в стовпчик. Потрібно помітити на карті ділянки за кадастровими номерами в списку. При чому, ділянки на карті, як у форматі IN4, так і в форматі XML.

Вирішення:

@Dialog.Message Виберіть файл із списком кадастрових номерів
$ListName=@Dialog.OpenFile *.txt 
@If $ListName= then @Break
@Text.Load $ListName
@Map.DeselectAll
@Map.SelectLayer id20000
@Map.SelectLayer id70005
$SL=@Map.SelCount
$N2=0
%Pochatok2
$N2=@Map.NextSelected $N2
@Text[2].Add $N2
@if $N2<>0 then @Goto %Pochatok2
$MC=@Text[2].Count
$MC=$MC-1
$FC=@Text.Count
@Progress.Start $FC Пошук та виділення файлів
@Map.DeselectAll
$I=0
%Loop
$I=$I+1
$FN=@Text.Line[$I]
@Progress.StepBy
$rogress=@Progress.Canceled
@if $rogress=1 then @Goto %End
$N=0
%Pochatok
$N=$N+1
$LN=@Text[2].Line[$N]
$LID=@Map.Object[$LN].LayerID
@If $LID=20000 then $Cil=@Map.Object[$LN].CalculateFormula Parent[23]:Parent[24]:Parent[25]:CUT(4,4,P[34])
@If $LID=70005 then $Cil=@Map.Object[$LN].CalculateFormula Parent[ID7000301](ID70003):Parent[ID7000401](ID70004):P[ID7000513]
$Cil=@Calc Trim("$Cil")
$Cil=@DequoteText $Cil
@If "$Cil"<>"$FN" then @Goto %Next
@Map.SelectObject $LN
%Next
@if $N<$MC then @Goto %Pochatok
@if $I<$FC then @Goto %Loop
%End
@Progress.Stop

Кадастрові номери в списку повинні бути у форматі:
6858589500:03:001:0038
6858589500:03:001:0039
тобто, з двокрапками.

Категорія: Готові скрипти | Додав: Микола
Переглядів: 1645 | Завантажень: 111 | Коментарі: 7 | Рейтинг: 0.0/0
Всього коментарів: 7
avatar
6 Мурчик • 16:50, 21.09.2016
Підкажіть чи можна за  допомогою вашого скрипту виділяти ділянки, якщо кад. номер записаний в один параметр повністю, тобто значення кад. номеру отримане через Атрибути участка с ПКК.
avatar
0
7 Микола • 17:39, 21.09.2016
звичайно, що можна.
Для цього, в залежності від того XML чи IN4, поміняйте в рядках:
Код
@If $LID=20000 then $Cil=@Map.Object[$LN].CalculateFormula Parent[23]:Parent[24]:Parent[25]:CUT(4,4,P[34])
@If $LID=70005 then $Cil=@Map.Object[$LN].CalculateFormula Parent[ID7000301](ID70003):Parent[ID7000401](ID70004):P[ID7000513]


"CalculateFormula Parent[ID7000301](ID70003):Parent[ID7000401](ID70004):P[ID7000513]" чи "CalculateFormula Parent[23]:Parent[24]:Parent[25]:CUT(4,4,P[34])" на "CalculateFormula P[IDID вашого параметра]"

І зверніть увагу, щоб вигляд кадастрового номера у вашому параметрі відповідав виглядові кадастрового номера у вашому списку (з двокрапками чи без)
avatar
5 Kochyr • 09:43, 26.08.2016
Дякую, Микола Ярославович. Запрацювало після зміни рядка коду. happy
avatar
3 Kochyr • 09:47, 25.08.2016
Версія програми 04.08.2016. XML не шукає.
avatar
0
4 Микола • 18:47, 25.08.2016
Перевірте, чи читається кадастровий номер виділеної ділянки:

Код
$LN=@Map.SelectedObject
$Cil=@Map.Object[$LN].CalculateFormula Parent[ID7000301](ID70003):Parent[ID7000401](ID70004):P[ID7000513]
@Dialog.Message $Cil


Якщо ні, значить у вас на карті не стандартні id шарів чи параметрів. Звірте все.

Якщо карта була створена вже давніше і збережена у форматі dmf, то там КОАТУУ збереглося по старому. В такому випадку замініть відповідний рядок у скрипті цим:
Код
$Cil=@Map.Object[$LN].CalculateFormula Parent[ID7000300](ID70003):Parent[ID7000301](ID70003):Parent[ID7000401](ID70004):P[ID7000513]
avatar
1 Kochyr • 14:09, 24.08.2016
Не працює для XML.
avatar
0
2 Микола • 16:35, 24.08.2016
також програма повинна бути оновленою (вже без тега id7000300 - КОАТУУ)
avatar