Аналитика
http://www.geosystema.net/forum/

Однотипное заполнение адреса земельного участка
http://www.geosystema.net/forum/viewtopic.php?f=1&t=19609
Страница 1 из 1

Автор:  Александр 7 [ 26 дек 2015 12:38 ]
Заголовок сообщения:  Однотипное заполнение адреса земельного участка

Возникла проблема.
При создании карты населенного пункта ( 2000 усадеб), работу вели в разное время несколько исполнителей. В результате адрес участков заполнен по разному.
Например:
с.м.т.Дніпровське, вулиця Центральна,45
смт. Дніпровське, вул.Західна,54
ну и много разных вариаций, хотя структура н.п.,вулиця,номер,квартира, не нарушена
Возможно ли пакетное приведение к однотипному представлению.

Автор:  fendak [ 26 дек 2015 17:29 ]
Заголовок сообщения:  Re: Однотипное заполнение адреса земельного участка

в Бібліотеці корисних скриптів є скрипт, написаний Дмитром Золотарем:

Код:
$SearchText=@Dialog.Ask Введіть текст для пошуку
$STL=@Calc Length("$SearchText")
@if $STL=0 then @Break Введіть не пустий текст
$ReplaceText=@Dialog.Ask Введіть текст для заміни
$Path=@Dialog.Ask Шлях до папки Default=С:\Digitals
@Text[0].FolderListTree *.dmf $Path
$MapCount=@Text[0].Count
@if $MapCount=0 then @Break Файл(и) не знайдені
$FileNumber=0
%LoopEachFile
$FileNumber=$FileNumber+1
$MapFileName=@Text[0].Line[$FileNumber]
@FileOpen $MapFileName
$OC=@Map.Count
$PC=@Map.Parameters.Count
$CC1=0
$I=0
%LoopObject
$I=$I+1
$J=0
$L=@Map.Object[$I].Layer
$LD=@Map.Layers.Get $L
@Dialog.Message $LD
%LoopParameter
$J=$J+1
$S=@Map.Object[$I].Parameter[$J]
$CC2=0
%Repeat
$IP=@Calc pos("$SearchText","$S")
@if $IP=0 then @Goto %Continue1
$S=@Calc delete("$S",$IP,$STL)
$S=@DequoteText $S
$S=@Calc insert("$S","$ReplaceText",$IP)
$S=@DequoteText $S
$CC2=$CC2+1
@if $CC2>100 then @Goto %Continue1
@Goto %Repeat
%Continue1
@if $CC2=0 then @Goto %Continue2
$CC1=$CC1+1
@Map.Object[$I].Parameter[$J] $S
%Continue2
@if $J<$PC then @Goto %LoopParameter
@if $I<$OC then @Goto %LoopObject
@if $CC1>0 then @Map.SaveToFile $MapFileName
@if $CC1>0 then @Text[1].Add $MapFileName змінений
@if $CC1=0 then @Text[1].Add $MapFileName не змінений
@CloseMap
@if $FileNumber<$MapCount then @Goto %LoopEachFile
@Text[1].Save $Path\Changes.log
@Dialog.Message див. лог-файл $Path\Changes.log


Він здійснює заміну тексту в усіх dmf файлах у вказаній папці.
Вам потрібно замінити с.м.т. на смт. і так усі інші написи, які не підходять.
Якщо файли не dmf, а IN4 чи XML тоді треба змінити рядок
@Text[0].FolderListTree *.dmf $Path
поставививши замість dmf те, що треба

Можна було б і у повністю автоматичному режимі, але тоді треба знати весь перелік ваших несходжень.
;

Автор:  remixxiwe [ 14 фев 2016 18:36 ]
Заголовок сообщения:  Re: Однотипное заполнение адреса земельного участка

А можна описати біль детально роботу скрипту! Бо в мене щось не вийшло Масове перейменування(((

Автор:  fendak [ 15 фев 2016 20:22 ]
Заголовок сообщения:  Re: Однотипное заполнение адреса земельного участка

якщо у вась всі ділянки на одній карті, тоді просто користуйтеся командою ЗАМІНИТИ. Наведений вище скрипт виконує ту ж саму операцію, але по окремих обмінниках.

Можна, звичайно зробити скрипт, який би сам зводив усі види написання типу проїзду до одного виду. Але для чього треба створити довідник неправильних і правильного типу написання.

Наприклад,
шукати:
с.м.т.
селище міського типу
селище

замінювати на:
смт.

І так по кожному типу проїзду.
Але з цим треба трохи посидіти, згадати (чи подивитися по вашій карті) всі можливі неправильні і правильні варіанти і створити довідник.

Страница 1 из 1 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/