ООО "ЛесИС" - ГИС TOPOL-L для лесного хозяйства, лесоустройства и арендаторов лесного фонда
ООО "ЛесИС" - ГИС TOPOL-L для лесного хозяйства, лесоустройства и арендаторов лесного фонда
lesis@ya.ru
+7(916)615-42-77

ФОРУМ ТЕХПОДДЕРЖКИ ГИС TOPOL-L

Объявление

Для участия в работе закрытой, технической части форума нужно быть пользователем ГИС TopoL-L2 (10.0) и Зарегистрироваться!

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Настройка контроля.

Сообщений 1 страница 40 из 40

1

Ссылка
Третья цифра определяет механизм контроля. Третья цифра = 1 (101001) определяет выполнение выражения через фильтр.
101001 - именно про эту позицию идёт речь?

Фильтр очень быстрый механизм. Нужно стараться все выражения сделать на этом механизме. Но в случаях, когда невозможно выполнить выражение на фильтре, задействуется механизм запросов. Это коды со 102 для разработчиков и с 202 для пользователей.
Поясните что за "фильтр" и "механизм запросов". Просто для меня в приведённом в примере и в справочнике контроля в поле "Выражение" нет разницы между фильтром и запросом.
201111 и 202111 - это порядковый номер?

2

Юрий написал(а):

201111 и 202111 - это порядковый номер?

Ну да, номер строки (Код) в справочнике настройки контроля.

Юрий написал(а):

101001 - именно про эту позицию идёт речь?

Да. 1- фильтр, 2 -запрос.

Юрий написал(а):

Поясните что за "фильтр" и "механизм запросов". Просто для меня в приведённом в примере и в справочнике контроля в поле "Выражение" нет разницы между фильтром и запросом.

Все правильно, для Вас схема простая - не получилось с 201, опробуйте с 202. Разница в методе обработке одного и того же. "Запрос", по сути, это поиск по SQL выражению. Результат - набор данных. Фильтр - это буквально фильтр, который при обращении к базе оставляет только те записи, которые отвечают запросу... Представьте корзину с шариками, среди которых есть большие по размеру. Фильтр - это сетка с ячейками, через которые проходят медлкие шарики и остаются крупные (соответствуют запросу). А запрос - это рукми перебираете шарики и сравниваете размер. Оставляете большие... Как то так... примерно... не знаю, понятно ли объяснил... ))))

3

Грешнов написал(а):

Все правильно, для Вас схема простая - не получилось с 201, опробуйте с 202.

201 - вторая позиция (значение "0") вообще не задействуется?
Теоретически: записи пользователей идут в интервалах с 201001 по 201999 и с 202001 по 202999 ,что явно меньше заявленных в помощи значениях с 200000 до 299999

Грешнов написал(а):

Разница в методе обработке одного и того же. "Запрос", по сути, это поиск по SQL выражению. Результат - набор данных. Фильтр - это буквально фильтр, который при обращении к базе оставляет только те записи, которые отвечают запросу... Представьте корзину с шариками, среди которых есть большие по размеру. Фильтр - это сетка с ячейками, через которые проходят медлкие шарики и остаются крупные (соответствуют запросу). А запрос - это рукми перебираете шарики и сравниваете размер. Оставляете большие... Как то так... примерно... не знаю, понятно ли объяснил... ))))

Не совсем понятно...  Надо пробовать.
Вот еще описание нашёл (там же в помощи):   Текст фильтра или текст запроса (Where предложение). В фильтре нельзя сравнивать значения полей друг с другом, использовать предложение IN, строить сложные конструкции, сочетающие одновременно OR и AND. В запросах можно все. Но работают они намного медленней.
Хотя в приведённом примере позиции 101606 и 101607 противоречат тезису, что нельзя строить сложные конструкции, сочетающие одновременно OR и AND. Одно из двух: либо описано неправильно, либо я в построении запросов не понимаю многого.

Отредактировано Юрий (19.07.2017 21:37:09)

4

Пытаюсь составить контроль

код             202001   
Описание       В молодняках не должно быть подроста
Таблица         ???
Выражение     KatZem=1101 and VozGrpVyd=1 and Iarus=17 and .........
Поля              KatZem
                     VozGrpVyd
                     Iarus
                     .......

Правильно?
Что поставить в поле "таблица" вместо ???
Что поставить в поле "выражение" вместо ...........  хочу задействовать количество подроста>0.

5

Я Вам советую делать упор на контроль в "Повыдельной таксации". "Карточка таксации", как я уже писал неоднократно, развиваться не будет, она для нас мешающий рудимент и ее функционал также усеченный. Ее форма - анахронизм из ИТ 70-х годов.
Я думаю, что там Вы нужное условие по контролю подроста сформируете быстро и не морочась.

6

Немного поразбирался - вроде как понятно.

Грешнов написал(а):

Я думаю, что там Вы нужное условие по контролю подроста сформируете быстро и не морочась.

Так это не только для подроста нужно.
Как составить запрос для поиска следующего насаждения: хозсекция - хвойные, сумма коэфициентов хвойных пород в составе мене 5 единиц.
В режиме "карточка таксации" использовал бы эту функцию SumKoefSos1; а в режиме "Повыдельной таксации" как быть?

7

Юрий написал(а):

Как составить запрос для поиска следующего насаждения: хозсекция - хвойные, сумма коэфициентов хвойных пород в составе мене 5 единиц.

1. Формулировать КОНКРЕТНЫЕ условия, которые у Вас не получились, в "Пожеланиях". Если не возможно - будем делать какие то функции похожие на сумму коэффициентов.
2. Пока что то не получилось воссоздать в Контроле повыдельной использовать то, что есть в Контроле карточки, постепенно вытесняя его повыделкой.

8

Грешнов написал(а):

2. Пока что то не получилось воссоздать в Контроле повыдельной использовать то, что есть в Контроле карточки, постепенно вытесняя его повыделкой.

Т.е. предлагаете контроль запускать 2 раза? один из "повыделки", второй из "карточки"?

9

Грешнов написал(а):

Если не возможно - будем делать какие то функции похожие на сумму коэффициентов.

Я думаю что потребуется такая функция. В ЛУ инструкции, чётко прописано, что хвойные насаждения описываются с 5 ед. Но, всё же, по-старинке, кто то описывает с 4-х.

10

Юрий написал(а):

Т.е. предлагаете контроль запускать 2 раза? один из "повыделки", второй из "карточки"?

Пока не заменили на повыделку да.
Юрий... во времена СОЛИ контроль запускался раз по 20 пока всех блох не отлавливали и не настраивали справочник как надо. И еще потом раза два подстраховывались... "Нажал один раз на кнопку и получил результат" - это мечта плохо информированных дилетантов... ))

11

Грешнов написал(а):

Юрий... во времена СОЛИ контроль запускался раз по 20 пока всех блох не отлавливали и не настраивали справочник как надо.

Как бы "вкурсе", поэтому не удивляюсь.

12

Грешнов написал(а):

"Нажал один раз на кнопку и получил результат" - это мечта плохо информированных дилетантов... ))

Это не дилетанты - это вредители.

Грешнов написал(а):

"Нажал один раз на кнопку и получил результат"

В данном случае хуже только те, кто пытается это утверждать.

13

Юрий написал(а):

хвойные насаждения описываются с 5 ед

Там всё намного сложнее. Это для условия двух хозяйств и то! мягкие чтобы преобладали нужно 6 единиц. Оттого и описывают с 4-х ))) (преобладают хвойные)

14

Александр Архипов написал(а):

Там всё намного сложнее. Это для условия двух хозяйств и то! мягкие чтобы преобладали нужно 6 единиц.

Функция нужна - сумма коэффициентов.

15

В фильтре отбора выделов можно добавить на уровне яруса  выражение SQL типа GROUP BY - HAVING для отбора по сумме коэффициентов, надо только правильно совместить это с другими условиями. Зафиксируем в списке очереди на реализацию.

16

Могу я в этом выражении

Выражении

[Запрос отмены отбора макетов в доп. макетах]
UPDATE TblVydDopMaket SET Vybor0 = 0

[Запрос отбора параметров из всех доп. макетов]
UPDATE TblVydDopMaket INNER JOIN
TblVyd ON TblVyd.NomZ = TblVydDopMaket.NomSoed
SET TblVydDopMaket.Vybor0 = 1
WHERE TblVyd.Vybor1 = 0 AND TblVydDopMaket.NomZ IN (
SELECT NomSoed FROM TblVydDopParam
WHERE (ParamId = 301 AND CInt(Parametr) > 1900) OR
(ParamId = 303 AND CLng(Parametr) > 0) OR
(ParamId = 304 AND CLng(Parametr) > 0) OR
(ParamId = 305 AND CLng(Parametr) > 0)
GROUP BY NomSoed
HAVING COUNT(NomSoed) = 4
)
[Запрос отмены отбора выделов]
UPDATE TblVyd SET Vybor0 = 0

[Запрос отбора из всех выделов]
UPDATE TblVyd SET Vybor0 = 2
WHERE Vybor1 = 0 AND
TblVyd.KatZem IN (1507,1509)
AND EXISTS (
SELECT NomZ FROM TblVydDopMaket
WHERE  TblVydDopMaket.NomSoed = TblVyd.NomZ AND
TblVyd.Vybor1 = 0 AND TblVydDopMaket.Vybor0 = 1
)

вместо TblVyd.KatZem IN (1507,1509)
записать
((TblVyd.KatZem<1507) or (TblVyd.KatZem>1509))

необходимо для поиска заполненных параметров для всех категорий земель, кроме лесосек и вырубок: год вырубки, кол-во пней, диаметр пня.

Отредактировано Юрий (28.07.2017 13:30:47)

17

В принципе синтаксис SQL допускает оба варианта, то есть и диапазон, и список искомых величин (это удобно, если значения в разбивку, не образуют сплошной диапазон).

18

а как записать  - все занчения кроме А или Б?

Отредактировано Юрий (28.07.2017 20:46:04)

19

Можно как
  TblVyd.KatZem NOT IN (1507,1509),
либо
  NOT ((TblVyd.KatZem=1507) or (TblVyd.KatZem=1509))
либо
  ((TblVyd.KatZem<>1507) and (TblVyd.KatZem<>1509))

Отредактировано Дмитрий Александрович (30.07.2017 18:16:33)

20

Дмитрий Александрович написал(а):

Можно как
  TblVyd.KatZem NOT IN (1507,1509),
либо
  NOT ((TblVyd.KatZem=1507) or (TblVyd.KatZem=1509))
либо

эти варианты как то логичнее будут.

21

Работает ли контроль по выбранным выделал?

22

Можно ли выполнить статистику по ошибкам?

OffTop

Начальство требует - какие ошибки и каков процент

23

Юрий написал(а):

Работает ли контроль по выбранным выделал?

Не помню, вряд ли. Проверьте. Я не могу сейчас это сделать.

Юрий написал(а):

Можно ли выполнить статистику по ошибкам?

Функции такой нет. Есть протокол. Там есть ошибки. Можно скопировать и в Экселе отсортировать - число строк по каждой ошибке и есть их количество.

24

Грешнов написал(а):

Есть протокол. Там есть ошибки. Можно скопировать и в Экселе отсортировать - число строк по каждой ошибке и есть их количество.

Думал об этом.

25

Коллеги, в 728 версии в условиях отбора ярусов реализован поиск по сумме коэффициентов отобранных в ярусе пород. Доступно для всех ярусов. То есть Вы задаете условия отбора пород, после чего на уровне яруса можете задать условие на сумму коэффициентов этих пород.

26

В настройках контроля есть строка 101512 с выражением:

((KatZem>= 1503) AND (KatZem <= 1513))
AND
MerLV_NePokr=0

Вопрос, что такое MerLV_NePokr и могу ли я как пользователь его редактировать?

Почему возник вопрос. У меня есть мероприятие с кодом 3274 - "Уход за подростом". Мероприятие прописано в выделе "Вырубка". Контроль выдает сообщение, с кодом 101512, что тут требуется лв мероприятие. Хотя это 3274 у меня в НСИ отмечено с кодом Тип мер = 203, что соответствует типу мероприятий "Сохранение подроста" из справочника "Мероприятий типы".
С мероприятием 3271 "Минерализация" (тип мер = 202) такого ложного срабатывания контроля не происходит.
Подозреваю ошибку внутри выражения MerLV_NePokr.

ps. кстати, в рекомендуемом режиме "Повыд.такс." не работает подсветка желтым ячеек с ошибками, в режиме "Карточка" работает и из-за этого ошибки править проще, хотя см.сообщение номер 5 в этой теме.

27

http://ipic.su/img/img7/fs/kiss_14kb.1563264952.png

скриншот

http://ipic.su/img/img7/fs/kiss_45kb.1563264867.png

9+1+0= 10
что делать?

28

Алексей Курагин написал(а):

Вопрос, что такое MerLV_NePokr

Обобщение видов мероприятий по лесовосстановлению, применимых на непокрытых лесом землях.

Алексей Курагин написал(а):

могу ли я как пользователь его редактировать?

Выражение сформулировано в текстовых (1251) файлах:
c:\Program Files (x86)\LesIS\TopoL_L2\Sql\Control_DB1.sql
c:\Program Files (x86)\LesIS\TopoL_L2\Sql\Control_DB2.sql
Собственно, оно содержит перечень допустимых кодов ЛВ для непокрытых.

Алексей Курагин написал(а):

9+1+0= 10

Не смог воспроизвести.

Алексей Курагин написал(а):

что делать?

Для начала описать подробно ситуацию по схеме из "Как задать вопрос..." Проявляется ли на деморегионе?... Если да, то на каком конкретно выделе?... Делали ли что то с настройками контроля? Что там сидит? Менялись ли форматы полей БД? Не может ли там сидеть что то типа 0.01?... И т.п... Все необходимое для воспроизведения ситуации у нас.

29

Грешнов написал(а):

c:\Program Files (x86)\LesIS\TopoL_L2\Sql\Control_DB1.sql

Спасибо.

Грешнов написал(а):

Собственно, оно содержит перечень допустимых кодов ЛВ для непокрытых.

Вот это правильный подход. Нечего пользователям другие коды использовать.

Грешнов написал(а):

Не смог воспроизвести.

Возможно, это потому что текст ошибки и подсветка не соответствует сути ошибки.
Там в подросте коэффициенты 8+0

30

Алексей Курагин написал(а):

Вот это правильный подход. Нечего пользователям другие коды использовать.

Ну поправить то можно. А если обсудить исправление тут, то и в дистрибутив можно добавить, чтобы не сбрасывалось.

Алексей Курагин написал(а):

Возможно, это потому что текст ошибки и подсветка не соответствует сути ошибки.
Там в подросте коэффициенты 8+0

Не только в подсветке. Чтобы разделить нужны и запросы разные, т.к. подрост в L2 это тоже ярус, а его отражение в 10 и 32 макете просто фильтруется по кодам ярусов.

31

Алексей Курагин написал(а):
скриншот

http://ipic.su/img/img7/fs/kiss_45kb.1563264867.png

9+1+0= 10
что делать?

Тоже в стандартном виде для катрочки таксации работаете?

Отредактировано Юрий (17.07.2019 08:57:07)

32

Да, по факту он удобнее.

33

Алексей Курагин написал(а):

ps. кстати, в рекомендуемом режиме "Повыд.такс." не работает подсветка желтым ячеек с ошибками, в режиме "Карточка" работает

Этот вид контроля, принципы которого были выработаны ещё в СОЛИ, реализован именно в среде карточки таксации, она "знает", какие поля контролирует каждое выражение и может их подсветить. Но в самой повыдельной базе есть только общее для выдела поле с информацией о наличии проблемы (оно подсвечивает ошибки в дереве), поэтому перенести подсветку отдельных полей в другой интерфейс просто невозможно.

Вторая схема контроля на основе SQL-запросов реализована, как независимый модуль, но запрос может быть практически произвольного вида (может быть самостоятельно изменён пользователем), может обращаться к полям разных макетов, и "разобрать" грамотно его поисковое выражение для целей подсветки участвовавших в нём полей очень тяжело и не всегда будет корректно. Зато возможности контрольной аналитики почти не ограничены.

34

Алексей Курагин написал(а):

Возможно, это потому что текст ошибки и подсветка не соответствует сути ошибки.
Там в подросте коэффициенты 8+0

Это старый баг с подсветкой. В подросте если траблы (не равно 10), то подсвечивает состав насаждения и загорается "чек" (ошибка) в дереве на уровне выдела. Подрост никогда не подсвечивает.

35

Грешнов написал(а):

Не только в подсветке. Чтобы разделить нужны и запросы разные, т.к. подрост в L2 это тоже ярус, а его отражение в 10 и 32 макете просто фильтруется по кодам ярусов.

Ок, прошу Вас тогда написать два запроса - на состав насаждений и на состав подроста с пояснением куда их (запросы) вставлять. И посмотрите заодно работу подсветки на подросте. Спасибо.

36

В результате проверки нашлись выдела с такой записью - 4Е3Б2С1Ос+Олс. Сделали замечание - должно быть 4Е2С3Б1Ос+Олс. Отсюда вопрос - как заложить контроль на подобные ошибки?

Пост написан 08.02.2024 15:38:57

37

Юрий написал(а):

Отсюда вопрос - как заложить контроль на подобные ошибки?

Мне казалось, что этот вопрос уже решался как то, кажется через сортировку пород. Посмотрим при первой возможности, сходу сейчас не вспомню.

38

Мне казалось, что этот вопрос уже решался как то, кажется через сортировку пород.
Может и было. надо искать.

Пост написан 13.02.2024 09:22:02

39

Юрий написал(а):

В результате проверки нашлись выдела с такой записью - 4Е3Б2С1Ос+Олс. Сделали замечание - должно быть 4Е2С3Б1Ос+Олс. Отсюда вопрос - как заложить контроль на подобные ошибки?

Выложена 902 версия. Контроль порядка следования пород заложен на вкладке "Контроль - Спец. виды контроля". Контроль зашит в исходный текст программы, через НСИ не настраивается - это слишком сложно.
Результат выводит в протокол и желтыми значками помечает выделы в дереве объектов. Проверяйте.

40

Постараюсь посмотреть в ближайшее время.

Пост написан 08.07.2024 10:03:01




Почтовый адрес для ЗАКАЗНЫХ писем:
С.П.Грешнов, +7(916)615-42-77, 108832, А/Я №1
НЕ ИСПОЛЬЗОВАТЬ курьерскую доставку!!!
E-Mail: lesis@ya.ru
Вопросы общего характера:
+7(916)615-42-77
РОССИЙСКАЯ ФЕДЕРАЦИЯ
Общество с ограниченной ответственностью "ЛЕСИС"
ОГРН: 1035007204902, ИНН: 5036046400, КПП: 503601001