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

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

Объявление

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

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

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


Вы здесь » ФОРУМ ТЕХПОДДЕРЖКИ ГИС TOPOL-L » КАРТОГРАФИЯ, ВЕКТОРНАЯ И РАСТРОВАЯ » Тематические карты по двум показателям


Тематические карты по двум показателям

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

1

Здравствуйте! Необходимо составить карту по хозяйственным мероприятиям. Отдельная карта по рубкам, другая по лесовосстановлению (лесные культуры, содействие и т.п).
При указании в запросе окраска по мероприятиям, карта окрашивается по последнему мероприятию. Например: в выделе назначена сплошная рубка, 2-м мероприятием назначена посадк лесных культур. Топол окрашивает выдел по лесным культурам. Мы хотим отдельно покрасить по заготовке, где выдел красится по СР, и отдельно карта - выдел по посадке лесных культур.

2

Посмотрите может пригодится.
http://sh.uploads.ru/t/wjh98.png
Смотрите только коды и текстовку под себя.
Создате окраску.
http://sa.uploads.ru/t/20kso.png

3

Приведенное Сергеем выражение переделано из выражения для Категории земель, но Категория земель - одна на выдел, я мероприятий часто несколько, и Дмитрию нужно красить 2 карты так, чтобы один и тот же выдел в первом случае окрашивался по классу мероприятия-рубки, во втором - по лесокультурным мероприятиям, которые могут быть на любом месте в списке мероприятий.

Мне кажется, что правильными будут следующие выражения (если я правильно понял границы групп мероприятий) :

- для рубок   
SELECT(@1.3.MERKL, @1.3.MERKL < 2000)

- для лесовосстановления
SELECT(@1.3.MERKL, (@1.3.MERKL > 3000) AND (@1.3.MERKL < 4000))

Ну а цветовую легенду соответствия кодов и окраски Вы сделаете по своему усмотрению. Если несколько соседних кодов красятся одинаково, можно сделать легенду по диапазонам (сначала автоматом по числу целевых цветов, потом поправить диапазоны по смыслу), если в разбивку - придется цвет повторять.

Отредактировано Дмитрий Александрович (12.12.2017 15:18:37)

4

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

Дмитрию нужно красить 2 карты

У нас тоже красят две. Если ты пробовал на деморегионе у меня всё работает с одной кнопки. Подставляй свои коды в tps. и крась как угодно.
А вот другой вопрос. Может ли как то машина разобрать что к данному выделу относится два мероприятия? И если идет сплошная рубка и посадка культур то придумать свой цвет(штриховку). Например сплошная рубка красный цвет а по ней штриховкой посадка культур желтая. И для каждых повторяющихся мероприятий свои цвета. Уж больно расход бумаги на это большой.

5

Сергей Городничев написал(а):

А вот другой вопрос. Может ли как то машина разобрать что к данному выделу относится два мероприятия? И если идет сплошная рубка и посадка культур то придумать свой цвет(штриховку).

Конечно можно, нужно просто сформулировать правильные условия в макросе с учетом номера мероприятия:

((@1.3.MERNOM = 1) AND (@1.3.MERKL = 1211) AND (@1.3.MERNOM = 2) AND (@1.3.MERKL = 3211))
- в таком виде работать не будет, так как строка применяется к мероприятию, а не к выделу; мероприятие не может быть одновременно разных кодов.

Вот такой макрос возвратит уникальный код для каждого из сочетаний 1-го и 2-го мероприятий:

Valuemacro  SelectMer;
{  Поучение информации о мероприятиях для полигонов - выделов.
Вер. 1.0   © Старостенко Д.А., 2017 год }

var
ResultValue : string;
Kod1M, Kod2M : list of longint;

begin
  Kod1M := SELECT(@1.3.MERKL,@1.3.MERNOM = 1);
  Kod2M := SELECT(@1.3.MERKL,@1.3.MERNOM = 2);
  ResultValue := (Kod1M[1] + Kod2M[1]):C;
end.

Примечание: макрос ToPas без указания пути TopoL ищет в каталоге _WorkingDirectory.\, то есть, например, в D:\LesIS

Отредактировано Дмитрий Александрович (13.12.2017 12:14:32)

6

А если нужна окраска по параметрам: выборочная рубка по полнотам (отдельный цвет для рубки с полнотой 0,6 и отдельный для 0,7); выборочные рубки по отдельным преобладающим породам - как будет выглядеть запрос?

7

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

выборочная рубка по полнотам (отдельный цвет для рубки с полнотой 0,6 и отдельный для 0,7)

Попробуйте выражение:

SELECT(@1.2.POLNOTA * 10, @1.3.MERKL = 1605)

оно возвратит только для выделов, где есть Выборочная рубка 1605, значения 6, 7 и т.п. для полнот 0,6 0,7 и т.д.

8

Здравствуйте, программировать в макросе .tps я не умею. Можно ли мне сделать раскраску полигонов по заданным условиям через "глаз", по "выражению". Через построитель запросов я отбираю преобл.породы -Сосна, Ель, группа возаста - 1, полнота 07,08,09,1  - этот запрос мне необходимо окрасить в один цвет, и  преобл.породы -Береза, Осина, группа возаста  меньше 2, полнота 07,08,09,1  - в другой цвет.
Какое выражение можно записать в визуализации цвета полигона "по выражению"?

9

Я полагаю, что будут выделы, которые не отвечают ни первому, ни второму условию, и это будет третий цвет (даже если он белый). При таком количестве условий без макроса ToPas не обойтись, хотя сам макрос будет простым:

Valuemacro  Olga_01;
{  Формирует код символа по условию Ольги,  Вер. 1.0, помощь  © ЛесИС }

   {  Имена полей БД 
1.PorodaPrb - преобладающая порода
1.VozGrpVyd - группа возраста
1.2.Polnota   - полнота        }

var
ResultValue : string;

begin
  if (Trunc(@1.PorodaPrb/100) = 1001) or (Trunc(@1.PorodaPrb/100) = 1002)   { сосна и ель всех подвидов }
           AND (@1.VozGrpVyd = 1) AND (SELECT(@1.2.Polnota, @1.2.Iarus = 1) >= 0.7)  then 
    ResultValue := '1'
  else if (Trunc(@1.PorodaPrb/100) = 3026) OR  (@1.PorodaPrb = 304000)   { береза всех подвидов и осина }
           AND (@1.VozGrpVyd < 2) AND (SELECT(@1.2.Polnota, @1.2.Iarus = 1) >= 0.7)
  then
    ResultValue := '2'
  else
    ResultValue := '0';    { прочие категории земель }
end.

Этот макрос надо записать в файл name.tps (имя придумайте), а выражение для его вызова будет
   CALCVALUE('name.tps')
при условии, что макрос размещен в рабочем каталоге ГИС, например D:\LesIS

Попробуйте сначала вывести с помощью этого макроса метки - увидите цифру на каждом выделе. Если все будет нормально, сделайте легенду, где значениям '0', '1', '2' (это тип "текст") Вы укажете в соответствие требуемые цвета.

Обращаю Ваше внимание на то, что ярусов может быть в описании выдела несколько (включая подрост и подлесок), а полнота - это параметр яруса, поэтому я ставлю условие выбора полноты 1-го яруса.

10

Создала описанный макрос. Он работает, только отбирает по породам (сосна, ель-'1'; береза, осина - '2'), полноту и класс возраста не учитывает, пока не могу разобраться почему.

11

Olga написал(а):

полноту и класс возраста не учитывает, пока не могу разобраться почему.

Это потому, что я по паре скобочек потерял, должно быть:

  if ((Trunc(@1.PorodaPrb/100) = 1001) OR (Trunc(@1.PorodaPrb/100) = 1002))   { сосна и ель всех подвидов }
           AND (@1.VozGrpVyd = 1) AND (SELECT(@1.2.Polnota, @1.2.Iarus = 1) >= 0.7)  then
    ResultValue := '1'
  else if ((Trunc(@1.PorodaPrb/100) = 3026) OR  (@1.PorodaPrb = 304000))   { береза всех подвидов и осина }
           AND (@1.VozGrpVyd < 2) AND (SELECT(@1.2.Polnota, @1.2.Iarus = 1) >= 0.7)
  then
    ResultValue := '2'

Скобочки влияют на порядок проверки условий: без скобок, если выражение до первого OR дает истину и проверка дальше не идёт, а нам здесь нужно, чтобы всегда работали все три условия через AND.

12

Спасибо! Поставила скобки и все получилось!

13

Здравствуйте, подскажите как раскрасить карту по следующему условию:


П.п.

Условие выбора

Цвет визуализации

Метка(символ) визуализации

1

Выдела с насаждениями сосны и ели, в возрасте более 20 лет. В составе насаждения хвойных пород (сумма коэффициентов сосны и ели) 9 единиц и более. За исключением выделов, где в составе присутствуют (1 единица и более) липа и дуб.

Разные для каждой позиции (условия выбора)

1

2

Выдела с насаждениями лиственницы, в возрасте более 20 лет. В составе насаждения лиственницы 9 единиц и более. За исключением выделов, где в составе присутствуют (1 единица и более) липа и дуб.

2

3

Выдела с насаждениями березы, осины, ольхи черной, ольхи серой, ива древовидной в возрасте более 10 лет. В составе насаждения мелколиственных пород (сумма коэффициентов береза, осина, ольха черная, ольха серая, ива древовидная) 9 единиц и более. За исключением выделов, где в составе присутствуют (1 единица и более) липа и дуб.

3

4

Выдела с насаждениями липы и дуба в возрасте более 10 лет. В составе насаждения широколиственных пород (сумма коэффициентов липы и дуба) 4 единицы и более.

4

5

Выдела с насаждениями сосны и ели, в возрасте более 20 лет. В составе насаждения хвойных пород (сумма коэффициентов сосны и ели) от 5 до 8 единиц. За исключением выделов, где в составе присутствуют (1 единица и более) липа и дуб.

5

6

Выдела с насаждениями березы, осины, ольхи черной, ольхи серой, ива древовидной в возрасте более 10 лет. В составе насаждения мелколиственных пород (сумма коэффициентов береза, осина, ольха черная, ольха серая, ива древовидная) от 6 до 8 единиц. За исключением выделов, где в составе присутствуют (1 единица и более) липа и дуб.

6

7

Выдела с насаждениями липы и дуба в возрасте более 10 лет. В составе насаждения широколиственных пород (сумма коэффициентов липы и дуба) от 1 до 3 единиц.

7

8

Выдела с насаждениями хвойных пород (сосна, ель, лиственница) в возрасте до 20 лет и лиственных пород (береза, осина, ольха черная, ольха серая, ива древовидная, липа, дуб) в возрасте до 10 лет.

8

9

Выдела протаксированные как: Болота

9

10

Выдела протаксированные как: Лесные поляны, прогалины

10

11

Выдела протаксированные как: Пашни

11

12

Выдела протаксированные как: Сенокосы и пастбища

12

13

Выдела протаксированные как: Реки, ручьи, мелиоративные каналы

13

14

Выдела протаксированные как: Озера, Пруды

14

15

Выдела протаксированные как: Вырубка, лесосека, погибшие насаждение, гарь, несомкнумшиеся лесные культуры

15

Пример карты как должно получиться.http://s9.uploads.ru/t/HoOZv.jpg

Возможно, нужно воспользоваться макросом ToPas. Но как его писать, куда вставлять в программе TopoL, я не знаю. Подскажи как это сделать или где почитать инструкцию?

14

dlh33avo написал(а):

по следующему условию

У Вас не одно условие. У Вас 15 совершенно разных и неоднородных запросов.

dlh33avo написал(а):

Возможно, нужно воспользоваться макросом ToPas.

Вряд ли. Возможно Д.А. посоветует что то иное, но на мой взгляд самое простое - через поиск по условиям заполнить какое то поле значениями 1-15 и уже по ним сделать откраску.
Видеоурок по "Построению тематических карт" можно скачать тут.
Как добавить тематическую карту в меню описано тут.

15

dlh33avo написал(а):

Возможно, нужно воспользоваться макросом ToPas.

Для такой карты без этого - никак. То есть макрос проанализирует описание каждого выдела и вернёт код 0, 1-15, а Вам надо будет сделать легенду, которая в соответствие этим кодам поставит нужные условные знаки. Макрос проще всего переделать, взяв за образец, например, макрос для плана лесонасаждений. Там есть комментарии. Верхняя часть, где анализируется преобладающая порода и группа возраста, Вам, видимо, не будет нужна, а нижняя часть макроса, где идёт разбор по категориям земель, видимо существенно меняться не будет (можете поменять возвращаемый код ResultValue). Что касается анализа покрытых лесом - там предстоит существенная переработка - у Вас требуется анализ описаний ярусов и пород, связанным соотношением 1:N, чего в плане насаждений не делается. Лучше всего воспользоваться функцией SELECT(...), которая возвращает некоторый параметр поиском по условию в подчинённых записях (ярусах, породах), и вызывать её придётся, видимо, многократно. Использование функции SELECT(...) на форуме обсуждалось неоднократно, поищите по названию функции. И, если в выражении отбора выделов есть уровень отбора по параметрам, относящимся к самому выделу (по преобладающий породе, например), эти условия лучше ставить в начале, до вызова SELECT(...), это ускорит выполнение.

Вызывается макрос следующим выражением:
      CALCVALUE('D:\LesIS\_Les\ToPas\dlh33avo_01.tps')
если Вы его разместите под именем dlh33avo_01.tps в стандартном каталоге макросов.

Отредактировано Дмитрий Александрович (13.08.2018 14:18:50)

16

Большое спасибо за ответы! Попробовал сделать как посоветовал Сергей Петрович.

но на мой взгляд самое простое - через поиск по условиям заполнить какое то поле значениями 1-15 и уже по ним сделать откраску.

Для этого воспользовался пустым полем (в моей базе) MetodTaks, отредактировал для него справочник создав 15 позиций по указанным выше условиям выбора. Воспользовавшись функцией «Отбор по условию» поочередно отобрал все 15 позиций с внесением изменений в повыдельную таксацию по полю «Метод такс.» использовав функцию «Установить это значение во всех выбранных…». Далее создал тематическую карту по следующему выражению:
@1.METODTAKS.
Все получилось карта окрасилась по указанным условиям!
Но есть определенные вопросы:
1. Использовать поле MetodTaks не по назначению не совсем правильно.
2. Возможно, указанные критерии нужно внести в 23 макет «Особенности выдела», но при создании тематической карты, как правильно прописать выражение по отбору в 23 макете по нескольким параметрам? По одному есть пример в стандартных выражениях:
SELECT(@1.4.MAKET,(@1.4.MAKET = 23) and (@1.4.1.PARAMETR='9'))
По двум и более параметрам нет. Как правильно пишется (синтаксис) выражения по двум и более параметрам?
3. Возможно, нужно создать новый макет к примеру «макет 36 «Элементы среды обитания» создать для него справочник по указанным выше критериям (условиям отбора). Тогда при построении тематической карты выражение должно, наверное, иметь следующий вид:
SELECT(@1.4.MAKET,(@1.4.MAKET = 36)
Но как создать новый макет и внести его в повыдельную таксацию я, к сожалению, не знаю.
Но все эти действия подразумевают внесение изменений в повыдельную таксацию и не дают возможности использовать данную тематическую карту универсально для других баз (где не внесены изменения в повыдельную таксацию). Для построения универсальной тематической карты скорей всего нужно сделать так как предложил Дмитрий Александрович.

dlh33avo написал(а):
Возможно, нужно воспользоваться макросом ToPas.

Для такой карты без этого - никак. То есть макрос проанализирует описание каждого выдела и вернёт код 0, 1-15, а Вам надо будет сделать легенду, которая в соответствие этим кодам поставит нужные условные знаки. Макрос проще всего переделать, взяв за образец, например, макрос для плана лесонасаждений. Там есть комментарии. Верхняя часть, где анализируется преобладающая порода и группа возраста, Вам, видимо, не будет нужна, а нижняя часть макроса, где идёт разбор по категориям земель, видимо существенно меняться не будет (можете поменять возвращаемый код ResultValue). Что касается анализа покрытых лесом - там предстоит существенная переработка - у Вас требуется анализ описаний ярусов и пород, связанным соотношением 1:N, чего в плане насаждений не делается. Лучше всего воспользоваться функцией SELECT(...), которая возвращает некоторый параметр поиском по условию в подчинённых записях (ярусах, породах), и вызывать её придётся, видимо, многократно. Использование функции SELECT(...) на форуме обсуждалось неоднократно, поищите по названию функции. И, если в выражении отбора выделов есть уровень отбора по параметрам, относящимся к самому выделу (по преобладающий породе, например), эти условия лучше ставить в начале, до вызова SELECT(...), это ускорит выполнение.

Макросы ToPas для плана лесонасаждений находятся в папке: :\LesIS\_Les\ToPas\ PlanLss.tps
Но опять есть определенные вопросы:
1. Как правильно открыть макрос PlanLss.tps (имеется в виду какой программой)?
2. Как вносить изменения в макрос?
3. Как создать новый макрос?
4. Поиск использования функции SELECT(...) на форуме через меню «Поиск» не чего не дал - выдаёт ошибку поиска. Если можно сделайте ссылку.
5. Где почитать информацию по языку ToPas (синтаксис, обозначения и др.)?

17

dlh33avo написал(а):

1. Использовать поле MetodTaks не по назначению не совсем правильно.

насколько я помню, эти пользовательские параметры введены в программу как раз для подобных случаев
http://ipic.su/img/img7/fs/kiss_11kb.1534245480.png

18

dlh33avo написал(а):

1. Использовать поле MetodTaks не по назначению не совсем правильно.

Действительно, это неправильно, но можно воспользоваться полями, которые советует Алексей, программа их точно не использует в своих интересах.

dlh33avo написал(а):

2. Возможно, указанные критерии нужно внести в 23 макет «Особенности выдела»

Именно этот макет использовать не надо, программа работает с ним специальным образом, так как описатели особенностей все равноправны и могут следовать в любом порядке, кроме того макетов особенностей может быть более одного.

dlh33avo написал(а):

3. Возможно, нужно создать новый макет

Это разрешено, макеты описаны в НСИ, свободные номера там есть. Прямо в редакторе НСИ добавляете описание в таблицу SisVydDopParam, появится возможность записывать в него, редактировать и использовать. Описание 36 макета будет начинаться со строки заголовка макета 3600, вслед за ним 3601, 3602, ... описываете параметры макета. Если поле со справочником, его тип 600, 200, 250 - числовые значения, 100 - текст, 400 - дата. Действуете по аналогии.

Поиск в доп. макетах для запроса значения конкретного описателя - примерно так (не проверял):
   SELECT(@1.4.1.PARAMETR,(@1.4.MAKET = 36) and (@1.4.1.PARAMID=2))
возвращаемое значение будет текстом.

dlh33avo написал(а):

PlanLss.tps

Это вообще-то макрос плана для модуля Лесосек, просто план, это PlanL2.tps

dlh33avo написал(а):

1. Как правильно открыть макрос PlanLss.tps (имеется в виду какой программой)?
2. Как вносить изменения в макрос?
3. Как создать новый макрос?

Это обычный текстовый файл, создаёте и редактируете любым редактором типа Блокнота.

dlh33avo написал(а):

5. Где почитать информацию по языку ToPas

Что-то было в документации 6.8, обсуждалось на старом форуме и на этом. Специального руководства по нему на русском нет, мы предлагали пользователям вносить изменения в наши заготовки. Синтаксис языка - упрощённая версия Pascal, есть два режима его использования - встроенными выражениями (доступ к полям БД, простые вычисления и функции) и макросами в отдельном файле (где можно описывать переменные, использовать циклы и условия для разветвлений).  Я знаю описания только на чешском, но мы консультируем, если возникают конкретные вопросы.

Чтобы использовать макрос из отдельного файла, программа должна его видеть - либо указывайте при вызове путь, либо размещайте в рабочем (кажется) каталоге, тогда без пути. Если программа его не видит, она Вам об этом скажет.

Отлаживать макросы проще всего, выводя вычисляемое им значение в качестве метки выдела - сразу видите, что он вычислил.

19

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

Это разрешено, макеты описаны в НСИ, свободные номера там есть. Прямо в редакторе НСИ добавляете описание в таблицу SisVydDopParam, появится возможность записывать в него, редактировать и использовать. Описание 36 макета будет начинаться со строки заголовка макета 3600, вслед за ним 3601, 3602, ... описываете параметры макета. Если поле со справочником, его тип 600, 200, 250 - числовые значения, 100 - текст, 400 - дата. Действуете по аналогии.

Лучше бы это делать согласованно тут, обсуждая с другими пользователями. Можно сделать тему "Допмакеты". Иначе пойдет разносортица. Один 36 отведет под экотопы, другой под санатории, а третий под экотопы возьмет 37-й и т.д. и т.п.
Учитывать индивидуальные решения при последующих разработках мы не сможем. И помочь перекодировать тоже, если добавленный Вами персонально макет будет использован нами в дальнейшем для других целей.
Мне кажется лучше использовать пользовательские поля. Они и проще в использовании, так как сидят в разделе 1х1 базы.

20

Добрый день, уважаемые разработчики. Пытаемся окрасить карту по дополнительному макету 21 по 1 столбцу (Типы ландшафта). Следовали поэтапно в соответствии с видеоуроком по составлению тематических карт. Составили таблицу преобразования цветов.  При добавлении цвета в 1 столбце ("значение") задали значения цветов: 11, 12, 21, 22, 31, 32, 33 (такие коды в 1 столбце 21 макета). Далее, составили выражение для выбора типов ландшафта:

SELECT(@1.4.MAKET,(@1.4.MAKET = 21) and (@1.4.1.PARAMETR = '11') or (@1.4.1.PARAMETR = '12') or (@1.4.1.PARAMETR = '21') or (@1.4.1.PARAMETR = '22') or (@1.4.1.PARAMETR = '31') or (@1.4.1.PARAMETR = '32') or (@1.4.1.PARAMETR = '33'))

Проверили выражение. Все верно. Далее, нажали ок. Проверили еще раз, чтобы таблица преобразования цветов была наша. В итоге программа окрасила неверно: практически все окрасилось цветом 21 кода, некоторые выделы все-таки окрасились в свой цвет, но таких 2-3.
На каком этапе возникла ошибка?

21

OlyaEco написал(а):

На каком этапе возникла ошибка?

Вы же запрашиваете по условию номер макета: SELECT(@1.4.MAKET, ... , то есть если условие в функции выполняется, то получите 21, номер макета. А хотите Вы, как я понял, первый параметр этого макета для всех выделов:
   SELECT(@1.4.1.PARAMETR ,(@1.4.MAKET = 21 and @1.4.1.PARAMID = 1))
- выражение я не проверял, но думаю, что не ошибся.

22

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

SELECT(@1.4.1.PARAMETR ,(@1.4.MAKET = 21 and @1.4.1.PARAMID = 1))

Попробовали подставить данное выражение. http://sd.uploads.ru/t/9PU2D.jpg

Выбрали таблицу преобразования цветов http://s9.uploads.ru/t/WfZUb.jpg

В итоге, программа ничего не окрасила.

23

Ну, во-первых, я на Вашем выражении вижу @1.4.1.PARAMID = 11, а 11-го параметра там нет, их обычно не более 8.

А вообще Вам совет, который я тут уже неоднократно писал: если Вы подготовили выражение ToPas, сначала используйте его для вывода метки, Вы должны увидеть на выделах правильные цифры. Только после этого стройте легенды и всё остальное.

24

Дмитрий Александрович, все получилось. Как Вы и посоветовали, проверили отображение меток, программа все правильно выбрала. В самом начале неправильно поставили вопрос. Нам необходимо было выбрать по кодировкам определенные типы ландшафта. Составили выражение
SELECT (@1.4.1.PARAMETR, (@1.4.1.PARAMETR = '11')) и программа выбрала все выделы по кодировке "11" (закрытые горизонтально сомкнутые) и окрасила по тем цветам, которые мы задали. Вроде решили проблему. Спасибо!

25

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

Конечно можно, нужно просто сформулировать правильные условия в макросе с учетом номера мероприятия:

((@1.3.MERNOM = 1) AND (@1.3.MERKL = 1211) AND (@1.3.MERNOM = 2) AND (@1.3.MERKL = 3211))
- в таком виде работать не будет, так как строка применяется к мероприятию, а не к выделу; мероприятие не может быть одновременно разных кодов.

Вот такой макрос возвратит уникальный код для каждого из сочетаний 1-го и 2-го мероприятий:

Valuemacro  SelectMer;
{  Поучение информации о мероприятиях для полигонов - выделов.
Вер. 1.0   © Старостенко Д.А., 2017 год }

var
ResultValue : string;
Kod1M, Kod2M : list of longint;

begin
  Kod1M := SELECT(@1.3.MERKL,@1.3.MERNOM = 1);
  Kod2M := SELECT(@1.3.MERKL,@1.3.MERNOM = 2);
  ResultValue := (Kod1M[1] + Kod2M[1]):C;
end.

Примечание: макрос ToPas без указания пути TopoL ищет в каталоге _WorkingDirectory.\, то есть, например, в D:\LesIS

Отредактировано Дмитрий Александрович (13.12.2017 12:14:32)

Что то не получилось закрасить таким способом.

26

Не пойму почему.

27

ResultValue := (Kod1M[1] + Kod2M[1]):C;

В этом выражении что обозначает "С"?

28

http://ipic.su/img/img7/fs/kiss_69kb.1537433791.jpg

29

Это значит в легенде надо прописывать в строчку два значения? Я правильно понимаю? Например сплошная руб- 1200 и лесные культуры- 3200 в значении легенды писать 12003200?

30

сделайте отображение меток на полигонах как CALCVALUE('SelectMer.tps') и посмотрите что он будет там выдавать
по идее, сначала выполнится сумма, потом :C
1200+3200 = 4400
4400:C = '4400'

31

Ничего не выдает вообще! Выдел прописывает и на этом все!

Отредактировано EVK (20.09.2018 14:25:37)

32

При проверке выражения пишет:http://s7.uploads.ru/t/FnQqt.jpg

33

Срочно нужна помощь по окраске - данным макросом.

34

EVK написал(а):

Срочно нужна помощь по окраске - данным макросом.

Раньше чем на связи появится Дмитрий Александрович мы переключиться и Вам помочь не сможем, а он сейчас где то в дороге из отпуска. См. тут подробнее.

35

Все получилось

36

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

Конечно можно, нужно просто сформулировать правильные условия в макросе с учетом номера мероприятия:

((@1.3.MERNOM = 1) AND (@1.3.MERKL = 1211) AND (@1.3.MERNOM = 2) AND (@1.3.MERKL = 3211))
- в таком виде работать не будет, так как строка применяется к мероприятию, а не к выделу; мероприятие не может быть одновременно разных кодов.

Вот такой макрос возвратит уникальный код для каждого из сочетаний 1-го и 2-го мероприятий:

Valuemacro  SelectMer;
{  Поучение информации о мероприятиях для полигонов - выделов.
Вер. 1.0   © Старостенко Д.А., 2017 год }

var
ResultValue : string;
Kod1M, Kod2M : list of longint;

begin
  Kod1M := SELECT(@1.3.MERKL,@1.3.MERNOM = 1);
  Kod2M := SELECT(@1.3.MERKL,@1.3.MERNOM = 2);
  ResultValue := (Kod1M[1] + Kod2M[1]):C;
end.

Примечание: макрос ToPas без указания пути TopoL ищет в каталоге _WorkingDirectory.\, то есть, например, в D:\LesIS

Отредактировано Дмитрий Александрович (13.12.2017 09:14:32)

Не получается покрасить, от куда он должен брать цвета? это нужно прописывать ниже выражения как в плане лесонасаждений для каждой породы, только в нашем случае для каждого мероприятия?

37

LaptevaV написал(а):

Не получается покрасить, от куда он должен брать цвета?

Макрос формирует некоторые коды, выведите их в качестве метки и посмотрите, устраивают ли они Вас, возможно, надо вместо (Kod1M[1] + Kod2M[1]) использовать какое-то другое вычисление, это зависит от значений, которые записаны в коды. Нужно, чтобы каждое сочетание давало уникальный код.

А на следующем шаге Вы делаете легенду окраски, где кодам, возвращаемым макросом, ставите в соответствие либо цвет, либо символ. Вот тогда Вы получите окраску, которую сами хотели бы получить.


Вы здесь » ФОРУМ ТЕХПОДДЕРЖКИ ГИС TOPOL-L » КАРТОГРАФИЯ, ВЕКТОРНАЯ И РАСТРОВАЯ » Тематические карты по двум показателям



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