Аналитика http://www.geosystema.net/forum/ |
|
Библиотека полезных скриптов http://www.geosystema.net/forum/viewtopic.php?f=1&t=2539 |
Страница 7 из 15 |
Автор: | Виталий [ 23 сен 2015 22:30 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
fendak писал(а): замість @if $ParentObj=$P1 then @Dialog.Message Точка $NomerT знаходиться на північному заході ділянки ... напишіть @if $ParentObj=$P1 then $S=північному заході ...(аналогічно для усіх інших сторін світу) @Text.Add $S і в кінці скрипта добавте $S=@Text.Text ;створюємо параметр ID7000581 $S=@Map.Parameters.Get ID7000581 @if $S= then @Map.Parameters.Add 7000580 5 Список сторін світу ;добавляєм параметр ID7000581 в список доступних шару XML : Земельна ділянка $S=@Map.Layers.GetValidParameters ID70005 @Map.Layers.SetValidParameters ID70005 $S ID7000581 @Map.SelectLayer ID70005 $obj=@Map.SelectedObject @Map.Object[$obj].Parameter[ID7000580] $Res В результаті в шарі ХМЛ Земельна ділянка добавиться новий параметр (ID7000581), куди буде записано список сторін світу для усіх точок ділянки. Номер строки в списку відповідатиме номеру точки. Параметр создает но список пуст пишет $Res Подскажите гда ошибка $ParentObj=@Map.ParentObject $N @if $ParentObj=$P1 then $S знаходиться на північному заході ділянки @if $ParentObj=$P1 then $S знаходиться на півночі ділянки @if $ParentObj=$P1 then $S знаходиться на північному сході ділянки @if $ParentObj=$P1 then $S знаходиться на сході ділянки @if $ParentObj=$P1 then $S знаходиться на південному сході ділянки @if $ParentObj=$P1 then $S знаходиться на півдні ділянки @if $ParentObj=$P1 then $S знаходиться на південному заході ділянки @if $ParentObj=$P1 then $S знаходиться на заході ділянки @Map.DeselectAll %Next @if $N<$MC then @Goto %Pochatok $S=@Text.Text @Text.Add $S ;створюємо параметр ID2000081 $S=@Map.Parameters.Get ID2000081 @if $S= then @Map.Parameters.Add 2000080 5 Список сторін світу ;добавляєм параметр ID2000081 в список доступних шару IN4 : Земельна ділянка $S=@Map.Layers.GetValidParameters ID20000 @Map.Layers.SetValidParameters ID20000 $S ID2000081 @Map.SelectLayer ID20000 $obj=@Map.SelectedObject @Map.Object[$obj].Parameter[ID2000080] $Res |
Автор: | Dmitry_Zolotar [ 23 сен 2015 22:52 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
Этот код @if $ParentObj=$P1 then $S знаходиться на північному заході ділянки @if $ParentObj=$P1 then $S знаходиться на півночі ділянки @if $ParentObj=$P1 then $S знаходиться на північному сході ділянки @if $ParentObj=$P1 then $S знаходиться на сході ділянки @if $ParentObj=$P1 then $S знаходиться на південному сході ділянки @if $ParentObj=$P1 then $S знаходиться на півдні ділянки @if $ParentObj=$P1 then $S знаходиться на південному заході ділянки @if $ParentObj=$P1 then $S знаходиться на заході ділянки равносилен последней строке @if $ParentObj=$P1 then $S знаходиться на заході ділянки Если в $Res ничего не вносилось, то и параметр будет пустой @Map.Object[$obj].Parameter[ID2000080] $Res |
Автор: | Виталий [ 24 сен 2015 07:17 ] | ||
Заголовок сообщения: | Re: Библиотека полезных скриптов | ||
Dmitry_Zolotar писал(а): Этот код @if $ParentObj=$P1 then $S знаходиться на північному заході ділянки @if $ParentObj=$P1 then $S знаходиться на півночі ділянки @if $ParentObj=$P1 then $S знаходиться на північному сході ділянки @if $ParentObj=$P1 then $S знаходиться на сході ділянки @if $ParentObj=$P1 then $S знаходиться на південному сході ділянки @if $ParentObj=$P1 then $S знаходиться на півдні ділянки @if $ParentObj=$P1 then $S знаходиться на південному заході ділянки @if $ParentObj=$P1 then $S знаходиться на заході ділянки равносилен последней строке @if $ParentObj=$P1 then $S знаходиться на заході ділянки Если в $Res ничего не вносилось, то и параметр будет пустой @Map.Object[$obj].Parameter[ID2000080] $Res А как внести в $Res. помогите пожалуйста разобраться. Очень много кроков на участке. (Спасибо)
|
Автор: | fendak [ 24 сен 2015 18:59 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
$ParentObj=@Map.ParentObject $N @if $ParentObj=$P1 then $S=межовий знак $NomerT знаходиться на північному заході ділянки @if $ParentObj=$P2 then $S=межовий знак $NomerT знаходиться на північному заході ділянки @if $ParentObj=$P3 then $S=межовий знак $NomerT знаходиться на північному заході ділянки @if $ParentObj=$P4 then $S=межовий знак $NomerT знаходиться на північному заході ділянки @if $ParentObj=$P5 then $S=межовий знак $NomerT знаходиться на північному заході ділянки @if $ParentObj=$P6 then $S=межовий знак $NomerT знаходиться на північному заході ділянки @if $ParentObj=$P7 then $S=межовий знак $NomerT знаходиться на північному заході ділянки @if $ParentObj=$P8 then $S=межовий знак $NomerT знаходиться на північному заході ділянки @Map.DeselectAll @Text.Add $S %Next @if $N<$MC then @Goto %Pochatok @Text.Delete 1 $Res=@Text.Text ;створюємо параметр ID2000081 $P=@Map.Parameters.Get ID2000081 @if $P= then @Map.Parameters.Add 2000081 5 Список сторін світу ;добавляєм параметр ID2000081 в список доступних шару IN4 Ділянка $P=@Map.Layers.GetValidParameters ID20000 @Map.Layers.SetValidParameters ID20000 $P ID2000081 @Map.SelectLayer ID20000 $obj=@Map.SelectedObject @Map.Object[$obj].Parameter[ID2000081] $Res |
Автор: | 13vp [ 04 ноя 2015 11:17 ] | ||
Заголовок сообщения: | Re: Библиотека полезных скриптов | ||
Створив скрипт який виносить підписи обєктів, що лежать на ламаній і ровертає їх по ходу ламаної. Можливо хтось підправить алгоритм. ==================================================== ;порядковий номер параметру, підпис з якого буде винесено $parampidpys=1 ; ;---------------------точкові обєкти у список 1 $S=@Map.SelCount @If $S<=0 @Break виділійть пікети що лежать на лінії $list=@Map.Selected.List @Text[1].Text $list $n=@Text[1].Count @Text[1].Save d:\\object.txt @Map.DeselectAll @Dialog.WaitBox Выделите полилинию ; ;-----------------------вибір полілінії $line=@Map.SelectedObject ;@if $line<>1 then @Break почніть спочатку $m=@Map.Object[$line].Count @if $m<2 then @Break почніть спочатку і виділіть лінію $line $m ;-----------------------точки лінії у список 2 $j=1 %line $XL=@Map.Object[$line].Point[$j].X $XL=%Library.ReplaceComma $XL $XL=@RoundTo $XL 3 $YL=@Map.Object[$line].Point[$j].Y $YL=%Library.ReplaceComma $YL $YL=@RoundTo $YL 3 $ZL=@Map.Object[$line].Point[$j].Z $ZL=%Library.ReplaceComma $ZL $ZL=@RoundTo $ZL 3 @Text[2].Add $XL $YL $ZL $j=$j+1 @if $j>$m then @Goto %dali else @Goto %line %dali @Progress.Start $N ОБРОБЛЕНО ;@Text[2].Save d:\\text2.line.txt ;-----------------------перебір пікетів $i=1 %Start @map.DeselectAll $O=@Text[1].Line[$i] ;@Map.Object[$O].Select $XO=@Map.Object[$O].Point[1].X $XO=%Library.ReplaceComma $XO $XO=@RoundTo $XO 3 $YO=@Map.Object[$O].Point[1].Y $YO=%Library.ReplaceComma $YO $YO=@RoundTo $YO 3 $ZO=@Map.Object[$O].Point[1].Z $ZO=%Library.ReplaceComma $ZO $ZO=@RoundTo $ZO 3 ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ $j1=1 %poshuk $j2=$j1+1 @if $j2>$m then $j2=$j2-2 $p1=@Text[2].Line[$j1] $p2=@Text[2].Line[$j2] $x1=@StringPart 1 $p1 $y1=@StringPart 2 $p1 $x2=@StringPart 1 $p2 $y2=@StringPart 2 $p2 ;@Dialog.Message $xo $yo||$x1 $y1 @if ($x1=$xo) and ($y1=$yo) then @goto %est else @goto %nextp %est $dx=$x2-$x1 $dy=$y2-$y1 $kut=$dy/$dx $kut=@Calc ArcTg($kut) $kut=abs($kut*180/3.1415) @if ($dx>0) and ($dy>0) then $kut=$kut @if ($dx>0) and ($dy<0) then $kut=360-$kut @if ($dx<0) and ($dy>0) then $kut=180-$kut @if ($dx<0) and ($dy<0) then $kut=180+$kut $kut=3600+900-$kut*10 $kut2=$kut+1800 ;@Dialog.Message i=$i j1=$j1 j2=$j2 m=$m kut=$kut z=$zo @if $kut>=2700 then @goto %priamo else @goto %plus180 %priamo @Map.Object[$I].Caption[$parampidpys] 0 0 0 $kut 0 ;@Dialog.Message priamo @goto %nextp %plus180 ;----беремо попередній відрізок а не наступний @if $j1<>1 then $j1=$j1-1 $j2=$j1+1 $p1=@Text[2].Line[$j1] $p2=@Text[2].Line[$j2] $x1=@StringPart 1 $p1 $y1=@StringPart 2 $p1 $x2=@StringPart 1 $p2 $y2=@StringPart 2 $p2 $dx=$x2-$x1 $dy=$y2-$y1 $kut=$dy/$dx $kut=@Calc ArcTg($kut) $kut=abs($kut*180/3.1415) @if ($dx>0) and ($dy>0) then $kut=$kut @if ($dx>0) and ($dy<0) then $kut=360-$kut @if ($dx<0) and ($dy>0) then $kut=180-$kut @if ($dx<0) and ($dy<0) then $kut=180+$kut $kut=3600+900-$kut*10 $kut2=$kut+1800 @Map.Object[$I].Caption[$parampidpys] 0 0 0 $kut2 512 $j1=$j1+1 ;-------------------------------------------------- %nextp $j1=$j1+1 @if $j1>$m then @Goto %nextobj else @Goto %poshuk ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %nextobj @Progress.StepBy $i=$i+1 @if $i>$n then @Goto %end else @Goto %Start %end ;--------------закінчено перебір пікетів @Progress.Stop @Window.Refresh @Text[1].Clear @Text[2].Clear ; @Break DONE =============================== В процесі помітив наступну помилку: Якщо у прикріпленому файлі сворити підписи по існуючим точковим обєктам - то все ок. Коли дозібрати пікети вручну на вузли лінії - то по них не виносяться підписи. вирішення проблеми: всі пікети у чистий файл і перенумерація ID потім вставляємо лінію з наступним ID. Можливо це тільки у мене така проблема з програмою.
|
Автор: | fendak [ 11 ноя 2015 19:29 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
Пропоную скрипт, який миттєво знаходить потрібний обмінник в базі з десятки тисяч обмінників. Скрипт складається із трьох кнопок. Перша перевіряє всі обмінники в папці з базою і складає їх список, записуючи в текствовий файл D:\Baza.txt $WorkPapka=@Dialog.SelectFolder Виберіть папку з файлами для опрацювання @if $WorkPapka= then @break @Text[1].FolderListTree *.in4 $WorkPapka $FC=@Text[1].Count @Text[1].Save D:\Baza.txt @Break Оброблено $FC обмінників Друга переводить базу в скорочений варіант, залишаючи тільки назву файлу без його шляху. @Text[1].Load D:\Baza.txt $FC=@Text[1].Count $I=0 %Loop $I=$I+1 $FN=@Text[1].Line[$I] $FNShort=@ExtractFileName $FN @Text[2].Add $FNShort @if $I<$FC then @Goto %Loop @Text[2].Save D:\BazaShort.txt @Dialog.Message Виконано! Ну і третя кнопка є, власне, для швидкого пошуку обмінників в базі і їх відкриття. При цьому шукаються як IN4 так і XML @Text[1].Load D:\BazaShort.txt @Text[2].Load D:\Baza.txt $KN=@Dialog.Ask Кадастровый номер для пошуку в базі Default=4621283300020010000 $SeartIndex=@Text[1].IndexOf $KN.in4 @if $SeartIndex=0 @Dialog.Message Такого файла in4 в базі нема @if $SeartIndex=0 then @Goto %Next $Seart=@Text[2].Line[$SeartIndex] @FileOpen $Seart %Next $SeartIndex2=@Text[1].IndexOf $KN.xml @if $SeartIndex2=0 @break Такого файла xml в базі нема $Seart2=@Text[2].Line[$SeartIndex2] @FileOpen $Seart2 Тобто, першими двома кнопками ми індексуємо базу. Це робиться один раз, якщо база стабільна, без додавання нових обмінників чи час від часу, якщо нові обмінники додаються в базу. І в процесі роботи користуємося тільки третьою кнопкою. Зручність, також, в тому, що можна відкрити публічну карту, клацнувши два рази на ділянці, отримати її кадастровий номер і, не закриваючи це вікно, запустити скрипт і переписати кадастровий номер у пошукове вікно. |
Автор: | GeKo [ 12 ноя 2015 15:27 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
Пане fendak, це стосується обмінників в папці (ін4, хмл), чи обмінників в карті (дмф)... Так може хто знає як мені зробити так щоб карта з обмінниками ін4 швидше відкривалась і не вибивало вікна аналіз карти??? |
Автор: | fendak [ 12 ноя 2015 15:45 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
це стосується обмінників IN4 та XML у папці. Аналіз карти відбувається на закладці Інфо та Сбір. На закладці Правка - ні. Тому можна використати такий скрипт: %Events.OnFileOpen @SelectTab 2 %Events.OnAdd Вигляд | Показати позначені Добавити його треба в Карта - Скрипт обработки собитий В результаті після кожного відкриття карти автоматично активуватиметься закладка Правка. Плюс, при вставці об'єктів на карту вони відразу будуть показані на екрані. |
Автор: | Dmitry_Zolotar [ 12 ноя 2015 19:09 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
GeKo писал(а): Пане fendak, це стосується обмінників в папці (ін4, хмл), чи обмінників в карті (дмф)... Так може хто знає як мені зробити так щоб карта з обмінниками ін4 швидше відкривалась і не вибивало вікна аналіз карти??? Аналіз карти відбувається довго коли в параметрах є функція PARENT. В стандартному Normal.dmf, який використовується для відкриття in4 є така функція в параметрі ID106 |
Автор: | fendak [ 13 ноя 2015 15:51 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
Dmitry_Zolotar писал(а): Аналіз карти відбувається довго коли в параметрах є функція PARENT. В стандартному Normal.dmf, який використовується для відкриття in4 є така функція в параметрі ID106 Діма, може якщо ділянок не дуже багато... Але коли на карті 225000 об'єктів, то це нічого не дало. Все одно аналіз карти відбувається безкінечно. Хоч я видалив функцію PARENT в параметрі ID106 на dmf-карті з обмінниками. |
Автор: | Dmitry_Zolotar [ 13 ноя 2015 17:46 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
Можливо ще є параметри з цією функцією? |
Автор: | zahidzem [ 16 ноя 2015 08:48 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
Микола доброго дня. Спасибі за скрипт. Дуже корисна річ. Особливо коли терміново треба знайти певну ділянку. А як би зробити, щоб також знайти ділянку в ДМФ? |
Автор: | paul [ 16 ноя 2015 15:02 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
http://geosystema.net/forum/viewtopic.php?p=18653#18653 |
Автор: | sirenko_s_a [ 23 ноя 2015 11:34 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
fendak писал(а): Пропоную скрипт, який миттєво знаходить потрібний обмінник в базі з десятки тисяч обмінників. Класний скрипт!!! Чи можна в ньому зробити пошук по частині слова. Наприклад: "Бур-Кравцов ОА.xml" а пошук по частині слова "Кравцов"??? Чи можливо зробити вибір по чому шукати Кадастровий номер чи Прізвище можливо ще й Адресу добавити (тут напевно складно буде)??? В когось є варіанти як це зробити. |
Автор: | Ryvol [ 19 апр 2016 08:43 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
Можливо комусь буде корисно: Якщо у базі файлів не повний кадастровий номер і взагалі невідомо чи є портібна ділянка... чи в *.xml, або кварталі ін4 у яких більше однієї ділянки, хоч і 1250... а потрібно знайти ділянку Кирієнко Євгенії Ігорівни... Для пошуку слів, чи тексту із декількох слів, українською мовою у середині файлів для вказаної папки та всіх внутрішніх папок у файлах: *.in4, *.xml, *.uws на сьогоднішній день користуюсь програмою DocFetcher. Аналоги: AVSearch та Findtxt - відпочивають поряд з DocFetcher. (Інтерфейс російською мовою). При першому додаванні папки для індексації у переліку "Розширення файлів" - Звичайний текст: добавляємо із випадаючого списку розширення наших файлів (*.in4, *.xml, *.uws) та запускаємо індексацію. Потім тільки у полі пошуку вводимо те що хочемо знайти і отримаємо у верхньому вікні список файлів у яких є такі слова... а у нижньому попередній перегляд тексту всередині цього файлу і переглядяємо по черзі усі варіанти... Можете самі почитать: http://docfetcher.sourceforge.net/ru/index.html |
Страница 7 из 15 | Часовой пояс: UTC + 2 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |